]> granicus.if.org Git - clang/log
clang
5 years ago[clang] Fill RealPathName for virtual files.
Kadir Cetinkaya [Fri, 30 Nov 2018 17:10:11 +0000 (17:10 +0000)]
[clang] Fill RealPathName for virtual files.

Summary:
Absolute path information for virtual files were missing even if we
have already stat'd the files. This patch puts that information for virtual
files that can succesffully be stat'd.

Reviewers: ilya-biryukov

Subscribers: cfe-commits

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

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

5 years agoAdding tests for -ast-dump; NFC.
Aaron Ballman [Fri, 30 Nov 2018 15:11:16 +0000 (15:11 +0000)]
Adding tests for -ast-dump; NFC.

This adds tests for DeclStmt and demonstrates that we don't create such an AST node for global declarations currently.

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

5 years agoAdding tests for -ast-dump; NFC.
Aaron Ballman [Fri, 30 Nov 2018 14:43:21 +0000 (14:43 +0000)]
Adding tests for -ast-dump; NFC.

This adds tests for the majority of the functionality around FunctionDecl and CXXMethodDecl.

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

5 years agoFix warning about unused variable [NFC]
Mikael Holmen [Fri, 30 Nov 2018 13:38:33 +0000 (13:38 +0000)]
Fix warning about unused variable [NFC]

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

