]> granicus.if.org Git - clang/log
clang
5 years ago[clang-format] Fix bug in reflow of block comments containing CR/LF
Owen Pan [Tue, 23 Apr 2019 20:29:46 +0000 (20:29 +0000)]
[clang-format] Fix bug in reflow of block comments containing CR/LF

Fix PR36119

Differential Revision: https://reviews.llvm.org/D60996

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359029 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM
Teresa Johnson [Tue, 23 Apr 2019 18:56:19 +0000 (18:56 +0000)]
[ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM

Summary:
The opt level was not being passed down to the ThinLTO backend when
invoked via clang (for distributed ThinLTO).

This exposed an issue where the new PM was asserting if the Thin or
regular LTO backend pipelines were invoked with -O0 (not a new issue,
could be provoked by invoking in-process *LTO backends via linker using
new PM and -O0). Fix this similar to the old PM where -O0 only does the
necessary lowering of type metadata (WPD and LowerTypeTest passes) and
then quits, rather than asserting.

Reviewers: xur

Subscribers: mehdi_amini, inglorion, eraman, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits, pcc

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D61022

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359025 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[APSInt][OpenMP] Fix isNegative, etc. for unsigned types
Joel E. Denny [Tue, 23 Apr 2019 17:04:15 +0000 (17:04 +0000)]
[APSInt][OpenMP] Fix isNegative, etc. for unsigned types

Without this patch, APSInt inherits APInt::isNegative, which merely
checks the sign bit without regard to whether the type is actually
signed.  isNonNegative and isStrictlyPositive call isNegative and so
are also affected.

This patch adjusts APSInt to override isNegative, isNonNegative, and
isStrictlyPositive with implementations that consider whether the type
is signed.

A large set of Clang OpenMP tests are affected.  Without this patch,
these tests assume that `true` is not a valid argument for clauses
like `collapse`.  Indeed, `true` fails APInt::isStrictlyPositive but
not APSInt::isStrictlyPositive.  This patch adjusts those tests to
assume `true` should be accepted.

This patch also adds tests revealing various other similar fixes due
to APSInt::isNegative calls in Clang's ExprConstant.cpp and
SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object
size based on `alloc_size`, `<<` and `>>` shift count validation, and
OpenMP array section validation.

Reviewed By: lebedev.ri, ABataev, hfinkel

Differential Revision: https://reviews.llvm.org/D59712

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359012 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMS ABI: Support mangling op<=> now that MSVC 2019 has a mangling
Nico Weber [Tue, 23 Apr 2019 16:37:42 +0000 (16:37 +0000)]
MS ABI: Support mangling op<=> now that MSVC 2019 has a mangling

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359009 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix "-Wimplicit-fallthrough" warning. NFCI.
Simon Pilgrim [Tue, 23 Apr 2019 11:45:28 +0000 (11:45 +0000)]
Fix "-Wimplicit-fallthrough" warning. NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358973 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Analyzer] Second fix for last commit for IteratorChecker
Adam Balogh [Tue, 23 Apr 2019 11:18:50 +0000 (11:18 +0000)]
[Analyzer] Second fix for last commit for IteratorChecker

A variable was redeclared instead of assigned in an internal
block, leaving the original uninitialized. This is fixed now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358971 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][CrossTU] Extend CTU to VarDecls with initializer
Rafael Stahl [Tue, 23 Apr 2019 11:04:41 +0000 (11:04 +0000)]
[analyzer][CrossTU] Extend CTU to VarDecls with initializer

Summary:
The existing CTU mechanism imports `FunctionDecl`s where the definition is available in another TU. This patch extends that to VarDecls, to bind more constants.

- Add VarDecl importing functionality to CrossTranslationUnitContext
- Import Decls while traversing them in AnalysisConsumer
- Add VarDecls to CTU external mappings generator
- Name changes from "external function map" to "external definition map"

Reviewers: NoQ, dcoughlin, xazax.hun, george.karpenkov, martong

Reviewed By: xazax.hun

Subscribers: Charusso, baloghadamsoftware, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, george.karpenkov, mgorny, whisperity, szepet, rnkovacs, a.sidorin, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D46421

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358968 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Analyzer] Fix for previous commit
Adam Balogh [Tue, 23 Apr 2019 07:45:10 +0000 (07:45 +0000)]
[Analyzer] Fix for previous commit

A compilation warning was in my previous commit which broke the buildbot
because it is using `-Werror` for compilation. This patch fixes this
issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358955 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] Fix test with -fno-discard-value-names after rC358949
Fangrui Song [Tue, 23 Apr 2019 07:39:23 +0000 (07:39 +0000)]
[PowerPC] Fix test with -fno-discard-value-names after rC358949

For the clang driver, -DLLVM_ENABLE_ASSERTIONS=off builds default to discard value names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358953 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Analyzer] Instead of recording comparisons in interator checkers do an eager state...
Adam Balogh [Tue, 23 Apr 2019 07:15:55 +0000 (07:15 +0000)]
[Analyzer] Instead of recording comparisons in interator checkers do an eager state split

Currently iterator checkers record comparison of iterator positions
and process them for keeping track the distance between them (e.g.
whether a position is the same as the end position). However this
makes some processing unnecessarily complex and it is not needed at
all: we only need to keep track between the abstract symbols stored
in these iterator positions. This patch changes this and opens the
path to comparisons to the begin() and end() symbols between the
container (e.g. size, emptiness) which are stored as symbols, not
iterator positions. The functionality of the checker is unchanged.

Differential Revision: https://reviews.llvm.org/D53701

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358951 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] [Clang] Port MMX intrinsics and basic test cases to Power
Qiu Chaofan [Tue, 23 Apr 2019 05:50:24 +0000 (05:50 +0000)]
[PowerPC] [Clang] Port MMX intrinsics and basic test cases to Power

Port mmintrin.h which include x86 MMX intrinsics implementation to PowerPC platform (using Altivec).

To make the include process correct, PowerPC's toolchain class is overrided to insert new headers directory (named ppc_wrappers) into the path. Basic test cases for several intrinsic functions are added.

The header is mainly developed by Steven Munroe, with contributions from Paul Clarke, Bill Schmidt, Jinsong Ji and Zixuan Wu.

Reviewed By: Jinsong Ji

Differential Revision: https://reviews.llvm.org/D59924

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358949 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] Unbreak body farms in presence of multiple declarations.
Artem Dergachev [Tue, 23 Apr 2019 02:56:00 +0000 (02:56 +0000)]
[analyzer] Unbreak body farms in presence of multiple declarations.