5 years agolyzer] [HOTFIX!] SValBuilder crash when `aggressive-binary-operation-simplification...
Adam Balogh [Fri, 30 Nov 2018 10:37:44 +0000 (10:37 +0000)]
lyzer] [HOTFIX!] SValBuilder crash when `aggressive-binary-operation-simplification` enabled

During the review of D41938 a condition check with an early exit accidentally
slipped into a branch, leaving the other branch unprotected. This may result in
an assertion later on. This hotfix moves this contition check outside of the
branch.

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

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

5 years agoFix a use-after-scope bug.
Haojian Wu [Fri, 30 Nov 2018 09:23:01 +0000 (09:23 +0000)]
Fix a use-after-scope bug.

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

5 years agoRevert r344580 "[analyzer] Nullability: Don't detect post factum violation..."
Artem Dergachev [Fri, 30 Nov 2018 04:26:17 +0000 (04:26 +0000)]
Revert r344580 "[analyzer] Nullability: Don't detect post factum violation..."

Fails under ASan!

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

5 years ago[analyzer] MallocChecker: Avoid redundant transitions.
Artem Dergachev [Fri, 30 Nov 2018 03:52:42 +0000 (03:52 +0000)]
[analyzer] MallocChecker: Avoid redundant transitions.

Don't generate a checker-tagged node unconditionally on the first
checkDeadSymbols callback when no pointers are tracked.

This is a tiny performance optimization; it may change the behavior slightly
by making Static Analyzer bail out on max-nodes one node later (which is good)
but any test would either break for no good reason or become useless
every time someone sneezes.

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

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

5 years ago[analyzer] Nullability: Don't detect post factum violation on concrete values.
Artem Dergachev [Fri, 30 Nov 2018 03:39:58 +0000 (03:39 +0000)]
[analyzer] Nullability: Don't detect post factum violation on concrete values.

The checker suppresses warnings on paths on which a nonnull value is assumed
to be nullable. This probably deserves a warning, but it's a separate story.

Now, because dead symbol collection fires in pretty random moments,
there sometimes was a situation when dead symbol collection fired after
computing a parameter but before actually evaluating call enter into the
function, which triggered the suppression when the argument was null
in the first place earlier than the obvious warning for null-to-nonnull
was emitted, causing false negatives.

Only trigger the suppression for symbols, not for concrete values.

It is impossible to constrain a concrete value post-factum because
it is impossible to constrain a concrete value at all.

This covers all the necessary cases because by the time we reach the call,
symbolic values should be either not constrained to null, or already collapsed
into concrete null values. Which in turn happens because they are passed through
the Store, and the respective collapse is implemented as part of getSVal(),
which is also weird.

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

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

5 years ago[analyzer] Fix the "Zombie Symbols" bug.
Artem Dergachev [Fri, 30 Nov 2018 03:27:50 +0000 (03:27 +0000)]
[analyzer] Fix the "Zombie Symbols" bug.

It's an old bug that consists in stale references to symbols remaining in the
GDM if they disappear from other program state sections as a result of any
operation that isn't the actual dead symbol collection. The most common example
here is:

   FILE *fp = fopen("myfile.txt", "w");
   fp = 0; // leak of file descriptor

In this example the leak were not detected previously because the symbol
disappears from the public part of the program state due to evaluating
the assignment. For that reason the checker never receives a notification
that the symbol is dead, and never reports a leak.

This patch not only causes leak false negatives, but also a number of other
problems, including false positives on some checkers.

What's worse, even though the program state contains a finite number of symbols,
the set of symbols that dies is potentially infinite. This means that is
impossible to compute the set of all dead symbols to pass off to the checkers
for cleaning up their part of the GDM.

No longer compute the dead set at all. Disallow iterating over dead symbols.
Disallow querying if any symbols are dead. Remove the API for marking symbols
as dead, as it is no longer necessary. Update checkers accordingly.

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

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

5 years ago[analyzer] Fixes after rebase.
George Karpenkov [Fri, 30 Nov 2018 02:19:29 +0000 (02:19 +0000)]
[analyzer] Fixes after rebase.

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

5 years ago[analyzer] RetainCountChecker for OSObject model the "free" call
George Karpenkov [Fri, 30 Nov 2018 02:19:16 +0000 (02:19 +0000)]
[analyzer] RetainCountChecker for OSObject model the "free" call

The "free" call frees the object immediately, ignoring the reference count.
Sadly, it is actually used in a few places, so we need to model it.

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

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

5 years ago[analyzer] RetainCountChecker: recognize that OSObject can be created directly using...
George Karpenkov [Fri, 30 Nov 2018 02:19:03 +0000 (02:19 +0000)]
[analyzer] RetainCountChecker: recognize that OSObject can be created directly using an operator "new"

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

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

5 years ago[analyzer] Switch retain count checker for OSObject to use OS_* attributes
George Karpenkov [Fri, 30 Nov 2018 02:18:50 +0000 (02:18 +0000)]
[analyzer] Switch retain count checker for OSObject to use OS_* attributes

Instead of generalized reference counting annotations.

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

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

5 years ago[attributes] Add a family of OS_CONSUMED, OS_RETURNS and OS_RETURNS_RETAINED attributes
George Karpenkov [Fri, 30 Nov 2018 02:18:37 +0000 (02:18 +0000)]
[attributes] Add a family of OS_CONSUMED, OS_RETURNS and OS_RETURNS_RETAINED attributes

The addition adds three attributes for communicating ownership,
analogous to existing NS_ and CF_ attributes.
The attributes are meant to be used for communicating ownership of all
objects in XNU (Darwin kernel) and all of the kernel modules.
The ownership model there is very similar, but still different from the
Foundation model, so we think that introducing a new family of
attributes is appropriate.

The addition required a sizeable refactoring of the existing code for
CF_ and NS_ ownership attributes, due to tight coupling and the fact
that differentiating between the types was previously done using a
boolean.

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

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

5 years ago[analyzer] [NFC] Minor refactoring of RetainCountDiagnostics
George Karpenkov [Fri, 30 Nov 2018 02:18:23 +0000 (02:18 +0000)]
[analyzer] [NFC] Minor refactoring of RetainCountDiagnostics

Move visitors to the implementation file, move a complicated logic into
a function.

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

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

5 years ago[analyzer] For OSObject, trust that functions starting with Get
George Karpenkov [Fri, 30 Nov 2018 02:18:10 +0000 (02:18 +0000)]
[analyzer] For OSObject, trust that functions starting with Get

(uppercase) are also getters.

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

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

5 years ago[analyzer] Print a fully qualified name for functions in RetainCountChecker diagnostics
George Karpenkov [Fri, 30 Nov 2018 02:17:57 +0000 (02:17 +0000)]
[analyzer] Print a fully qualified name for functions in RetainCountChecker diagnostics

Attempt to get a fully qualified name from AST if an SVal corresponding
to the object is not available.

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

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

5 years ago[analyzer] Add the type of the leaked object to the diagnostic message
George Karpenkov [Fri, 30 Nov 2018 02:17:44 +0000 (02:17 +0000)]
[analyzer] Add the type of the leaked object to the diagnostic message

If the object is a temporary, and there is no variable it binds to,
let's at least print out the object name in order to help differentiate
it from other temporaries.

rdar://45175098

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

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

5 years ago[analyzer] Reference leaked object by name, even if it was created in an inlined...
George Karpenkov [Fri, 30 Nov 2018 02:17:31 +0000 (02:17 +0000)]
[analyzer] Reference leaked object by name, even if it was created in an inlined function.

rdar://45532181

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

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

5 years ago[analyzer] [NFC] Test dumping trimmed graph
George Karpenkov [Fri, 30 Nov 2018 02:17:18 +0000 (02:17 +0000)]
[analyzer] [NFC] Test dumping trimmed graph

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

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

5 years ago[analyzer] [NFC] Some miscellaneous clean ups and documentation fixes.
George Karpenkov [Fri, 30 Nov 2018 02:17:05 +0000 (02:17 +0000)]
[analyzer] [NFC] Some miscellaneous clean ups and documentation fixes.

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

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

5 years ago[-gmodules] Honor -fdebug-prefix-map in the debug info inside PCMs.
Adrian Prantl [Thu, 29 Nov 2018 22:33:09 +0000 (22:33 +0000)]
[-gmodules] Honor -fdebug-prefix-map in the debug info inside PCMs.

This patch passes -fdebug-prefix-map (a feature for renaming source
paths in the debug info) through to the per-module codegen options and
adds the debug prefix map to the module hash.

<rdar://problem/46045865>

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

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

5 years ago[OPENMP][NVPTX]Call get __kmpc_global_thread_num in worker after
Alexey Bataev [Thu, 29 Nov 2018 21:21:32 +0000 (21:21 +0000)]
[OPENMP][NVPTX]Call get __kmpc_global_thread_num in worker after
initialization.

Function __kmpc_global_thread_num  should be called only after
initialization, not earlier.

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

5 years ago[OpenMP] Add a new version of the SPMD deinit kernel function
Gheorghe-Teodor Bercea [Thu, 29 Nov 2018 20:53:49 +0000 (20:53 +0000)]
[OpenMP] Add a new version of the SPMD deinit kernel function

Summary: This patch adds a new runtime for the SPMD deinit kernel function which replaces the previous function. The new function takes as argument the flag which signals whether the runtime is required or not. This enables the compiler to optimize out the part of the deinit function which are not needed.

Reviewers: ABataev, caomhin

Reviewed By: ABataev

Subscribers: jholewinski, guansong, cfe-commits

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

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

5 years agoRevert "NFC: Fix case of CommentVisitor::Visit methods"
Stephen Kelly [Thu, 29 Nov 2018 19:50:10 +0000 (19:50 +0000)]
Revert "NFC: Fix case of CommentVisitor::Visit methods"

This reverts commit 0859c80137ac5fb3c86e7802cb8c5ef56f921cce.

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

5 years agoNFC: Fix case of CommentVisitor::Visit methods
Stephen Kelly [Thu, 29 Nov 2018 19:31:32 +0000 (19:31 +0000)]
NFC: Fix case of CommentVisitor::Visit methods

This difference is very visible because it is used with other Visitor
classes together.

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

5 years agoNFC: Move ColorScope to global scope
Stephen Kelly [Thu, 29 Nov 2018 19:30:37 +0000 (19:30 +0000)]
NFC: Move ColorScope to global scope

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

5 years agoNFC: Constify ShowColors
Stephen Kelly [Thu, 29 Nov 2018 19:30:08 +0000 (19:30 +0000)]
NFC: Constify ShowColors

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

5 years agoset default max-page-size to 4KB in lld for Android Aarch64
Zhizhou Yang [Thu, 29 Nov 2018 18:52:22 +0000 (18:52 +0000)]
set default max-page-size to 4KB in lld for Android Aarch64

Summary:
This patch passes an option '-z max-page-size=4096' to lld through clang driver.

This is for Android on Aarch64 target.

The lld default page size is too large for Aarch64, which produces larger .so files and images for arm64 device targets.
In this patch we set default page size to 4KB for Android Aarch64 targets instead.

Reviewers: srhines, danalbert, ruiu, chh, peter.smith

Reviewed By: srhines

Subscribers: javed.absar, kristof.beyls, cfe-commits, george.burgess.iv, llozano

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

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

5 years agoSimplify the __builtin_constant_p test that was used to catch rC347417 failure
Fangrui Song [Thu, 29 Nov 2018 18:26:39 +0000 (18:26 +0000)]
Simplify the __builtin_constant_p test that was used to catch rC347417 failure

Reviewers: rsmith, void, shafik

Reviewed By: void

Subscribers: kristina, cfe-commits

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

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

5 years agoAdd missing REQUIRES to new test
Teresa Johnson [Thu, 29 Nov 2018 18:02:31 +0000 (18:02 +0000)]
Add missing REQUIRES to new test

Test added in r347887 requires an x86 target.

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

5 years ago[analyzer][PlistMacroExpansion] Part 4.: Support for __VA_ARGS__
Kristof Umann [Thu, 29 Nov 2018 17:09:41 +0000 (17:09 +0000)]
[analyzer][PlistMacroExpansion] Part 4.: Support for __VA_ARGS__

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

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

5 years ago[ThinLTO] Allow importing of multiple symbols with same GUID
Teresa Johnson [Thu, 29 Nov 2018 17:02:59 +0000 (17:02 +0000)]
[ThinLTO] Allow importing of multiple symbols with same GUID

Summary:
The is the clang side of the fix in D55047, to handle the case where
two different modules have local variables with the same GUID because
they had the same source file name at compilation time. Allow multiple
symbols with the same GUID to be imported, and test that this case works
with the distributed backend path.

Depends on D55047.

Reviewers: evgeny777

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, cfe-commits

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

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

5 years agoMark __builtin_shufflevector as using custom type checking
Matt Arsenault [Thu, 29 Nov 2018 15:45:05 +0000 (15:45 +0000)]
Mark __builtin_shufflevector as using custom type checking

The custom handling seems to all be implemented already.
This avoids regressions in a future patch when float vectors
are ordinarily promoted to double vectors in variadic calls.

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

5 years agoinhereit LLVM_ENABLE_LIBXML2
David Callahan [Thu, 29 Nov 2018 14:57:14 +0000 (14:57 +0000)]
inhereit LLVM_ENABLE_LIBXML2

Summary: When building in an LLVM context, we should respect its LLVM_ENABLE_LIBXML2 option.

Reviewers: vitalybuka, mspertus, modocache

Reviewed By: modocache

Subscribers: mgorny, cfe-commits

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

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

5 years ago[OpenCL] Improve diags for addr spaces in templates
Anastasia Stulova [Thu, 29 Nov 2018 14:11:15 +0000 (14:11 +0000)]
[OpenCL] Improve diags for addr spaces in templates

Fix ICEs on template instantiations that were leading to
the creation of invalid code patterns with address spaces.

Incorrect cases are now diagnosed properly.

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

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

5 years agoSet MustBuildLookupTable on PrimaryContext in ExternalASTMerger
Raphael Isemann [Thu, 29 Nov 2018 13:50:30 +0000 (13:50 +0000)]
Set MustBuildLookupTable on PrimaryContext in ExternalASTMerger

Summary:
`MustBuildLookupTable` must always be called on a primary context as we otherwise
trigger an assert, but we don't ensure that this will always happen in our code right now.

This patch explicitly requests the primary context when doing this call as this shouldn't break
anything (as calling `getPrimaryContext` on a context which is its own primary context is a no-op)
but will catch these rare cases where we somehow operate on a declaration context that is
not its own primary context.

See also D54863.

Reviewers: martong, a.sidorin, shafik

Reviewed By: martong

Subscribers: davide, rnkovacs, cfe-commits

Tags: #lldb

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

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

5 years agoAdd Hurd target to Clang driver (2/2)
Kristina Brooks [Thu, 29 Nov 2018 03:49:14 +0000 (03:49 +0000)]
Add Hurd target to Clang driver (2/2)

This adds Hurd toolchain support to Clang's driver in addition
to handling translating the triple from Hurd-compatible form to
the actual triple registered in LLVM.

(Phabricator was stripping the empty files from the patch so I
manually created them)

Patch by sthibaul (Samuel Thibault)

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

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

5 years agoAllow cpu-dispatch forward declarations.
Erich Keane [Wed, 28 Nov 2018 21:54:04 +0000 (21:54 +0000)]
Allow cpu-dispatch forward declarations.

As a followup to r347805, allow forward declarations of cpu-dispatch and
cpu-specific for the same reasons.

Change-Id: Ic1bde9be369b1f8f1d47d58e6fbdc2f9dfcdd785

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

5 years agoEnsure sanitizer check function calls have a !dbg location
Adrian Prantl [Wed, 28 Nov 2018 21:44:06 +0000 (21:44 +0000)]
Ensure sanitizer check function calls have a !dbg location

Function calls without a !dbg location inside a function that has a
DISubprogram make it impossible to construct inline information and
are rejected by the verifier. This patch ensures that sanitizer check
function calls have a !dbg location, by carrying forward the location
of the preceding instruction or by inserting an artificial location if
necessary.

This fixes a crash when compiling the attached testcase with -Os.

rdar://problem/45311226

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

Note: This reapllies r344915, modified to reuse the IRBuilder's
DebugLoc if one exists instead of picking the one from CGDebugInfo
since the latter may get reset when emitting thunks such as block
helpers in the middle of emitting another function.

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

5 years ago[DebugInfo] NFC Clang test changes for: IR/Bitcode changes for DISubprogram flags.
Paul Robinson [Wed, 28 Nov 2018 21:18:07 +0000 (21:18 +0000)]
[DebugInfo] NFC Clang test changes for: IR/Bitcode changes for DISubprogram flags.

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

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

5 years agoCorrect 'target' default behavior on redecl, allow forward declaration.
Erich Keane [Wed, 28 Nov 2018 20:58:43 +0000 (20:58 +0000)]
Correct 'target' default behavior on redecl, allow forward declaration.

Declarations without the attribute were disallowed because it would be
ambiguous which 'target' it was supposed to be on.  For example:

void ___attribute__((target("v1"))) foo();
void foo(); // Redecl of above, or fwd decl of below?
void ___attribute__((target("v2"))) foo();

However, a first declaration doesn't have that problem, and erroring
prevents it from working in cases where the forward declaration is
useful.

Additionally, a forward declaration of target==default wouldn't properly
cause multiversioning, so this patch fixes that.

The patch was not split since the 'default' fix would require
implementing the same check for that case, followed by undoing the same
change for the fwd-decl implementation.

Change-Id: I66f2c5bc2477bcd3f7544b9c16c83ece257077b0

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

5 years ago[Coverage] Specify the Itanium ABI triple for a C++ test
Vedant Kumar [Wed, 28 Nov 2018 20:51:09 +0000 (20:51 +0000)]
[Coverage] Specify the Itanium ABI triple for a C++ test

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

5 years ago[Coverage] Do not visit artificial stmts in defaulted methods (PR39822)
Vedant Kumar [Wed, 28 Nov 2018 20:48:07 +0000 (20:48 +0000)]
[Coverage] Do not visit artificial stmts in defaulted methods (PR39822)

There is no reason to emit coverage mappings for artificial statements
contained within defaulted methods, as these statements are not visible
to users.

Only emit a mapping for the body of the defaulted method (clang treats
the text of the "default" keyword as the body when reporting locations).
This allows users to see how often the default method is called, but
trims down the coverage mapping by skipping visitation of the children
of the method.

The immediate motivation for this change is that the lexer's
getPreciseTokenLocEnd API cannot return the correct location when given
an artificial statement (with a somewhat made-up location) as an input.

Test by Orivej Desh!

Fixes llvm.org/PR39822.

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

5 years agoRevert "[ASTImporter] Changed use of Import to Import_New in ASTImporter."
Davide Italiano [Wed, 28 Nov 2018 19:15:23 +0000 (19:15 +0000)]
Revert "[ASTImporter] Changed use of Import to Import_New in ASTImporter."

This broke the lldb bots.

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

5 years ago[OPENMP]Fix emission of the target regions in virtual functions.
Alexey Bataev [Wed, 28 Nov 2018 19:00:07 +0000 (19:00 +0000)]
[OPENMP]Fix emission of the target regions in virtual functions.

Fixed emission of the target regions found in the virtual functions.
Previously we may end up with the situation when those regions could be
skipped.

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

5 years ago[NFC] Move MultIversioning::Type into Decl so that it can be used in
Erich Keane [Wed, 28 Nov 2018 18:34:14 +0000 (18:34 +0000)]
[NFC] Move MultIversioning::Type into Decl so that it can be used in
CodeGen

Change-Id: I32b14edca3501277e0e65672eafe3eea38c6f9ae

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

5 years ago[analyzer] Cleanup constructors in the Z3 backend
Mikhail R. Gadelha [Wed, 28 Nov 2018 17:22:49 +0000 (17:22 +0000)]
[analyzer] Cleanup constructors in the Z3 backend

Summary: Left only the constructors that are actually required, and marked the move constructors as deleted. They are not used anymore and we were never sure they've actually worked correctly.

Reviewers: george.karpenkov, NoQ

Reviewed By: george.karpenkov

Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, Szelethus, donat.nagy, dkrupp

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

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

5 years agoRe-commit r347417 "Re-Reinstate 347294 with a fix for the failures."
Hans Wennborg [Wed, 28 Nov 2018 14:04:12 +0000 (14:04 +0000)]
Re-commit r347417 "Re-Reinstate 347294 with a fix for the failures."

This was reverted in r347656 due to me thinking it caused a miscompile of
Chromium. Turns out it was the Chromium code that was broken.

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

5 years ago[ASTImporter] Changed use of Import to Import_New in ASTImporter.
Balazs Keri [Wed, 28 Nov 2018 13:21:26 +0000 (13:21 +0000)]
[ASTImporter] Changed use of Import to Import_New in ASTImporter.

Reviewers: a.sidorin, shafik, a_sidorin

Reviewed By: a_sidorin

Subscribers: gamesh411, a_sidorin, dkrupp, martong, Szelethus, cfe-commits

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

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

5 years agoPR39809: (const void*)0 is not a null pointer constant in C.
Richard Smith [Wed, 28 Nov 2018 06:25:06 +0000 (06:25 +0000)]
PR39809: (const void*)0 is not a null pointer constant in C.

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

5 years agoPR12884: Add test (bug is already fixed).
Richard Smith [Wed, 28 Nov 2018 05:15:46 +0000 (05:15 +0000)]
PR12884: Add test (bug is already fixed).

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

5 years agoMove LoopHint.h from Sema to Parse
Richard Trieu [Wed, 28 Nov 2018 04:36:31 +0000 (04:36 +0000)]
Move LoopHint.h from Sema to Parse

struct LoopHint was only used within Parse and not in any of the Sema or
Codegen files.  In the non-Parse files where it was included, it either wasn't
used or LoopHintAttr was used, so its inclusion did nothing.

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

5 years ago[CodeGen] Fix included headers.
Richard Trieu [Wed, 28 Nov 2018 04:14:29 +0000 (04:14 +0000)]
[CodeGen] Fix included headers.

Remove the included Parse header because CodeGen should not depend on Parse.
Instead, include the Lex headers that it needs instead.

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

5 years ago[diagtool] Remove unneeded header includes.
Richard Trieu [Wed, 28 Nov 2018 03:59:35 +0000 (03:59 +0000)]
[diagtool] Remove unneeded header includes.

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

5 years ago[OPENMP] remove redundant ColonExpected flag in ParseOpenMP.cpp (NFC)
Kelvin Li [Wed, 28 Nov 2018 00:51:08 +0000 (00:51 +0000)]
[OPENMP] remove redundant ColonExpected flag in ParseOpenMP.cpp (NFC)

The flag ColonExpected is not changed after being initialized to
false at declaration.

Patch by Ahsan Saghir

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

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

5 years ago[RISCV] Mark unit tests as "requires: riscv-registered-target"
Mandeep Singh Grang [Tue, 27 Nov 2018 22:53:57 +0000 (22:53 +0000)]
[RISCV] Mark unit tests as "requires: riscv-registered-target"

Some of these tests break if the RISCV backend has not been built.

Reland D54816.

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

5 years agoFix typo in "[clang][ARC] Fix test for commit r347699"
Tatyana Krasnukha [Tue, 27 Nov 2018 22:22:33 +0000 (22:22 +0000)]
Fix typo in "[clang][ARC] Fix test for commit r347699"

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

5 years ago[OPENMP][NVPTX]Basic support for reductions across the teams.
Alexey Bataev [Tue, 27 Nov 2018 21:24:54 +0000 (21:24 +0000)]
[OPENMP][NVPTX]Basic support for reductions across the teams.

Added basic codegen support for the reductions across the teams.

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

5 years ago[MS] Push outermost class DeclContexts only in -fdelayed-template-parsing
Reid Kleckner [Tue, 27 Nov 2018 21:20:42 +0000 (21:20 +0000)]
[MS] Push outermost class DeclContexts only in -fdelayed-template-parsing

This is more or less a complete rewrite of r347627, and it fixes PR38460
I added a reduced test case to DelayedTemplateParsing.cpp.

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

5 years ago[clang][ARC] Fix test for commit r347699
Tatyana Krasnukha [Tue, 27 Nov 2018 20:56:30 +0000 (20:56 +0000)]
[clang][ARC] Fix test for commit r347699

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

5 years ago[clang][slh] add attribute for speculative load hardening
Zola Bridges [Tue, 27 Nov 2018 19:56:46 +0000 (19:56 +0000)]
[clang][slh] add attribute for speculative load hardening

Summary:
Resubmit this with no changes because I think the build was broken
by a different diff.
-----
The prior diff had to be reverted because there were two tests
that failed. I updated the two tests in this diff

clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/SemaCXX/attr-speculative-load-hardening.cpp

----- Summary from Previous Diff (Still Accurate) -----

LLVM IR already has an attribute for speculative_load_hardening. Before
this commit, when a user passed the -mspeculative-load-hardening flag to
Clang, every function would have this attribute added to it. This Clang
attribute will allow users to opt into SLH on a function by function basis.

This can be applied to functions and Objective C methods.

Reviewers: chandlerc, echristo, kristof.beyls, aaron.ballman

Subscribers: llvm-commits

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

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

5 years ago[clang][ARC] Add ARCTargetInfo
Tatyana Krasnukha [Tue, 27 Nov 2018 19:52:10 +0000 (19:52 +0000)]
[clang][ARC] Add ARCTargetInfo

Based-on-patch-by: Pete Couperus <petecoup@synopsys.com>
Differential Revision: https://reviews.llvm.org/D53100

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

5 years agoDon't speculatively emit VTTs for classes unless we are able to correctly emit refere...
Richard Smith [Tue, 27 Nov 2018 19:33:49 +0000 (19:33 +0000)]
Don't speculatively emit VTTs for classes unless we are able to correctly emit references to all the functions they will (directly or indirectly) reference.

Summary:
This fixes a miscompile where we'd emit a VTT for a class that ends up
referencing an inline virtual member function that we can't actually
emit a body for (because we never instantiated it in the current TU),
which in a corner case of a corner case can lead to link errors.

Reviewers: rjmccall

Subscribers: cfe-commits

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

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

5 years agoRevert "[RISCV] Mark unit tests as "requires: riscv-registered-target""
Mandeep Singh Grang [Tue, 27 Nov 2018 19:13:52 +0000 (19:13 +0000)]
Revert "[RISCV] Mark unit tests as "requires: riscv-registered-target""

This reverts commit 1a6a0c9ea2716378d55858c11adf5941608531f8.

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

5 years ago[RISCV] Mark unit tests as "requires: riscv-registered-target"
Mandeep Singh Grang [Tue, 27 Nov 2018 19:13:13 +0000 (19:13 +0000)]
[RISCV] Mark unit tests as "requires: riscv-registered-target"

Summary: Some of these tests break if the RISCV backend has not been built.

Reviewers: asb, apazos, sabuasal

Reviewed By: sabuasal

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, cfe-commits

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

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

5 years ago[ASTImporter] Added Import functions for transition to new API.
Balazs Keri [Tue, 27 Nov 2018 18:36:31 +0000 (18:36 +0000)]
[ASTImporter] Added Import functions for transition to new API.

Summary:
These Import_New functions should be used in the ASTImporter,
and the old Import functions should not be used. Later the
Import_New should be renamed to Import again and the old Import
functions must be removed. But this can happen only after LLDB
was updated to use the new Import interface.

This commit is only about introducing the new Import_New
functions. These are not implemented now, only calling the old
Import ones.

Reviewers: shafik, rsmith, a_sidorin, a.sidorin

Reviewed By: a_sidorin

Subscribers: spyffe, a_sidorin, gamesh411, shafik, rsmith, dkrupp, martong, Szelethus, cfe-commits

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

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

5 years ago[X86] Add -march=cascadelake support in clang.
Craig Topper [Tue, 27 Nov 2018 18:05:14 +0000 (18:05 +0000)]
[X86] Add -march=cascadelake support in clang.

This is skylake-avx512 with the addition of avx512vnni ISA.

Patch by Jianping Chen

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

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

5 years agoFix linker option for -fprofile-arcs -ftest-coverage
Marco Castelluccio [Tue, 27 Nov 2018 17:31:08 +0000 (17:31 +0000)]
Fix linker option for -fprofile-arcs -ftest-coverage

Summary:
Linux toolchain accidentally added "-u__llvm_runtime_variable" when "-fprofile-arcs -ftest-coverage", this is not added when "--coverage" option is used.
Using "-u__llvm_runtime_variable" generates an empty default.profraw file while an application built with  "-fprofile-arcs -ftest-coverage" is running.

Reviewers: calixte, marco-c, sylvestre.ledru

Reviewed By: marco-c

Subscribers: vsk, cfe-commits

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

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

5 years agoRevert "[clang] - Simplify tools::SplitDebugName."
Jonas Toth [Tue, 27 Nov 2018 17:28:38 +0000 (17:28 +0000)]
Revert "[clang] - Simplify tools::SplitDebugName."

This reverts commit r347035 as it introduced assertion failures under
certain conditions. More information can be found here:
https://reviews.llvm.org/rL347035

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

5 years agoDerive builtin return type from its definition
Marco Antognini [Tue, 27 Nov 2018 14:54:58 +0000 (14:54 +0000)]
Derive builtin return type from its definition

Summary:
Prior to this patch, OpenCL code such as the following would attempt to create
a BranchInst with a non-bool argument:

    if (enqueue_kernel(get_default_queue(), 0, nd, ^(void){})) /* ... */

This patch is a follow up on a similar issue with pipe builtin
operations. See commit r280800 and https://bugs.llvm.org/show_bug.cgi?id=30219.

This change, while being conservative on non-builtin functions,
should set the type of expressions invoking builtins to the
proper type, instead of defaulting to `bool` and requiring
manual overrides in Sema::CheckBuiltinFunctionCall.

In addition to tests for enqueue_kernel, the tests are extended to
check other OpenCL builtins.

Reviewers: Anastasia, spatel, rsmith

Reviewed By: Anastasia

Subscribers: kristina, cfe-commits, svenvh

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

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

5 years agoRevert r347417 "Re-Reinstate 347294 with a fix for the failures."
Hans Wennborg [Tue, 27 Nov 2018 14:01:40 +0000 (14:01 +0000)]
Revert r347417 "Re-Reinstate 347294 with a fix for the failures."

This caused a miscompile in Chrome (see crbug.com/908372) that's
illustrated by this small reduction:

  static bool f(int *a, int *b) {
    return !__builtin_constant_p(b - a) || (!(b - a));
  }

  int arr[] = {1,2,3};

  bool g() {
    return f(arr, arr + 3);
  }

  $ clang -O2 -S -emit-llvm a.cc -o -

g() should return true, but after r347417 it became false for some reason.

This also reverts the follow-up commits.

r347417:
> Re-Reinstate 347294 with a fix for the failures.
>
> Don't try to emit a scalar expression for a non-scalar argument to
> __builtin_constant_p().
>
> Third time's a charm!

r347446:
> The result of is.constant() is unsigned.

r347480:
> A __builtin_constant_p() returns 0 with a function type.

r347512:
> isEvaluatable() implies a constant context.
>
> Assume that we're in a constant context if we're asking if the expression can
> be compiled into a constant initializer. This fixes the issue where a
> __builtin_constant_p() in a compound literal was diagnosed as not being
> constant, even though it's always possible to convert the builtin into a
> constant.

r347531:
> A "constexpr" is evaluated in a constant context. Make sure this is reflected
> if a __builtin_constant_p() is a part of a constexpr.

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

5 years ago[libclang] Fix clang_Cursor_getNumArguments and clang_Cursor_getArgument for CXXConst...
Ivan Donchevskii [Tue, 27 Nov 2018 12:02:39 +0000 (12:02 +0000)]
[libclang] Fix clang_Cursor_getNumArguments and clang_Cursor_getArgument for CXXConstructExpr

Constructors have the same methods for arguments as call expressions.
Let's provide a way to get their arguments the same way.

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

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

5 years ago[ASTImporter] Typedef import brings in the complete type
Gabor Marton [Tue, 27 Nov 2018 09:51:36 +0000 (09:51 +0000)]
[ASTImporter] Typedef import brings in the complete type

Summary:
When we already have an incomplete underlying type of a typedef in the
"To" context, and the "From" context has the same typedef, but the
underlying type is complete, then the imported type should be complete.

Fixes an assertion in CTU analysis of Xerces:
Assertion `DD && "queried property of class with no definition"' failed.
This assert is happening in the analyzer engine, because that attempts
to query an underlying type of a typedef, which happens to be
incomplete.

Reviewers: a_sidorin, a.sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, cfe-commits

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

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

5 years ago[docs] UBSan and ASan are supported on Windows
Reid Kleckner [Tue, 27 Nov 2018 03:55:15 +0000 (03:55 +0000)]
[docs] UBSan and ASan are supported on Windows

Also fix a bullet list.

Fixes PR39775

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

5 years agoRevert r347627 "[MS] Push fewer DeclContexts for delayed template parsing"
Reid Kleckner [Tue, 27 Nov 2018 02:54:17 +0000 (02:54 +0000)]
Revert r347627 "[MS] Push fewer DeclContexts for delayed template parsing"

It broke the Windows self-host:
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/1799/steps/stage%202%20build/logs/stdio

I can build
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachinePostDominators.cpp.obj to
repro.

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

5 years ago[analyzer][PlistMacroExpansion] Part 3.: Macro arguments are expanded
Kristof Umann [Tue, 27 Nov 2018 02:28:23 +0000 (02:28 +0000)]
[analyzer][PlistMacroExpansion] Part 3.: Macro arguments are expanded

This part focuses on expanding macro arguments.

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

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

5 years agoRevert "[clang][slh] add attribute for speculative load hardening"
Zola Bridges [Tue, 27 Nov 2018 02:22:00 +0000 (02:22 +0000)]
Revert "[clang][slh] add attribute for speculative load hardening"