When growing a body on a body farm, it's essential to use the same redeclaration
of the function that's going to be used during analysis. Otherwise our
ParmVarDecls won't match the ones that are used to identify argument regions.

This boils down to trusting the reasoning in AnalysisDeclContext. We shouldn't
canonicalize the declaration before farming the body because it makes us not
obey the sophisticated decision-making process of AnalysisDeclContext.

Differential Revision: https://reviews.llvm.org/D60899

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358946 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] PR41335: Fix crash when no-store event is in a body-farmed function.
Artem Dergachev [Tue, 23 Apr 2019 02:50:38 +0000 (02:50 +0000)]
[analyzer] PR41335: Fix crash when no-store event is in a body-farmed function.

Stuffing invalid source locations (such as those in functions produced by
body farms) into path diagnostics causes crashes.

Fix a typo in a nearby function name.

Differential Revision: https://reviews.llvm.org/D60808

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358945 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] PR41269: Add a bit of C++ smart pointer modeling.
Artem Dergachev [Tue, 23 Apr 2019 02:45:42 +0000 (02:45 +0000)]
[analyzer] PR41269: Add a bit of C++ smart pointer modeling.

Implement cplusplus.SmartPtrModeling, a new checker that doesn't
emit any warnings but models methods of smart pointers more precisely.

For now the only thing it does is make `(bool) P` return false when `P`
is a freshly moved pointer. This addresses a false positive in the
use-after-move-checker.

Differential Revision: https://reviews.llvm.org/D60796

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358944 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CMake] Replace the sanitizer support in runtimes build with multilib
Petr Hosek [Mon, 22 Apr 2019 23:31:39 +0000 (23:31 +0000)]
[CMake] Replace the sanitizer support in runtimes build with multilib

This is a more generic solution; while the sanitizer support can be used
only for sanitizer instrumented builds, the multilib support can be used
to build other variants such as noexcept which is what we would like to use
in Fuchsia.

The name CMake target name uses the target name, same as for the regular
runtimes build and the name of the multilib, concatenated with '+'. The
libraries are installed in a subdirectory named after the multilib.

Differential Revision: https://reviews.llvm.org/D60926

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358935 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[c++2a] Implement semantic restrictions for 'export' declarations.
Richard Smith [Mon, 22 Apr 2019 22:50:11 +0000 (22:50 +0000)]
[c++2a] Implement semantic restrictions for 'export' declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358932 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[VerifyDiagnosticConsumer] Document -verify=<prefixes> in doxygen
Joel E. Denny [Mon, 22 Apr 2019 20:25:06 +0000 (20:25 +0000)]
[VerifyDiagnosticConsumer] Document -verify=<prefixes> in doxygen

Previously, it was only documented by `-cc1 -help`, so people weren't
aware of it, as discussed in D60732.

Reviewed By: Charusso, NoQ

Differential Revision: https://reviews.llvm.org/D60845

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358917 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ASTMatchers] Introduce Objective-C matchers `isClassMessage`, `isClassMethod`, and...
Ben Hamilton [Mon, 22 Apr 2019 17:54:11 +0000 (17:54 +0000)]
[ASTMatchers] Introduce Objective-C matchers `isClassMessage`, `isClassMethod`, and `isInstanceMethod`

Summary:
isClassMessage is an equivalent to isInstanceMessage for ObjCMessageExpr, but matches message expressions to classes.

isClassMethod and isInstanceMethod check whether a method declaration (or definition) is for a class method or instance method (respectively).

Contributed by @mywman!

Reviewers: benhamilton, klimek, mwyman

Reviewed By: benhamilton, mwyman

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60920

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358904 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[sema][objc] Minor refactor to OverrideSearch. NFCI.
Matt Davis [Mon, 22 Apr 2019 16:04:44 +0000 (16:04 +0000)]
[sema][objc] Minor refactor to OverrideSearch. NFCI.

Summary:
* Removed a member that was only used during construction.
* Use range-based for iteration when accessing the result of the search.
* Require an `ObjCMethodDecl` reference upon construction of an
* Constify.

Reviewers: rjmccall

Reviewed By: rjmccall

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D60850

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358898 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema] ADL: Associated namespaces for class types and enumeration types (CWG 1691)
Bruno Ricci [Mon, 22 Apr 2019 12:19:00 +0000 (12:19 +0000)]
[Sema] ADL: Associated namespaces for class types and enumeration types (CWG 1691)

CWG 1691 changed the definition of the namespaces associated with a class
type or enumeration type.

For a class type, the associated namespaces are the innermost enclosing
namespaces of the associated classes. For an enumeration type, the associated
namespace is the innermost enclosing namespace of its declaration.

This also fixes CWG 1690 and CWG 1692.

Differential Revision: https://reviews.llvm.org/D60573

Reviewed By: rjmccall, rsmith

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358882 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema][NFC] Add more tests for the behavior of argument-dependent name lookup
Bruno Ricci [Mon, 22 Apr 2019 11:40:31 +0000 (11:40 +0000)]
[Sema][NFC] Add more tests for the behavior of argument-dependent name lookup

The goal here is to exercise each rule in [basic.lookup.argdep] at least once.
These new tests expose what I believe are 2 issues:

1. CWG 1691 needs to be implemented (p2:  [...] Its associated namespaces are
   the innermost enclosing namespaces of its associated classes [...]) The
   corresponding tests are adl_class_type::X2 and adl_class_type::X5.

2. The end of paragraph 2 ([...] Additionally, if the aforementioned set of
   overloaded functions is named with a template-id, its associated classes
   and namespaces also include those of its type template-arguments and its
   template template-arguments.) is not implemented. Closely related, the
   restriction on non-dependent parameter types in this same paragraph needs
   to be removed. The corresponding tests are in adl_overload_set (both issues
   are from CWG 997).

Differential Revision: https://reviews.llvm.org/D60570

Reviewed By: riccibruno, Quuxplusone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358881 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][www] Moving MoveChecker out of alpha is no longer an open project.
Kristof Umann [Mon, 22 Apr 2019 09:20:23 +0000 (09:20 +0000)]
[analyzer][www] Moving MoveChecker out of alpha is no longer an open project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358877 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAttempt to fix LLVM_ENABLE_THREADS=OFF build after r358665
Nico Weber [Sun, 21 Apr 2019 19:18:41 +0000 (19:18 +0000)]
Attempt to fix LLVM_ENABLE_THREADS=OFF build after r358665

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358858 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema][MSVC] Fix bogus microsoft-pure-definition warning on member function of class...
Bruno Ricci [Sun, 21 Apr 2019 13:12:10 +0000 (13:12 +0000)]
[Sema][MSVC] Fix bogus microsoft-pure-definition warning on member function of class template

Clang emits a warning when using a pure specifier =0 in a function definition
at class scope (a MS-specific construct), when using -fms-extensions.
However, to detect this, it was using FD->isCanonicalDecl() on function
declaration, which was also detecting out-of-class definition of member
functions of class templates. Fix this by using !FD->isOutOfLine() instead.

Fixes PR21334.

Differential Revision: https://reviews.llvm.org/D29707

Reviewed By: riccibruno

Reviewers: rnk, riccibruno

Patch By: Rudy Pons

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358849 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] Move UninitializedObjectChecker out of alpha
Kristof Umann [Fri, 19 Apr 2019 23:33:50 +0000 (23:33 +0000)]
[analyzer] Move UninitializedObjectChecker out of alpha

Moved UninitializedObjectChecker from the 'alpha.cplusplus' to the
'optin.cplusplus' package.

Differential Revision: https://reviews.llvm.org/D58573

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358797 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoModules: Adopt template parameters for variable templates to set their decl context...
David Blaikie [Fri, 19 Apr 2019 23:04:05 +0000 (23:04 +0000)]
Modules: Adopt template parameters for variable templates to set their decl context correctly

Exposed by a related bug about visibility of default arguments of nested
templates - without the correct decl context, default template
parameters of variable templates nested in classes would have incorrect
visibility computed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358796 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoModules: Search for a visible definition of the decl context when computing visibilit...
David Blaikie [Fri, 19 Apr 2019 23:02:30 +0000 (23:02 +0000)]
Modules: Search for a visible definition of the decl context when computing visibility of a default template parameter

The code is/was already correct for the case where a parameter is a
parameter of its enclosing lexical DeclContext (functions and classes).
But for other templates (alias and variable templates) they don't create
their own scope to be members of - in those cases, they parameter should
be considered visible if any definition of the lexical decl context is
visible.

[this should cleanup the failure on the libstdc++ modules buildbot]
[this doesn't actually fix the variable template case for a
secondary/compounding reason (its lexical decl context is incorrectly
considered to be the translation unit)]

Test covers all 4 kinds of templates with default args, including a
regression test for the still broken variable template case.

Reviewers: rsmith

Differential Revision: https://reviews.llvm.org/D60892

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358795 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MS] Emit S_HEAPALLOCSITE debug info
Amy Huang [Fri, 19 Apr 2019 21:09:11 +0000 (21:09 +0000)]
[MS] Emit S_HEAPALLOCSITE debug info

Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.

Reviewers: hans, rnk

Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D60800

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358783 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoReapply "[analyzer] Introduce a simplified API for adding custom path notes."
Artem Dergachev [Fri, 19 Apr 2019 20:23:29 +0000 (20:23 +0000)]
Reapply "[analyzer] Introduce a simplified API for adding custom path notes."

This reapplies commit r357323, fixing memory leak found by LSan.

Differential Revision: https://reviews.llvm.org/D58367

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358781 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MSVC] If unable to find link.exe from a MSVC installation, look for link.exe next...
Martin Storsjo [Fri, 19 Apr 2019 19:04:22 +0000 (19:04 +0000)]
[MSVC] If unable to find link.exe from a MSVC installation, look for link.exe next to cl.exe

Previously, if the MSVC installation isn't detected properly, clang
will later just fail to execute link.exe.

This improves using clang in msvc mode on linux, where one intentionally
might not want to point clang to the MSVC installation itself (which
isn't executable as such), but where a link.exe named wine wrapper is
available in the path next to a cl.exe named wine wrapper.

Differential Revision: https://reviews.llvm.org/D60094

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358778 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoEnable frame pointer elimination for OpenBSD on powerpc.
Brad Smith [Fri, 19 Apr 2019 18:41:40 +0000 (18:41 +0000)]
Enable frame pointer elimination for OpenBSD on powerpc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358775 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OPENMP][NVPTX] target [teams distribute] simd maybe run without
Alexey Bataev [Fri, 19 Apr 2019 16:48:38 +0000 (16:48 +0000)]
[OPENMP][NVPTX] target [teams distribute] simd maybe run without
runtime.

target [teams distribute] simd costructs do not require full runtime for
the correct execution, we can run them without full runtime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358766 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoUpdate to use PipelineTuningOptions. Corresponds to llvm change: D59723.
Alina Sbirlea [Fri, 19 Apr 2019 16:32:08 +0000 (16:32 +0000)]
Update to use PipelineTuningOptions. Corresponds to llvm change: D59723.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358765 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoDebian: Add two missing version code in sid
Sylvestre Ledru [Fri, 19 Apr 2019 13:48:52 +0000 (13:48 +0000)]
Debian: Add two missing version code in sid

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358758 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd support of the future Debian (Debian 11 - Bullseye)
Sylvestre Ledru [Fri, 19 Apr 2019 13:46:58 +0000 (13:46 +0000)]
Add support of the future Debian (Debian 11 - Bullseye)
https://wiki.debian.org/DebianBullseye

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358757 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd support of the next Ubuntu (Ubuntu 19.10 - Eoan EANIMAL)
Sylvestre Ledru [Fri, 19 Apr 2019 13:43:28 +0000 (13:43 +0000)]
Add support of the next Ubuntu (Ubuntu 19.10 - Eoan EANIMAL)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358756 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LTO] Add plumbing to save stats during LTO on Darwin.
Florian Hahn [Fri, 19 Apr 2019 12:36:41 +0000 (12:36 +0000)]
[LTO] Add plumbing to save stats during LTO on Darwin.

Gold and ld on Linux already support saving stats, but the
infrastructure is missing on Darwin. Unfortunately it seems like the
configuration from lib/LTO/LTO.cpp is not used.

This patch adds a new LTOStatsFile option and adds plumbing in Clang to
use it on Darwin, similar to the way remarks are handled.

Currnetly the handling of LTO flags seems quite spread out, with a bunch
of duplication. But I am not sure if there is an easy way to improve
that?

Reviewers: anemet, tejohnson, thegameg, steven_wu

Reviewed By: steven_wu