until I figure out why the build is failing or timing out

***************************

Summary:
The prior diff had to be reverted because there were two tests
that failed. I updated the two tests in this diff

clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/SemaCXX/attr-speculative-load-hardening.cpp

LLVM IR already has an attribute for speculative_load_hardening. Before
this commit, when a user passed the -mspeculative-load-hardening flag to
Clang, every function would have this attribute added to it. This Clang
attribute will allow users to opt into SLH on a function by function
basis.

This can be applied to functions and Objective C methods.

Reviewers: chandlerc, echristo, kristof.beyls, aaron.ballman

Subscribers: llvm-commits

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

This reverts commit a5b3c232d1e3613f23efbc3960f8e23ea70f2a79.
(r347617)

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

5 years ago[MS] Push fewer DeclContexts for delayed template parsing
Reid Kleckner [Tue, 27 Nov 2018 02:21:51 +0000 (02:21 +0000)]
[MS] Push fewer DeclContexts for delayed template parsing

Only push the outermost record as a DeclContext when parsing a function
body. See the comments in Sema::getContainingDC about the way the parser
pushes contexts. This is intended to match the behavior the parser
normally displays where it parses all method bodies from all nested
classes at the end of the outermost class, when all nested classes are
complete.

Fixes PR38460.

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

5 years ago[clang][slh] add attribute for speculative load hardening
Zola Bridges [Tue, 27 Nov 2018 00:03:44 +0000 (00:03 +0000)]
[clang][slh] add attribute for speculative load hardening