Differential Revision: https://reviews.llvm.org/D60516

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358753 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][NFC] Reimplement checker options
Kristof Umann [Fri, 19 Apr 2019 12:32:10 +0000 (12:32 +0000)]
[analyzer][NFC] Reimplement checker options

TL;DR:

* Add checker and package options to the TableGen files
* Added a new class called CmdLineOption, and both Package and Checker recieved
   a list<CmdLineOption> field.
* Added every existing checker and package option to Checkers.td.
* The CheckerRegistry class
  * Received some comments to most of it's inline classes
  * Received the CmdLineOption and PackageInfo inline classes, a list of
     CmdLineOption was added to CheckerInfo and PackageInfo
  * Added addCheckerOption and addPackageOption
  * Added a new field called Packages, used in addPackageOptions, filled up in
     addPackage

Detailed description:

In the last couple months, a lot of effort was put into tightening the
analyzer's command line interface. The main issue is that it's spectacularly
easy to mess up a lenghty enough invocation of the analyzer, and the user was
given no warnings or errors at all in that case.

We can divide the effort of resolving this into several chapters:

* Non-checker analyzer configurations:
    Gather every analyzer configuration into a dedicated file. Emit errors for
    non-existent configurations or incorrect values. Be able to list these
    configurations. Tighten AnalyzerOptions interface to disallow making such
    a mistake in the future.

* Fix the "Checker Naming Bug" by reimplementing checker dependencies:
    When cplusplus.InnerPointer was enabled, it implicitly registered
    unix.Malloc, which implicitly registered some sort of a modeling checker
    from the CStringChecker family. This resulted in all of these checker
    objects recieving the name "cplusplus.InnerPointer", making AnalyzerOptions
    asking for the wrong checker options from the command line:
      cplusplus.InnerPointer:Optimisic
    istead of
      unix.Malloc:Optimistic.
    This was resolved by making CheckerRegistry responsible for checker
    dependency handling, instead of checkers themselves.

* Checker options: (this patch included!)
    Same as the first item, but for checkers.

(+ minor fixes here and there, and everything else that is yet to come)

There were several issues regarding checker options, that non-checker
configurations didn't suffer from: checker plugins are loaded runtime, and they
could add new checkers and new options, meaning that unlike for non-checker
configurations, we can't collect every checker option purely by generating code.
Also, as seen from the "Checker Naming Bug" issue raised above, they are very
rarely used in practice, and all sorts of skeletons fell out of the closet while
working on this project.

They were extremely problematic for users as well, purely because of how long
they were. Consider the following monster of a checker option:

  alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=false

While we were able to verify whether the checker itself (the part before the
colon) existed, any errors past that point were unreported, easily resulting
in 7+ hours of analyses going to waste.

This patch, similarly to how dependencies were reimplemented, uses TableGen to
register checker options into Checkers.td, so that Checkers.inc now contains
entries for both checker and package options. Using the preprocessor,
Checkers.inc is converted into code in CheckerRegistry, adding every builtin
(checkers and packages that have an entry in the Checkers.td file) checker and
package option to the registry. The new addPackageOption and addCheckerOption
functions expose the same functionality to statically-linked non-builtin and
plugin checkers and packages as well.

Emitting errors for incorrect user input, being able to list these options, and
some other functionalies will land in later patches.

Differential Revision: https://reviews.llvm.org/D57855

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358752 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] Fix an assertion failure if plugins added dependencies
Kristof Umann [Fri, 19 Apr 2019 11:01:35 +0000 (11:01 +0000)]
[analyzer] Fix an assertion failure if plugins added dependencies

Ideally, there is no reason behind not being able to depend on checkers that
come from a different plugin (or on builtin checkers) -- however, this is only
possible if all checkers are added to the registry before resolving checker
dependencies. Since I used a binary search in my addDependency method, this also
resulted in an assertion failure (due to CheckerRegistry::Checkers not being
sorted), since the function used by plugins to register their checkers
(clang_registerCheckers) calls addDependency.

This patch resolves this issue by only noting which dependencies have to
established when addDependency is called, and resolves them at a later stage
when no more checkers are added to the registry, by which point
CheckerRegistry::Checkers is already sorted.

Differential Revision: https://reviews.llvm.org/D59461

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358750 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LibTooling] Fix -Wsign-compare after r358697
Bjorn Pettersson [Fri, 19 Apr 2019 09:10:42 +0000 (09:10 +0000)]
[LibTooling] Fix -Wsign-compare after r358697

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358745 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix overly-long line after r358731.
Richard Smith [Fri, 19 Apr 2019 02:46:50 +0000 (02:46 +0000)]
Fix overly-long line after r358731.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358733 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix typo in function name [NFC]
Ali Tamur [Fri, 19 Apr 2019 02:15:57 +0000 (02:15 +0000)]
Fix typo in function name [NFC]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358731 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] Fix -Wunused-local-typedef after rC358695
Fangrui Song [Fri, 19 Apr 2019 01:54:36 +0000 (01:54 +0000)]
[analyzer] Fix -Wunused-local-typedef after rC358695

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358729 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd header guard to Reusables.h [NFC]
Ali Tamur [Fri, 19 Apr 2019 00:42:54 +0000 (00:42 +0000)]
Add header guard to Reusables.h [NFC]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358724 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] Make default bindings to variables actually work.
Artem Dergachev [Thu, 18 Apr 2019 23:35:56 +0000 (23:35 +0000)]
[analyzer] Make default bindings to variables actually work.

Default RegionStore bindings represent values that can be obtained by loading
from anywhere within the region, not just the specific offset within the region
that they are said to be bound to. For example, default-binding a character \0
to an int (eg., via memset()) means that the whole int is 0, not just
that its lower byte is 0.

Even though memset and bzero were modeled this way, it didn't work correctly
when applied to simple variables. Eg., in

  int x;
  memset(x, 0, sizeof(x));

we did produce a default binding, but were unable to read it later, and 'x'
was perceived as an uninitialized variable even after memset.

At the same time, if we replace 'x' with a variable of a structure or array
type, accessing fields or elements of such variable was working correctly,
which was enough for most cases. So this was only a problem for variables of
simple integer/enumeration/floating-point/pointer types.

Fix loading default bindings from RegionStore for regions of simple variables.

Add a unit test to document the API contract as well.

Differential Revision: https://reviews.llvm.org/D60742

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358722 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] NFC: Make reusable unittest mocks reusable.
Artem Dergachev [Thu, 18 Apr 2019 23:24:50 +0000 (23:24 +0000)]
[analyzer] NFC: Make reusable unittest mocks reusable.

Put them in a header for other Analyzer unittests to include.

Differential Revision: https://reviews.llvm.org/D60739

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358720 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] NFC: MoveChecker: Refactor tests to use -verify=prefix.
Artem Dergachev [Thu, 18 Apr 2019 23:17:58 +0000 (23:17 +0000)]
[analyzer] NFC: MoveChecker: Refactor tests to use -verify=prefix.

This -verify=prefix feature is quite underrated.

Differential Revision: https://reviews.llvm.org/D60732

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358719 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[c++2a] Add semantic support for private module fragments.
Richard Smith [Thu, 18 Apr 2019 21:12:54 +0000 (21:12 +0000)]
[c++2a] Add semantic support for private module fragments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358713 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OpenMP][NFC] Fix requires target test.
Gheorghe-Teodor Bercea [Thu, 18 Apr 2019 20:34:43 +0000 (20:34 +0000)]
[OpenMP][NFC] Fix requires target test.

Summary:
Fix requires target test.

Reviewers: ABataev

Subscribers: guansong, jdoerfert, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60886

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358711 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-format] Fix incorrect formatting of keyword macro definition
Owen Pan [Thu, 18 Apr 2019 20:17:08 +0000 (20:17 +0000)]
[clang-format] Fix incorrect formatting of keyword macro definition

See PR39719

Differential Revision: https://reviews.llvm.org/D60853

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358710 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OpenMP] Add checks for requires and target directives.
Gheorghe-Teodor Bercea [Thu, 18 Apr 2019 19:53:43 +0000 (19:53 +0000)]
[OpenMP] Add checks for requires and target directives.

Summary: The requires directive containing target related clauses must appear before any target region in the compilation unit.

Reviewers: ABataev, AlexEichenberger, caomhin

Reviewed By: ABataev

Subscribers: guansong, jfb, jdoerfert, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60875

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358709 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LibTooling] Fix build breakage from commit 7b7ce6683ee.
Yitzhak Mandelbaum [Thu, 18 Apr 2019 19:19:01 +0000 (19:19 +0000)]
[LibTooling] Fix build breakage from commit 7b7ce6683ee.

On configurations with -Werror,-Wmissing-field-initializers, the commit does not compile. This commit fixes the offending line.

Original Differential Revision: https://reviews.llvm.org/D60408

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358705 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LibTooling] Extend Transformer to support multiple simultaneous changes.
Yitzhak Mandelbaum [Thu, 18 Apr 2019 17:52:24 +0000 (17:52 +0000)]
[LibTooling] Extend Transformer to support multiple simultaneous changes.

Summary: This revision allows users to specify independent changes to multiple (related) sections of the input.  Previously, only a single section of input could be selected for replacement.

Reviewers: ilya-biryukov

Reviewed By: ilya-biryukov

Subscribers: jfb, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60408

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358697 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CodeComplete] Remove obsolete isOutputBinary().
Sam McCall [Thu, 18 Apr 2019 17:35:55 +0000 (17:35 +0000)]
[CodeComplete] Remove obsolete isOutputBinary().

Summary:
It's never set to true. Its only effect would be to set stdout to binary mode.
Hopefully we have better ways of doing this by now :-)

Reviewers: hokein

Subscribers: jkorous, arphaman, kadircet, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60871

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358696 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][NFC] Prefer binary searches in CheckerRegistry
Kristof Umann [Thu, 18 Apr 2019 17:34:45 +0000 (17:34 +0000)]
[analyzer][NFC] Prefer binary searches in CheckerRegistry

Differential Revision: https://reviews.llvm.org/D59459

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358695 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][NFC] Clang-format CheckerRegistry
Kristof Umann [Thu, 18 Apr 2019 17:32:51 +0000 (17:32 +0000)]
[analyzer][NFC] Clang-format CheckerRegistry

Differential Revision: https://reviews.llvm.org/D59458

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358694 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LibTooling] Add Stencil library for format-string style codegen.
Yitzhak Mandelbaum [Thu, 18 Apr 2019 17:23:01 +0000 (17:23 +0000)]
[LibTooling] Add Stencil library for format-string style codegen.

Summary:
This file defines the *Stencil* abstraction: a code-generating object, parameterized by named references to (bound) AST nodes.  Given a match result, a stencil can be evaluated to a string of source code.

A stencil is similar in spirit to a format string: it is composed of a series of raw text strings, references to nodes (the parameters) and helper code-generation operations.

See thread on cfe-dev list with subject "[RFC] Easier source-to-source transformations with clang tooling" for background.

Reviewers: sbenza

Reviewed By: sbenza

Subscribers: ilya-biryukov, mgorny, jfb, jdoerfert, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D59371

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358691 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-format] Fix indent of trailing raw string param after newline
Krasimir Georgiev [Thu, 18 Apr 2019 17:14:05 +0000 (17:14 +0000)]
[clang-format] Fix indent of trailing raw string param after newline

Summary:
Currently clang-format uses ContinuationIndent to indent the contents of a raw
string literal that is the last parameter of the function call. This is to
achieve formatting similar to trailing:
```
f(1, 2, R"pb(
    x: y)pb");
```
However this had the unfortunate consequence of producing format like this:
```
fffffff(1, 2,
        R"pb(
    a: b
        )pb");
```

This patch makes clang-format consider indenting a trailing raw string param
after a newline based off the start of the format delimiter, producing:
```
fffffff(1, 2,
        R"pb(
          a: b
        )pb");
```

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60558

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358689 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema][NFC] Mark DR1563 as done (List-initialization and overloaded function disambig...
Bruno Ricci [Thu, 18 Apr 2019 15:45:08 +0000 (15:45 +0000)]
[Sema][NFC] Mark DR1563 as done (List-initialization and overloaded function disambiguation)

It has been supported since at least clang 3.1 so just mark it as done.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358679 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema][NFC] Mark DR705 (Suppressing argument-dependent lookup via parentheses) as...
Bruno Ricci [Thu, 18 Apr 2019 15:34:03 +0000 (15:34 +0000)]
[Sema][NFC] Mark DR705 (Suppressing argument-dependent lookup via parentheses) as done

It was supported since at least clang 3 so just mark it as done.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358678 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer][NFC] Use capital variable names, move methods out-of-line, rename some...
Kristof Umann [Thu, 18 Apr 2019 15:19:16 +0000 (15:19 +0000)]
[analyzer][NFC] Use capital variable names, move methods out-of-line, rename some in CheckerRegistry