Summary:
The prior diff had to be reverted because there were two tests
that failed. I updated the two tests in this diff

clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/SemaCXX/attr-speculative-load-hardening.cpp

----- Summary from Previous Diff (Still Accurate) -----

LLVM IR already has an attribute for speculative_load_hardening. Before
this commit, when a user passed the -mspeculative-load-hardening flag to
Clang, every function would have this attribute added to it. This Clang
attribute will allow users to opt into SLH on a function by function basis.

This can be applied to functions and Objective C methods.

Reviewers: chandlerc, echristo, kristof.beyls, aaron.ballman

Subscribers: llvm-commits

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

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

5 years agoRevert "[clang][slh] add attribute for speculative load hardening"
Zola Bridges [Mon, 26 Nov 2018 20:11:18 +0000 (20:11 +0000)]
Revert "[clang][slh] add attribute for speculative load hardening"

This reverts commit 801eaf91221ba6dd6996b29ff82659ad6359e885.

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

5 years ago[clang][slh] add attribute for speculative load hardening
Zola Bridges [Mon, 26 Nov 2018 19:41:14 +0000 (19:41 +0000)]
[clang][slh] add attribute for speculative load hardening

Summary:
LLVM IR already has an attribute for speculative_load_hardening. Before
this commit, when a user passed the -mspeculative-load-hardening flag to
Clang, every function would have this attribute added to it. This Clang
attribute will allow users to opt into SLH on a function by function basis.