There are barely any lines I haven't changed in these files, so I think I could
might as well leave it in an LLVM coding style conforming state. I also renamed
2 functions and moved addDependency out of line to ease on followup patches.

Differential Revision: https://reviews.llvm.org/D59457

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358676 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Serialization] Stable serialization order for OpenCLTypeExtMap and OpenCLDeclExtMap
Bruno Ricci [Thu, 18 Apr 2019 15:13:27 +0000 (15:13 +0000)]
[Serialization] Stable serialization order for OpenCLTypeExtMap and OpenCLDeclExtMap

Sort the elements of Sema::OpenCLTypeExtMap and Sema::OpenCLDeclExtMap
by TypeIDs and DeclIDs to guarantee a stable serialization order.

Differential Revision: https://reviews.llvm.org/D60835

Reviewed By: Anastasia

Reviewers: Anastasia, lebedev.ri

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358674 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-tidy] Address post-commit comments
Haojian Wu [Thu, 18 Apr 2019 14:18:14 +0000 (14:18 +0000)]
[clang-tidy] Address post-commit comments

Summary:
Also add a test to verify clang-tidy only apply the first alternative
fix.

Reviewers: alexfh

Subscribers: xazax.hun, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60857

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358666 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang][CIndex] Use llvm::set_thread_priority
Kadir Cetinkaya [Thu, 18 Apr 2019 13:49:20 +0000 (13:49 +0000)]
[clang][CIndex] Use llvm::set_thread_priority

Reviewers: jkorous, gribozavr

Subscribers: dexonsmith, arphaman, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60867

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358665 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MSVC] Use the correct casing of HostX64/HostX86
Martin Storsjo [Thu, 18 Apr 2019 13:27:31 +0000 (13:27 +0000)]
[MSVC] Use the correct casing of HostX64/HostX86

If accessing the MSVC installation root directly on a case sensitive
filesystem, these details matter.

Differential Revision: https://reviews.llvm.org/D60627

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358662 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema] Delete unused parameters/variables
Fangrui Song [Thu, 18 Apr 2019 12:35:02 +0000 (12:35 +0000)]
[Sema] Delete unused parameters/variables

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358661 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CUDA][Windows] Restrict long double device functions declarations to Windows
Evgeny Mankov [Thu, 18 Apr 2019 10:08:55 +0000 (10:08 +0000)]
[CUDA][Windows] Restrict long double device functions declarations to Windows

As agreed in D60220, make long double declarations unobservable on non-windows platforms.

[Testing]
{Windows 10, Ubuntu 16.04.5}/{Visual C++ 2017 15.9.11 & 2019 16.0.1, gcc+ 5.4.0}/CUDA {8.0, 9.0, 9.1, 9.2, 10.0, 10.1}

Reviewed by: Artem Belevich

Differential Revision: https://reviews.llvm.org/D60818

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358654 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoSplit out modules-specific declaration handling from SemaDecl.cpp into a
Richard Smith [Thu, 18 Apr 2019 00:57:02 +0000 (00:57 +0000)]
Split out modules-specific declaration handling from SemaDecl.cpp into a
new SemaModule.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358633 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd '#pragma clang __debug module_map module.name' to dump the module
Richard Smith [Thu, 18 Apr 2019 00:57:01 +0000 (00:57 +0000)]
Add '#pragma clang __debug module_map module.name' to dump the module
map being used for the module 'module.name'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358632 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[c++2a] Improve diagnostic for use of declaration from another TU's
Richard Smith [Thu, 18 Apr 2019 00:56:58 +0000 (00:56 +0000)]
[c++2a] Improve diagnostic for use of declaration from another TU's
global module fragment.

We know that the declaration in question should have been introduced by
a '#include', so try to figure out which one and suggest it. Don't
suggest importing the global module fragment itself!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358631 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-format] Remove unused Environment constructor.
Alexander Kornienko [Thu, 18 Apr 2019 00:36:51 +0000 (00:36 +0000)]
[clang-format] Remove unused Environment constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358630 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMove the implementation of getInnermostBlockDecl to the .cpp file to fix
Akira Hatanaka [Thu, 18 Apr 2019 00:00:16 +0000 (00:00 +0000)]
Move the implementation of getInnermostBlockDecl to the .cpp file to fix
failing bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358627 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix test on PS4 which defaults to gnu99 which does not emit the expected warnings.
Douglas Yung [Thu, 18 Apr 2019 00:00:06 +0000 (00:00 +0000)]
Fix test on PS4 which defaults to gnu99 which does not emit the expected warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358626 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sema][ObjC] Don't warn about an implicitly retained self if the
Akira Hatanaka [Wed, 17 Apr 2019 23:14:44 +0000 (23:14 +0000)]
[Sema][ObjC] Don't warn about an implicitly retained self if the
retaining block and all of the enclosing blocks are non-escaping.

If the block implicitly retaining self doesn't escape, there is no risk
of creating retain cycles, so clang shouldn't diagnose it and force
users to add self-> to silence the diagnostic.

Also, fix a bug where clang was failing to diagnose an implicitly
retained self inside a c++ lambda nested inside a block.

rdar://problem/25059955

Differential Revision: https://reviews.llvm.org/D60736

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358624 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[analyzer] PR41185: Fix regression where __builtin_* functions weren't recognized
Kristof Umann [Wed, 17 Apr 2019 19:56:40 +0000 (19:56 +0000)]
[analyzer] PR41185: Fix regression where __builtin_* functions weren't recognized

For the following code snippet:

void builtin_function_call_crash_fixes(char *c) {
  __builtin_strncpy(c, "", 6);
  __builtin_memset(c, '\0', (0));
  __builtin_memcpy(c, c, 0);
}
security.insecureAPI.DeprecatedOrUnsafeBufferHandling caused a regression, as it
didn't recognize functions starting with __builtin_. Fixed exactly that.

I wanted to modify an existing test file, but the two I found didn't seem like
perfect candidates. While I was there, I prettified their RUN: lines.

Differential Revision: https://reviews.llvm.org/D59812

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358609 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.
Alexey Bataev [Wed, 17 Apr 2019 16:53:08 +0000 (16:53 +0000)]
[OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.

All target-parallel-based constructs can be run in SPMD mode from now
on. Even if num_threads clauses or if clauses are used, such constructs
can be executed in SPMD mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358595 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRemove --show-includes flag in crash reduce script
Amy Huang [Wed, 17 Apr 2019 16:20:56 +0000 (16:20 +0000)]
Remove --show-includes flag in crash reduce script

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358590 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoExplicitly say we don't define new/delete in libc++ during Apple stage1 bootstrap
Louis Dionne [Wed, 17 Apr 2019 14:58:59 +0000 (14:58 +0000)]
Explicitly say we don't define new/delete in libc++ during Apple stage1 bootstrap

This is not necessary in stage2 because we don't even build libc++.dylib
there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358582 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-tidy] Add fix descriptions to clang-tidy checks.
Haojian Wu [Wed, 17 Apr 2019 12:53:59 +0000 (12:53 +0000)]
[clang-tidy] Add fix descriptions to clang-tidy checks.

Summary:
Motivation/Context: in the code review system integrating with clang-tidy,
clang-tidy doesn't provide a human-readable description of the fix. Usually
developers have to preview a code diff (before vs after apply the fix) to
understand what the fix does before applying a fix.

This patch proposes that each clang-tidy check provides a short and
actional fix description that can be shown in the UI, so that users can know
what the fix does without previewing diff.

This patch extends clang-tidy framework to support fix descriptions (will add implementations for
existing checks in the future). Fix descriptions and fixes are emitted via diagnostic::Note (rather than
attaching the main warning diagnostic).

Before this patch:

```
void MyCheck::check(...) {
   ...
   diag(loc, "my check warning") <<  FixtItHint::CreateReplacement(...);
}
```

After:

```
void MyCheck::check(...) {
   ...
   diag(loc, "my check warning"); // Emit a check warning
   diag(loc, "fix description", DiagnosticIDs::Note) << FixtItHint::CreateReplacement(...); // Emit a diagnostic note and a fix
}
```

Reviewers: sammccall, alexfh

Reviewed By: alexfh

Subscribers: MyDeveloperDay, Eugene.Zelenko, aaron.ballman, JonasToth, xazax.hun, jdoerfert, cfe-commits

Tags: #clang-tools-extra, #clang

Differential Revision: https://reviews.llvm.org/D59932

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358576 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoclang-cl: Parse /openmp:experimental
Hans Wennborg [Wed, 17 Apr 2019 10:05:58 +0000 (10:05 +0000)]
clang-cl: Parse /openmp:experimental

It was added to the MS docs recently here:
https://github.com/MicrosoftDocs/cpp-docs/commit/3951085ab722fbb488ca40864f4a0553f7b71855

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358570 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[libclang] Expose ext_vector_type
Sven van Haastregt [Wed, 17 Apr 2019 09:08:50 +0000 (09:08 +0000)]
[libclang] Expose ext_vector_type

Differential Revision: https://reviews.llvm.org/D60775

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358566 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Driver] Simplify -g level computation and its interaction with -gsplit-dwarf
Fangrui Song [Wed, 17 Apr 2019 01:46:27 +0000 (01:46 +0000)]
[Driver] Simplify -g level computation and its interaction with -gsplit-dwarf

Summary:
When -gsplit-dwarf is used together with other -g options, in most cases
the computed debug info level is decided by the last -g option, with one
special case (see below). This patch drops that special case and thus
makes it easy to reason about:

// If a lower debug level -g comes after -gsplit-dwarf, in some cases
// -gsplit-dwarf is cancelled.
-gsplit-dwarf -g0 => 0
-gsplit-dwarf -gline-directives-only => DebugDirectivesOnly
-gsplit-dwarf -gmlt -fsplit-dwarf-inlining => 1
-gsplit-dwarf -gmlt -fno-split-dwarf-inlining => 1 + split

// If -gsplit-dwarf comes after -g options, with this patch, the net
// effect is 2 + split for all combinations
-g0 -gsplit-dwarf => 2 + split
-gline-directives-only -gsplit-dwarf => 2 + split
-gmlt -gsplit-dwarf -fsplit-dwarf-inlining => 2 + split
-gmlt -gsplit-dwarf -fno-split-dwarf-inlining => 1 + split (before) 2 + split (after)

The last case has been changed. In general, if the user intends to lower
debug info level, place that -g option after -gsplit-dwarf.

Some context:

In gcc, the last of -gsplit-dwarf -g0 -g1 -g2 -g3 -ggdb[0-3] -gdwarf-*
... decides the debug info level (-gsplit-dwarf -gdwarf-* have level 2).
It is a bit unfortunate that -gsplit-dwarf -gdwarf-* ... participate in
the level computation but that is the status quo.

Reviewers: dblaikie, echristo, probinson

Reviewed By: dblaikie, probinson

Subscribers: probinson, aprantl, jdoerfert, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D59923

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358544 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Remove unused function (Sema::pushExternalDeclIntoScope)
Leonard Chan [Tue, 16 Apr 2019 22:59:39 +0000 (22:59 +0000)]
[NFC] Remove unused function (Sema::pushExternalDeclIntoScope)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358538 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoModify test to use -S instead of -c so that it works when an external assembler is...
Douglas Yung [Tue, 16 Apr 2019 22:52:05 +0000 (22:52 +0000)]
Modify test to use -S instead of -c so that it works when an external assembler is used that is not present.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358537 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[FileSystemStatCache] Update test for new FileSystemStatCache API
Harlan Haskins [Tue, 16 Apr 2019 18:00:43 +0000 (18:00 +0000)]
[FileSystemStatCache] Update test for new FileSystemStatCache API

Summary: Update this test to return std::error_code instead of LookupResult.

Reviewers: arphaman

Subscribers: dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60786

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358511 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[FileSystemStatCache] Return std::error_code from stat cache methods
Harlan Haskins [Tue, 16 Apr 2019 17:34:26 +0000 (17:34 +0000)]
[FileSystemStatCache] Return std::error_code from stat cache methods

Summary:
Previously, we would return true/false signifying if the cache/lookup
succeeded or failed. Instead, provide clients with the underlying error
that was thrown while attempting to look up in the cache.

Since clang::FileManager doesn't make use of this information, it discards the
error that's received and casts away to bool.

This change is NFC.

Reviewers: benlangmuir, arphaman

Subscribers: dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D60735

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358509 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Test] Remove obsolete test.
Michael Kruse [Tue, 16 Apr 2019 16:44:45 +0000 (16:44 +0000)]
[Test] Remove obsolete test.