This can be applied to functions and Objective C methods.

Reviewers: chandlerc, echristo

Subscribers: llvm-commits

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

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

5 years ago[OPENMP][NVPTX]Emit default locations with the correct Exec|Runtime
Alexey Bataev [Mon, 26 Nov 2018 18:37:09 +0000 (18:37 +0000)]
[OPENMP][NVPTX]Emit default locations with the correct Exec|Runtime
modes.

If the region is inside target|teams|distribute region, we can emit the
locations with the correct info for execution mode and runtime mode.
Patch adds this ability to the NVPTX codegen to help the optimizer to
produce better code.

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

5 years ago[clang][slh] Forward mSLH only to Clang CC1
Zola Bridges [Mon, 26 Nov 2018 18:13:31 +0000 (18:13 +0000)]
[clang][slh] Forward mSLH only to Clang CC1

Summary:
-mno-speculative-load-hardening isn't a cc1 option, therefore,
before this change:

clang -mno-speculative-load-hardening hello.cpp

would have the following error:

error: unknown argument: '-mno-speculative-load-hardening'

This change will only ever forward -mspeculative-load-hardening
which is a CC1 option based on which flag was passed to clang.

Also added a test that uses this option that fails if an error like the
above is ever thrown.

Thank you ericwf for help debugging and fixing this error.

Reviewers: chandlerc, EricWF

Subscribers: llvm-commits

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

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

5 years ago[NFC] Replace magic numbers with CodeGenOpt enums
Sam Parker [Mon, 26 Nov 2018 17:26:49 +0000 (17:26 +0000)]
[NFC] Replace magic numbers with CodeGenOpt enums

Use enum values from llvm/Support/CodeGen.h for the optimisation
levels in CompilerInvocation.

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

5 years ago[AArch64] Add aarch64_vector_pcs function attribute to Clang
Sander de Smalen [Mon, 26 Nov 2018 16:38:37 +0000 (16:38 +0000)]
[AArch64] Add aarch64_vector_pcs function attribute to Clang

This is the Clang patch to complement the following LLVM patches:
  https://reviews.llvm.org/D51477
  https://reviews.llvm.org/D51479

More information describing the vector ABI and procedure call standard
can be found here:

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

Patch by Kerry McLaughlin.

Reviewed By: rjmccall

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

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

5 years ago[ASTImporter][Structural Eq] Check for isBeingDefined
Gabor Marton [Mon, 26 Nov 2018 15:54:08 +0000 (15:54 +0000)]
[ASTImporter][Structural Eq] Check for isBeingDefined

Summary:
If one definition is currently being defined, we do not compare for
equality and we assume that the decls are equal.