The FIXME of this test case has been addressed in r335084/r338800. Its
execution still does not succeed because of multiple syntax errors.

First, the "clang" namespace is missing on each of the 4 pragmas.
Second, the pragma for defining the vector width is "vectorize_width(4)"
instead of "vectorize(4)". Third, the pragma for defining the interleave
factor is "interleave_count(8)" instead of "interleave(8)".

The file was already using the wrong syntax when added in
r210925 2014-06-13. The file ast-print-pragmas.cpp already checks for
the correct pragma order, making this test redundant even if fixed.

Differential Revision: https://reviews.llvm.org/D60749

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358507 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.
Alexey Bataev [Tue, 16 Apr 2019 15:39:12 +0000 (15:39 +0000)]
[OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.

Combined constructs with parallel and if clauses without modifiers may
be executed in SPMD mode since if the condition is true for the target
region, it is also true for parallel region and the threads must be run
in parallel.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358503 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OPENMP]Require aarch arch for the tests, NFC.
Alexey Bataev [Tue, 16 Apr 2019 14:26:10 +0000 (14:26 +0000)]
[OPENMP]Require aarch arch for the tests, NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358493 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Implement Vector Funtion ABI name mangling.
Alexey Bataev [Tue, 16 Apr 2019 13:56:21 +0000 (13:56 +0000)]
[AArch64] Implement Vector Funtion ABI name mangling.

Summary:
The name mangling scheme is defined in section 3.5 of the "Vector function application binary interface specification for AArch64" [1].

[1] https://developer.arm.com/products/software-development-tools/hpc/arm-compiler-for-hpc/vector-function-abi

Reviewers: rengolin, ABataev

Reviewed By: ABataev

Subscribers: sdesmalen, javed.absar, kristof.beyls, jdoerfert, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60583

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358490 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRe-commit r357452: SimplifyCFG SinkCommonCodeFromPredecessors: Also sink function...
Hans Wennborg [Tue, 16 Apr 2019 12:13:25 +0000 (12:13 +0000)]
Re-commit r357452: SimplifyCFG SinkCommonCodeFromPredecessors: Also sink function calls without used results (PR41259)

The original commit caused false positives from AddressSanitizer's
use-after-scope checks, which have now been fixed in r358478.

> The code was previously checking that candidates for sinking had exactly
> one use or were a store instruction (which can't have uses). This meant
> we could sink call instructions only if they had a use.
>
> That limitation seemed a bit arbitrary, so this patch changes it to
> "instruction has zero or one use" which seems more natural and removes
> the need to special-case stores.
>
> Differential revision: https://reviews.llvm.org/D59936

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358483 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoTweak test to pass when using a non-integrated assembler.
Richard Smith [Tue, 16 Apr 2019 01:44:53 +0000 (01:44 +0000)]
Tweak test to pass when using a non-integrated assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358470 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoPR41192: fix cases where "missing ';' after class" error would
Richard Smith [Tue, 16 Apr 2019 00:47:45 +0000 (00:47 +0000)]
PR41192: fix cases where "missing ';' after class" error would
incorrectly fire.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358467 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoDebugInfo: Default to standalone debug when tuning for LLDB
David Blaikie [Tue, 16 Apr 2019 00:16:29 +0000 (00:16 +0000)]
DebugInfo: Default to standalone debug when tuning for LLDB

LLDB can't currently handle Clang's default (limit/no-standalone) DWARF,
so platforms that default to LLDB (Darwin) or anyone else manually
requesting LLDB tuning, should also get standalone DWARF.

That doesn't mean a user can't explicitly enable (because they have
other reasons to prefer standalone DWARF (such as that they're only
building half their application with debug info enabled, and half
without - or because they're tuning for GDB, but want to be able to use
it under LLDB too (this is the default on FreeBSD))) or disable (testing
LLDB fixes/improvements that handle no-standalone mode, building C code,
perhaps, which wouldn't have the LLDB<>no-standalone conflict, etc) the
feature regardless of the tuning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358464 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoSimplify diagnosis of misplaced attributes in module-declarations.
Richard Smith [Mon, 15 Apr 2019 23:55:58 +0000 (23:55 +0000)]
Simplify diagnosis of misplaced attributes in module-declarations.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358463 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoTime profiler: small fixes and optimizations
Anton Afanasyev [Mon, 15 Apr 2019 21:02:47 +0000 (21:02 +0000)]
Time profiler: small fixes and optimizations

Summary: Fixes from Roman's review here: https://reviews.llvm.org/D58675#1465336

Reviewers: lebedev.ri

Subscribers: hiraditya, mgrang, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D60663

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358448 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[OPENMP][NVPTX]Run parallel regions with num_threads clauses in SPMD
Alexey Bataev [Mon, 15 Apr 2019 20:38:10 +0000 (20:38 +0000)]
[OPENMP][NVPTX]Run parallel regions with num_threads clauses in SPMD
mode.

After the previous patch with the more correct handling of the number of
threads in parallel regions, the parallel regions with num_threads
clauses can be executed in SPMD mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358445 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang-format] Fix -Wconversion-null warning in GCC
Reuben Thomas [Mon, 15 Apr 2019 20:13:20 +0000 (20:13 +0000)]
[clang-format] Fix -Wconversion-null warning in GCC

GCC -Wconversion-null warning appeared after 9a63380260860b657b72f07c4f0e61e382ab934a.
There was a similar problem already in the past:
http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20131230/096230.html

Patch committed on behalf of @dendibakh

Differential Revision: https://reviews.llvm.org/D60726

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358441 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[clang] Aligned allocation is actually supported in macosx 10.13"
Louis Dionne [Mon, 15 Apr 2019 19:08:52 +0000 (19:08 +0000)]
Revert "[clang] Aligned allocation is actually supported in macosx 10.13"

This reverts r358409, which I think broke the bots in compiler-rt.
Since I'm having trouble reproducing the failure, I'm reverting this
until I can investigate locally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358437 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Improve avx512-kconstraints-att_inline_asm.c to not be easily defeated by deadc...
Craig Topper [Mon, 15 Apr 2019 18:39:36 +0000 (18:39 +0000)]
[X86] Improve avx512-kconstraints-att_inline_asm.c to not be easily defeated by deadcode elimination. Improve CHECK lines to check IR types used. NFC

I plan to use this as the basis for backend IR test cases. We currently crash hard for using 32 or 64 bit mask registers without avx512bw.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@358435 91177308-0d34-0410-b5e6-96231b3b80d8