Reviewers: a_sidorin, a.sidorin, shafik

Reviewed By: a_sidorin

Subscribers: gamesh411, shafik, rnkovacs, dkrupp, Szelethus, cfe-commits

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

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

5 years ago[Index] Expose USR generation for types
Ilya Biryukov [Mon, 26 Nov 2018 15:24:48 +0000 (15:24 +0000)]
[Index] Expose USR generation for types

Summary: Used in clangd.

Reviewers: sammccall, ioeric

Reviewed By: sammccall

Subscribers: kadircet, cfe-commits

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

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

5 years ago[PowerPC] Vector load/store builtins overstate alignment of pointers
Nemanja Ivanovic [Mon, 26 Nov 2018 14:35:38 +0000 (14:35 +0000)]
[PowerPC] Vector load/store builtins overstate alignment of pointers

A number of builtins in altivec.h load/store vectors from pointers to scalar
types. Currently they just cast the pointer to a vector pointer, but expressions
like that have the alignment of the target type. Of course, the input pointer
did not have that alignment so this triggers UBSan (and rightly so).

This resolves https://bugs.llvm.org/show_bug.cgi?id=39704

Differential revision: https://reviews.llvm.org/D54787

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

5 years agoCreate a diagnostic group for warn_call_to_pure_virtual_member_function_from_ctor_dto...
Sylvestre Ledru [Mon, 26 Nov 2018 14:29:48 +0000 (14:29 +0000)]
Create a diagnostic group for warn_call_to_pure_virtual_member_function_from_ctor_dtor, so it can be turned into an error using Werror

Summary: Patch by Arnaud Bienner

Reviewers: davide, rsmith, jkorous

Reviewed By: jkorous

Subscribers: jkorous, sylvestre.ledru, cfe-commits

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

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

5 years agoA "constexpr" is evaluated in a constant context. Make sure this is reflected
Bill Wendling [Mon, 26 Nov 2018 02:10:53 +0000 (02:10 +0000)]
A "constexpr" is evaluated in a constant context. Make sure this is reflected
if a __builtin_constant_p() is a part of a constexpr.

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

5 years ago[CodeComplete] Simplify CodeCompleteConsumer.cpp, NFC
Fangrui Song [Sun, 25 Nov 2018 20:57:05 +0000 (20:57 +0000)]
[CodeComplete] Simplify CodeCompleteConsumer.cpp, NFC

Use range-based for loops
Use XStr.compare(YStr) < 0
Format misaligned code

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

5 years ago[CodeGen] translate MS rotate builtins to LLVM funnel-shift intrinsics
Sanjay Patel [Sun, 25 Nov 2018 17:53:16 +0000 (17:53 +0000)]
[CodeGen] translate MS rotate builtins to LLVM funnel-shift intrinsics

This was originally part of:
D50924

and should resolve PR37387:
https://bugs.llvm.org/show_bug.cgi?id=37387

...but it was reverted because some bots using a gcc host compiler
would crash for unknown reasons with this included in the patch.
Trying again now to see if that's still a problem.

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

5 years ago[analyzer] INT50-CPP. Do not cast to an out-of-range enumeration checker
Kristof Umann [Sat, 24 Nov 2018 12:24:27 +0000 (12:24 +0000)]
[analyzer] INT50-CPP. Do not cast to an out-of-range enumeration checker

This checker implements a solution to the "INT50-CPP. Do not cast to an
out-of-range enumeration value" rule [1].
It lands in alpha for now, and a number of followup patches are planned in order
to enable it by default.

[1] https://www.securecoding.cert.org/confluence/display/cplusplus/INT50-CPP.+Do+not+cast+to+an+out-of-range+enumeration+value

Patch by: Endre Fülöp and Alexander Zaitsev!

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

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

5 years agoisEvaluatable() implies a constant context.
Bill Wendling [Sat, 24 Nov 2018 10:45:55 +0000 (10:45 +0000)]
isEvaluatable() implies a constant context.

Assume that we're in a constant context if we're asking if the expression can
be compiled into a constant initializer. This fixes the issue where a
__builtin_constant_p() in a compound literal was diagnosed as not being
constant, even though it's always possible to convert the builtin into a
constant.

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

5 years ago[CodeComplete] Delete unused variable in rC342449
Fangrui Song [Sat, 24 Nov 2018 00:41:13 +0000 (00:41 +0000)]
[CodeComplete] Delete unused variable in rC342449

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

5 years ago[CodeComplete] Format SemaCodeComplete.cpp and improve code consistency
Fangrui Song [Sat, 24 Nov 2018 00:14:31 +0000 (00:14 +0000)]
[CodeComplete] Format SemaCodeComplete.cpp and improve code consistency

There are some mis-indented places and missing spaces here and there. Just format the whole file.

Also, newer code (from 2014 onwards) in this file prefers const auto *X = dyn_cast to not repeat the Decl type name. Make other occurrences consistent.
Remove two anonymous namespaces that are not very necessary: 1) a typedef 2) a local function (should use static)

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

5 years agoRemove the optional dependency from libclang to clang-tidy/include-fixer
Benjamin Kramer [Fri, 23 Nov 2018 15:02:33 +0000 (15:02 +0000)]
Remove the optional dependency from libclang to clang-tidy/include-fixer

clangd does a better job on both of these, so don't slow down everyone's build
for a poorly working libclang feature.

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

5 years agoA __builtin_constant_p() returns 0 with a function type.
Bill Wendling [Thu, 22 Nov 2018 22:58:06 +0000 (22:58 +0000)]
A __builtin_constant_p() returns 0 with a function type.

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