Richard Smith [Fri, 30 Aug 2019 22:52:55 +0000 (22:52 +0000)]
[c++20] Implement semantic restrictions for C++20 designated
initializers.
This has some interesting interactions with our existing extensions to
support C99 designated initializers as an extension in C++. Those are
resolved as follows:
* We continue to permit the full breadth of C99 designated initializers
in C++, with the exception that we disallow a partial overwrite of an
initializer with a non-trivially-destructible type. (Full overwrite
is OK, because we won't run the first initializer at all.)
* The C99 extensions are disallowed in SFINAE contexts and during
overload resolution, where they could change the meaning of valid
programs.
* C++20 disallows reordering of initializers. We only check for that for
the simple cases that the C++20 rules permit (designators of the form
'.field_name =' and continue to allow reordering in other cases).
It would be nice to improve this behavior in future.
* All C99 designated initializer extensions produce a warning by
default in C++20 mode. People are going to learn the C++ rules based
on what Clang diagnoses, so it's important we diagnose these properly
by default.
* In C++ <= 17, we apply the C++20 rules rather than the C99 rules, and
so still diagnose C99 extensions as described above. We continue to
accept designated C++20-compatible initializers in C++ <= 17 silently
by default (but naturally still reject under -pedantic-errors).
This is not a complete implementation of P0329R4. In particular, that
paper introduces new non-C99-compatible syntax { .field { init } }, and
we do not support that yet.
This is based on a previous patch by Don Hinton, though I've made
substantial changes when addressing the above interactions.
Differential Revision: https://reviews.llvm.org/D59754
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370544
91177308-0d34-0410-b5e6-
96231b3b80d8
Nandor Licker [Fri, 30 Aug 2019 21:32:00 +0000 (21:32 +0000)]
Revert [Clang Interpreter] Initial patch for the constexpr interpreter
This reverts r370531 (git commit
d4c1002e0bbbbab50f6891cdd2f5bd3a8f3a3584)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370535
91177308-0d34-0410-b5e6-
96231b3b80d8
Nandor Licker [Fri, 30 Aug 2019 21:17:03 +0000 (21:17 +0000)]
[Clang Interpreter] Initial patch for the constexpr interpreter
Summary:
This patch introduces the skeleton of the constexpr interpreter,
capable of evaluating a simple constexpr functions consisting of
if statements. The interpreter is described in more detail in the
RFC. Further patches will add more features.
Reviewers: Bigcheese, jfb, rsmith
Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D64146
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370531
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Fri, 30 Aug 2019 17:34:22 +0000 (17:34 +0000)]
[clang-scan-deps] NFC, remove outdated implementation comment
There's no need to purge symlinked entries in the FileManager,
as the new FileEntryRef API allows us to compute dependencies more
accurately when the FileManager is reused.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370493
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 30 Aug 2019 16:56:26 +0000 (16:56 +0000)]
FileManager: Remove ShouldCloseOpenFile argument from getBufferForFile, NFC
Remove this dead code. We always close it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370488
91177308-0d34-0410-b5e6-
96231b3b80d8
Nandor Licker [Fri, 30 Aug 2019 15:41:45 +0000 (15:41 +0000)]
Revert [Clang Interpreter] Initial patch for the constexpr interpreter
This reverts r370476 (git commit
a5590950549719d0d9ea69ed164b0c8c0f4e02e6)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370481
91177308-0d34-0410-b5e6-
96231b3b80d8
Nandor Licker [Fri, 30 Aug 2019 15:02:09 +0000 (15:02 +0000)]
[Clang Interpreter] Initial patch for the constexpr interpreter
Summary:
This patch introduces the skeleton of the constexpr interpreter,
capable of evaluating a simple constexpr functions consisting of
if statements. The interpreter is described in more detail in the
RFC. Further patches will add more features.
Reviewers: Bigcheese, jfb, rsmith
Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D64146
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370476
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Marton [Fri, 30 Aug 2019 10:55:41 +0000 (10:55 +0000)]
[ASTImporter] Do not look up lambda classes
Summary:
Consider this code:
```
void f() {
auto L0 = [](){};
auto L1 = [](){};
}
```
First we import `L0` then `L1`. Currently we end up having only one
CXXRecordDecl for the two different lambdas. And that is a problem if
the body of their op() is different. This happens because when we import
`L1` then lookup finds the existing `L0` and since they are structurally
equivalent we just map the imported L0 to be the counterpart of L1.
We have the same problem in this case:
```
template <typename F0, typename F1>
void f(F0 L0 = [](){}, F1 L1 = [](){}) {}
```
In StructuralEquivalenceContext we could distinquish lambdas only by
their source location in these cases. But we the lambdas are actually
structrually equivalent they differn only by the source location.
Thus, the solution is to disable lookup completely if the decl in
the "from" context is a lambda.
However, that could have other problems: what if the lambda is defined
in a header file and included in several TUs? I think we'd have as many
duplicates as many includes we have. I think we could live with that,
because the lambda classes are TU local anyway, we cannot just access
them from another TU.
Reviewers: a_sidorin, a.sidorin, shafik
Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66348
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370461
91177308-0d34-0410-b5e6-
96231b3b80d8
Balazs Keri [Fri, 30 Aug 2019 10:12:14 +0000 (10:12 +0000)]
[ASTImporter] Propagate errors during import of overridden methods.
Summary:
If importing overridden methods fails for a method it can be seen
incorrectly as non-virtual. To avoid this inconsistency the method
is marked with import error to avoid later use of it.
Reviewers: martong, a.sidorin, shafik, a_sidorin
Reviewed By: martong, shafik
Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66933
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370457
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Fri, 30 Aug 2019 09:29:34 +0000 (09:29 +0000)]
[Tooling] Migrated APIs that take ownership of objects to unique_ptr
Subscribers: jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66960
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370451
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Potapenko [Fri, 30 Aug 2019 08:58:46 +0000 (08:58 +0000)]
[CodeGen]: fix error message for "=r" asm constraint
Summary:
Nico Weber reported that the following code:
char buf[9];
asm("" : "=r" (buf));
yields the "impossible constraint in asm: can't store struct into a register"
error message, although |buf| is not a struct (see
http://crbug.com/999160).
Make the error message more generic and add a test for it.
Also make sure other tests in x86_64-PR42672.c check for the full error
message.
Reviewers: eli.friedman, thakis
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66948
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370444
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Fri, 30 Aug 2019 01:25:57 +0000 (01:25 +0000)]
[clang-scan-deps] NFC, refactor the DependencyScanningWorker to use a consumer
to report the dependencies to the client
This will allow the scanner to report modular dependencies to the consumer.
This will also allow the scanner to accept regular cc1 clang invocations, e.g.
in an implementation of a libclang C API for clang-scan-deps, that I will add
follow-up patches for in the future.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370425
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 29 Aug 2019 23:14:08 +0000 (23:14 +0000)]
[Modules] Make ReadModuleMapFileBlock errors reliable
This prevents a crash when an error should be emitted instead.
During implicit module builds, there are cases where ReadASTCore is called with
ImportedBy set to nullptr, which breaks expectations in ReadModuleMapFileBlock,
leading to crashes.
Fix this by improving ReadModuleMapFileBlock to handle ImportedBy correctly.
This only happens non deterministically in the wild, when the underlying file
system changes while concurrent compiler invocations use implicit modules,
forcing rebuilds which see an inconsistent filesystem state. That said, there's
no much to do w.r.t. writing tests here.
rdar://problem/
48828801
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370422
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Thu, 29 Aug 2019 23:12:06 +0000 (23:12 +0000)]
[CMake][Fuchsia] Enable experimental pass manager by default
We plan on using experimental new pass manager for Fuchsia toolchain.
Differential Revision: https://reviews.llvm.org/D58214
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370421
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 29 Aug 2019 22:56:38 +0000 (22:56 +0000)]
[clang-scan-deps] reuse the file manager across invocations of
the dependency scanner on a single worker thread
This behavior can be controlled using the new `-reuse-filemanager` clang-scan-deps
option. By default the file manager is reused.
The added test/ClangScanDeps/symlink.cpp is able to pass with
the reused filemanager after the related FileEntryRef changes
landed earlier. The test test/ClangScanDeps/subframework_header_dir_symlink.m
still fails when the file manager is reused (I run the FileCheck with not to
make it PASS). I will address this in a follow-up patch that improves
the DirectoryEntry name modelling in the FileManager.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370420
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 29 Aug 2019 22:49:34 +0000 (22:49 +0000)]
Fix silent wrong-code bugs and crashes with designated initialization.
We failed to correctly handle the 'holes' left behind by designated
initializers in VerifyOnly mode. This would result in us thinking that a
designated initialization would be valid, only to find that it is not
actually valid when we come to build it. In a +Asserts build, that would
assert, and in a -Asserts build, that would silently lose some part of
the initialization or crash.
With this change, when an InitListExpr contains any designators, we now
always build a structured list so that we can track the locations of the
'holes' that we need to go back and fill in.
We could in principle do better: we only need the structured form if
there is a designator that jumps backwards (and can otherwise check for
the holes as we progress through the initializer list), but dealing with
that turns out to be rather complicated, so it's not done as part of
this patch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370419
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 29 Aug 2019 22:49:33 +0000 (22:49 +0000)]
Refactor InitListChecker to check only a single (explicit) initializer
list, rather than recursively checking multiple lists in C.
This simplification is in preparation for making InitListChecker
maintain more state that's specific to the explicit initializer list,
particularly when handling designated initialization.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370418
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 29 Aug 2019 22:49:32 +0000 (22:49 +0000)]
Refactor InitListChecker to make it a bit clearer that hasError is only
set to true in VerifyOnly mode in cases where it's also set to true when
actually building the initializer list.
Add FIXMEs for the two cases where that's not true. No functionality
change intended.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370417
91177308-0d34-0410-b5e6-
96231b3b80d8
Nandor Licker [Thu, 29 Aug 2019 21:57:47 +0000 (21:57 +0000)]
[NFC] Test commit - sorted headers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370412
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Thu, 29 Aug 2019 20:37:28 +0000 (20:37 +0000)]
[CFG] Fix CFG for statement-expressions in return values.
We're building the CFG from bottom to top, so when the return-value expression
has a non-trivial CFG on its own, we need to continue building from the entry
to the return-value expression CFG rather than from the block to which
we've just appended the return statement.
Fixes a false positive warning "control may reach end of non-void function".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370406
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Thu, 29 Aug 2019 20:00:40 +0000 (20:00 +0000)]
Avoid crash when dumping NULL Type as JSON.
Patch by Bert Belder.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370401
91177308-0d34-0410-b5e6-
96231b3b80d8
Volodymyr Sapsai [Thu, 29 Aug 2019 19:51:25 +0000 (19:51 +0000)]
Remove `FileManager::invalidateCache` as it has no callers anymore. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370400
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 29 Aug 2019 18:09:02 +0000 (18:09 +0000)]
[X86] Remove what little support we had for MPX
-Deprecate -mmpx and -mno-mpx command line options
-Remove CPUID detection of mpx for -march=native
-Remove MPX from all CPUs
-Remove MPX preprocessor define
I've left the "mpx" string in the backend so we don't fail on old IR, but its not connected to anything.
gcc has also deprecated these command line options. https://www.phoronix.com/scan.php?page=news_item&px=GCC-Patch-To-Drop-MPX
Differential Revision: https://reviews.llvm.org/D66669
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370393
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 16:58:13 +0000 (16:58 +0000)]
Added 'inline' to functions defined in headers to avoid ODR violations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370383
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 16:38:36 +0000 (16:38 +0000)]
Changed FrontendActionFactory::create to return a std::unique_ptr
Subscribers: jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66947
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370379
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 14:21:05 +0000 (14:21 +0000)]
Removed a function declaration that doesn't have a definition
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370361
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 29 Aug 2019 12:41:19 +0000 (12:41 +0000)]
Fix variable ‘IsInitCapturePack’ set but not used warning. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370345
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 12:17:21 +0000 (12:17 +0000)]
Removed `AnyFunctionDecl`, it is unused.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370341
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 12:10:15 +0000 (12:10 +0000)]
Removed two function declarations that don't have definitions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370340
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 11:47:34 +0000 (11:47 +0000)]
[Index] Added a ShouldSkipFunctionBody callback to libIndex, and refactored clients to use it instead of inventing their own solution
Subscribers: jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66879
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370338
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 11:43:05 +0000 (11:43 +0000)]
[Index] Stopped wrapping FrontendActions in libIndex and its users
Exposed a new function, createIndexingASTConsumer, that creates an
ASTConsumer. ASTConsumers compose well.
Removed wrapping functionality from createIndexingAction.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370337
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 11:38:43 +0000 (11:38 +0000)]
[Index] Moved the IndexDataConsumer::finish call into the IndexASTConsumer from IndexAction
Doing so removes the last reason to expose a FrontendAction from
libIndex.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370336
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Potapenko [Thu, 29 Aug 2019 11:21:41 +0000 (11:21 +0000)]
[CodeGen]: don't treat structures returned in registers as memory inputs
Summary:
The "=r" output constraint for a structure variable passed to inline asm
shouldn't be converted to "=*r", as this changes the asm directive
semantics and prevents DSE optimizations.
Instead, preserve the constraints and return such structures as integers
of corresponding size, which are converted back to structures when
storing the result.
Fixes PR42672.
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D65234
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370335
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 10:23:29 +0000 (10:23 +0000)]
[Index] Create PP callbacks in the ASTConsumer
Doing so removes one reason to create a custom FrontendAction.
FrontendActions are not desirable because they are difficult to compose.
ASTConsumers are much easier to compose.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370323
91177308-0d34-0410-b5e6-
96231b3b80d8
Sven van Haastregt [Thu, 29 Aug 2019 10:21:06 +0000 (10:21 +0000)]
[OpenCL] Fix diagnosing enqueue_kernel call with too few args
The err_typecheck_call_too_few_args diagnostic takes arguments, but
none were provided causing clang to crash when attempting to diagnose
an enqueue_kernel call with too few arguments.
Fixes llvm.org/PR42045
Differential Revision: https://reviews.llvm.org/D66883
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370322
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 10:16:41 +0000 (10:16 +0000)]
[Index] Marked a bunch of classes 'final'
This file defines multiple inheritance hierarchies and 'final' helps
with readability.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370321
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Balogh [Thu, 29 Aug 2019 09:35:47 +0000 (09:35 +0000)]
[Analyzer] Iterator Checkers - Make range errors and invalidated access fatal
Range errors (dereferencing or incrementing the past-the-end iterator or
decrementing the iterator of the first element of the range) and access of
invalidated iterators lead to undefined behavior. There is no point to
continue the analysis after such an error on the same execution path, but
terminate it by a sink node (fatal error). This also improves the
performance and helps avoiding double reports (e.g. in case of nested
iterators).
Differential Revision: https://reviews.llvm.org/D62893
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370314
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Afanasyev [Thu, 29 Aug 2019 06:49:05 +0000 (06:49 +0000)]
[Test][Time profiler] Fix test for python3
Summary:
Fix test checking time profiler generates correct tracing json-file.
`filter` works differently for python2 and python3, so unifying this.
Reviewers: mgehre, nathanchance
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66873
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370300
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Thu, 29 Aug 2019 06:30:12 +0000 (06:30 +0000)]
Removed dead code from clang/AST/NSAPI.h
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66884
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370298
91177308-0d34-0410-b5e6-
96231b3b80d8
Pengfei Wang [Thu, 29 Aug 2019 06:18:34 +0000 (06:18 +0000)]
[x86] Adding support for some missing intrinsics: _mm512_cvtsi512_si32
Summary:
Adding support for some missing intrinsics:
_mm512_cvtsi512_si32
Reviewers: craig.topper, pengfei, LuoYuanke, spatel, RKSimon
Reviewed By: craig.topper
Subscribers: llvm-commits
Patch by Bing Yu (yubing)
Differential Revision: https://reviews.llvm.org/D66785
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370297
91177308-0d34-0410-b5e6-
96231b3b80d8
Volodymyr Sapsai [Wed, 28 Aug 2019 23:31:32 +0000 (23:31 +0000)]
[Modules] Fix rebuilding an updated module for each of its consumers.
Marking a module for a rebuild when its signature differs from the
expected one causes redundant module rebuilds for incremental builds.
When a module is updated, its signature changes. But its consumers still
have the old signature and loading them will result in signature
mismatches. It will correctly cause the rebuilds for the consumers but
we don't need to rebuild the common module for each of them as it is
already up to date.
In practice this bug causes longer build times. We are doing more work
than required and only a single process can build a module, so parallel
builds degrade to a single-process mode where extra processes are just
waiting on a file lock.
Fix by not marking a module dependency for a rebuild on signature
mismatch. We'll check if it is up to date when we load it.
rdar://problem/
50212358
Reviewers: dexonsmith, bruno, rsmith
Reviewed By: dexonsmith, bruno
Subscribers: jkorous, ributzka, cfe-commits, aprantl
Differential Revision: https://reviews.llvm.org/D66907
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370274
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Pilkington [Wed, 28 Aug 2019 22:38:36 +0000 (22:38 +0000)]
Fix a passing XFAIL test
Now that we can gracefully handle stack exhaustion, this test was passing in
darwin && asan. Instead, just unsupport it when threading is unavailable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370270
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Wed, 28 Aug 2019 21:19:58 +0000 (21:19 +0000)]
[analyzer] Fix more analyzer warnings on analyzer and libAnalysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370263
91177308-0d34-0410-b5e6-
96231b3b80d8
Erich Keane [Wed, 28 Aug 2019 20:59:25 +0000 (20:59 +0000)]
Fix always_inline 'target' compatibility check code for Lambdas
The previous version of this used CurFuncDecl in CodeGenFunction,
however this doesn't include lambdas. However, CurCodeDecl DOES. Switch
the check to use CurCodeDecl so that the actual function being emitted
gets checked, preventing an error in ISEL.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370261
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Wed, 28 Aug 2019 18:44:42 +0000 (18:44 +0000)]
[CFG] Make representation of destructor calls more accurate.
Respect C++17 copy elision; previously it would generate destructor calls
for elided temporaries, including in initialization and return statements.
Don't generate duplicate destructor calls for statement expressions.
Fix destructors in initialization lists and comma operators.
Improve printing of implicit destructors.
Patch by Nicholas Allegra!
Differential Revision: https://reviews.llvm.org/D66404
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370247
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Wed, 28 Aug 2019 18:44:38 +0000 (18:44 +0000)]
[analyzer] Fix analyzer warnings on analyzer.
Write tests for the actual crash that was found. Write comments and refactor
code around 17 style bugs and suppress 3 false positives.
Differential Revision: https://reviews.llvm.org/D66847
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370246
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Wed, 28 Aug 2019 18:44:35 +0000 (18:44 +0000)]
[analyzer] pr43036: Fix support for operator 'sizeof...'.
It was known to be a compile-time constant so it wasn't evaluated during
symbolic execution, but it wasn't evaluated as a compile-time constant either.
Differential Revision: https://reviews.llvm.org/D66565
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370245
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Wed, 28 Aug 2019 18:44:32 +0000 (18:44 +0000)]
[analyzer] Trust global initializers when analyzing main().
If the global variable has an initializer, we'll ignore it because we're usually
not analyzing the program from the beginning, which means that the global
variable may have changed before we start our analysis.
However when we're analyzing main() as the top-level function, we can rely
on global initializers to still be valid. At least in C; in C++ we have global
constructors that can still break this logic.
This patch allows the Static Analyzer to load constant initializers from
global variables if the top-level function of the current analysis is main().
Differential Revision: https://reviews.llvm.org/D65361
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370244
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Wed, 28 Aug 2019 15:14:37 +0000 (15:14 +0000)]
Try fixing CRLF issues in Git with [clang-scan-deps] Minimizer: Correctly handle multi-line content with CR+LF line endings
Differential Revision: https://reviews.llvm.org/D66556
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370219
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 28 Aug 2019 14:55:08 +0000 (14:55 +0000)]
[OPENMP][Analysis] Add analysis of the map clauses.
Summary:
Added basic analysis of map clauses. Only map clauses with to and tofrom
map type must be analyzed since all other map types (alloc, delete, etc.) do not require to use the value of the initial variable, instead they create the new copy of the variable.
Reviewers: NoQ
Subscribers: guansong, cfe-commits, kkwli0, caomhin
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66668
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370214
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 28 Aug 2019 09:14:00 +0000 (09:14 +0000)]
Delete minimize_source_to_dependency_directives_invalid_error.c
It was added in r370129 with a .gitattributes file that means the file
always shows up as having a local diff in Git checkouts (at least on
Linux). Deleting it until we can figure out the right way to do this.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370175
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Yung [Wed, 28 Aug 2019 02:13:24 +0000 (02:13 +0000)]
Fixup build of clang-interpreter example after change in r370122.
This should fix the build failure on llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370151
91177308-0d34-0410-b5e6-
96231b3b80d8
Sergey Dmitriev [Wed, 28 Aug 2019 01:26:13 +0000 (01:26 +0000)]
[Clang][Bundler] Do not require host triple for extracting device bundles
Bundler currently requires host triple to be provided no matter if you are performing bundling or unbundling, but for unbundling operation such requirement is too restrictive. You may for example want to examine device part of the object for a particular offload target, but you have to extract host part as well even though you do not need it. Host triple isn't really needed for unbundling, so this patch removes that requirement.
Differential Revision: https://reviews.llvm.org/D66601
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370143
91177308-0d34-0410-b5e6-
96231b3b80d8
Vlad Tsyrklevich [Wed, 28 Aug 2019 01:08:54 +0000 (01:08 +0000)]
Revert "Change the X86 datalayout to add three address spaces for 32 bit signed,"
This reverts commit r370083 because it caused check-lld failures on
sanitizer-x86_64-linux-fast.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370142
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 28 Aug 2019 01:04:50 +0000 (01:04 +0000)]
Fix "commas at the end of enumerator lists are a C99-specific"
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370141
91177308-0d34-0410-b5e6-
96231b3b80d8
Volodymyr Sapsai [Wed, 28 Aug 2019 00:25:06 +0000 (00:25 +0000)]
[ObjC] Fix type checking for qualified id block parameters.
When checking if block types are compatible, we are checking for
compatibility their return types and parameters' types. As these types
have different variance, we need to check them in different order.
rdar://problem/
52788423
Reviewers: erik.pilkington, arphaman
Reviewed By: arphaman
Subscribers: jkorous, dexonsmith, ributzka, cfe-commits
Differential Revision: https://reviews.llvm.org/D66831
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370130
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Wed, 28 Aug 2019 00:04:06 +0000 (00:04 +0000)]
Re-land [clang-scan-deps] Minimizer: Correctly handle multi-line content with CR+LF line endings
Previously, an #error directive with quoted, multi-line content, along with CR+LF line endings wasn't handled correctly.
Differential Revision: https://reviews.llvm.org/D66556
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370129
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeny Mankov [Tue, 27 Aug 2019 22:15:32 +0000 (22:15 +0000)]
[preprocessor] Add an opportunity to retain excluded conditional blocks
It is handy for clang tooling, for instance, in source to source transformation.
Reviewers: vpykhtin (Valery Pykhtin), erichkeane (Erich Keane)
Subscribers: rsmith (Richard Smith), akyrtzi (Argyrios Kyrtzidis)
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66597
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370123
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Tue, 27 Aug 2019 22:13:31 +0000 (22:13 +0000)]
ArrayRef'ized CompilerInvocation::CreateFromArgs
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66797
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370122
91177308-0d34-0410-b5e6-
96231b3b80d8
Jan Korous [Tue, 27 Aug 2019 21:49:39 +0000 (21:49 +0000)]
[clang][Index][NFC] Move IndexDataConsumer default implementation
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370116
91177308-0d34-0410-b5e6-
96231b3b80d8
Sergey Dmitriev [Tue, 27 Aug 2019 21:47:52 +0000 (21:47 +0000)]
[Clang][Bundler] Fix for a hang when unbundling fat binary
clang-offload-bundler tool may hang under certain conditions when it extracts a subset of all available device bundles from the fat binary that is handled by the BinaryFileHandler. This patch fixes this problem.
Differential Revision: https://reviews.llvm.org/D66598
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370115
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 20:33:05 +0000 (20:33 +0000)]
Diagnose _Bool as a C99 extension.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370108
91177308-0d34-0410-b5e6-
96231b3b80d8
Shafik Yaghmour [Tue, 27 Aug 2019 20:17:35 +0000 (20:17 +0000)]
Debug Info: Support for DW_AT_export_symbols for anonymous structs
This implements the DWARF 5 feature described in:
http://dwarfstd.org/ShowIssue.php?issue=141212.1
To support recognizing anonymous structs:
struct A {
struct { // Anonymous struct
int y;
};
} a;
This patch adds support in CGDebugInfo::CreateLimitedType(...) for this new flag and an accompanying test to verify this feature.
Differential Revision: https://reviews.llvm.org/D66667
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370107
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 27 Aug 2019 19:25:40 +0000 (19:25 +0000)]
AMDGPU: Always emit amdgpu-flat-work-group-size
The backend default maximum should be the hardware maximum, so the
frontend should set the implementation defined default maximum.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370101
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 19:15:24 +0000 (19:15 +0000)]
Diagnose both _Complex and _Imaginary as C99 extensions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370100
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 27 Aug 2019 18:26:36 +0000 (18:26 +0000)]
[driver][xray] fix the macOS support checker by supporting -macos
triple in addition to -darwin
The previous check incorrectly checked for macOS support by
allowing -darwin triples only, and -macos triple was not supported.
Differential Revision: https://reviews.llvm.org/D61758
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370093
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 27 Aug 2019 17:52:03 +0000 (17:52 +0000)]
Move EH spec mismatches under -fms-compatibility
-fms-extensions is intended to enable conforming language extensions and
-fms-compatibility is intended to language rule relaxations, so a user
could plausibly compile with -fno-ms-compatibility on Windows while
still using dllexport, for example. This exception specification
validation behavior has been handled as a warning since before
-fms-compatibility was added in 2011. I think it's just an oversight
that it hasn't been moved yet.
This will help users find conformance issues in their code such as those
found in _com_ptr_t as described in https://llvm.org/PR42842.
Reviewers: hans
Subscribers: STL_MSFT, cfe-commits
Differential Revision: https://reviews.llvm.org/D66770
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370087
91177308-0d34-0410-b5e6-
96231b3b80d8
Amy Huang [Tue, 27 Aug 2019 17:46:53 +0000 (17:46 +0000)]
Change the X86 datalayout to add three address spaces for 32 bit signed,
32 bit unsigned, and 64 bit pointers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370083
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 27 Aug 2019 17:32:42 +0000 (17:32 +0000)]
Use FileEntryRef for PPCallbacks::HasInclude
This fixes the issue where a filename dependendency was missing if the file that
was referenced with __has_include() was accessed through a symlink in an earlier run,
if the file manager was reused between runs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370081
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Elliott [Tue, 27 Aug 2019 15:41:16 +0000 (15:41 +0000)]
[RISCV] Set MaxAtomicInlineWidth and MaxAtomicPromoteWidth for RV32/RV64 targets with atomics
Summary: This ensures that libcalls aren't generated when the target supports atomics. Atomics aren't in the base RV32I/RV64I instruction sets, so MaxAtomicInlineWidth and MaxAtomicPromoteWidth are set only when the atomics extension is being targeted. This must be done in setMaxAtomicWidth, as this should be done after handleTargetFeatures has been called.
Reviewers: jfb, jyknight, wmi, asb
Reviewed By: asb
Subscribers: pzheng, MaskRay, s.egerton, lenary, dexonsmith, psnobl, benna, Jim, JohnLLVM, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, lewis-revill, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D57450
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370073
91177308-0d34-0410-b5e6-
96231b3b80d8
Joe Ranieri [Tue, 27 Aug 2019 14:43:54 +0000 (14:43 +0000)]
Update the SARIF exporter to SARIF 2.1
This updates the SARIF exporter to produce SARIF 2.1 output. The bulk of the diffs come from two changes to SARIF:
* https://github.com/oasis-tcs/sarif-spec/issues/309
* https://github.com/oasis-tcs/sarif-spec/issues/179
Differential Revision: https://reviews.llvm.org/D65211
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370068
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 14:41:39 +0000 (14:41 +0000)]
Replace some custom C11 extension warnings with the generic warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370066
91177308-0d34-0410-b5e6-
96231b3b80d8
Joe Ranieri [Tue, 27 Aug 2019 14:20:27 +0000 (14:20 +0000)]
Fix a SARIF exporter crash with macro expansions
Differential Revision: https://reviews.llvm.org/D65209
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370061
91177308-0d34-0410-b5e6-
96231b3b80d8
Joe Ranieri [Tue, 27 Aug 2019 13:49:45 +0000 (13:49 +0000)]
Fix text range end columns in SARIF to be exclusive
According to the SARIF specification, "a text region does not include the character specified by endColumn".
Differential Revision: https://reviews.llvm.org/D65206
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370060
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 13:47:51 +0000 (13:47 +0000)]
Quote the token being diagnosed for C11 extensions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370059
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 13:45:42 +0000 (13:45 +0000)]
Speculatively fix the build bots after r370052.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370058
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 27 Aug 2019 12:42:45 +0000 (12:42 +0000)]
Implement codegen for MSVC unions with reference members.
Currently, clang accepts a union with a reference member when given the -fms-extensions flag. This change fixes the codegen for this case.
Patch by Dominic Ferreira.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370052
91177308-0d34-0410-b5e6-
96231b3b80d8
Joe Ranieri [Tue, 27 Aug 2019 12:36:25 +0000 (12:36 +0000)]
Testing commit access; NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370051
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Marton [Tue, 27 Aug 2019 11:36:10 +0000 (11:36 +0000)]
[ASTImporter] Fix name conflict handling with different strategies
There are numorous flaws about the name conflict handling, this patch
attempts fixes them. Changes in details:
* HandleNameConflict return with a false DeclarationName
Hitherto we effectively never returned with a NameConflict error, even
if the preceding StructuralMatch indicated a conflict.
Because we just simply returned with the parameter `Name` in
HandleNameConflict and that name is almost always `true` when converted to
`bool`.
* Add tests which indicate wrong NameConflict handling
* Add to ConflictingDecls only if decl kind is different
Note, we might not indicate an ODR error when there is an existing record decl
and a enum is imported with same name. But there are other cases. E.g. think
about the case when we import a FunctionTemplateDecl with name f and we found a
simple FunctionDecl with name f. They overload. Or in case of a
ClassTemplateDecl and CXXRecordDecl, the CXXRecordDecl could be the 'templated'
class, so it would be false to report error. So I think we should report a
name conflict error only when we are 100% sure of that. That is why I think it
should be a general pattern to report the error only if the kind is the same.
* Fix failing ctu test with EnumConstandDecl
In ctu-main.c we have the enum class 'A' which brings in the enum
constant 'x' with value 0 into the global namespace.
In ctu-other.c we had the enum class 'B' which brought in the same name
('x') as an enum constant but with a different enum value (42). This is clearly
an ODR violation in the global namespace. The solution was to rename the
second enum constant.
* Introduce ODR handling strategies
Reviewers: a_sidorin, shafik
Differential Revision: https://reviews.llvm.org/D59692
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370045
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Ricci [Tue, 27 Aug 2019 11:35:49 +0000 (11:35 +0000)]
[clang] Ensure that statements, expressions and types are trivially destructible
Since statements, expressions and types are allocated with the BumpPtrAllocator
from ASTContext their destructor is not executed. Two classes are currently
exempted from the check : InitListExpr due to its ASTVector and
ConstantArrayType due to its APInt.
No functional changes.
Differential Revision: https://reviews.llvm.org/D66646
Reviewed By: lebedev.ri, gribozavr
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370044
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Ricci [Tue, 27 Aug 2019 11:21:00 +0000 (11:21 +0000)]
[clang] Ensure that comment classes are trivially destructible
As in D66646, these classes are also allocated with a BumpPtrAllocator,
and therefore should be trivially destructible.
Differential Revision: https://reviews.llvm.org/D66722
Reviewed By: Mordante, gribozavr
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370041
91177308-0d34-0410-b5e6-
96231b3b80d8
David Carlier [Tue, 27 Aug 2019 10:04:03 +0000 (10:04 +0000)]
[ReleaseNotes] MemorySanitizer support of ASLR on FreeBSD
Reviewers: sylvestre.ledru, kcc
Reviewed By: sylvestre.ledru
Differential Revision: https://reviews.llvm.org/D66792
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370035
91177308-0d34-0410-b5e6-
96231b3b80d8
Ilya Biryukov [Tue, 27 Aug 2019 10:02:18 +0000 (10:02 +0000)]
[Driver] Add an option for createInvocationFromCommandLine to recover on errors
Summary:
Previously, it would always return nullptr on any error.
This change adds a parameter, controlling whether the function should
attempt to return a non-null result even if unknown arguments (or other
errors were encountered).
The new behavior is only used in clangd.
Considered an alternative of changing the return value instead of adding
a new parameter, but that would require updating all callsites. Settled
with the parameter to minimize the code changes.
Reviewers: gribozavr
Reviewed By: gribozavr
Subscribers: nridge, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66731
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370033
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 27 Aug 2019 01:06:23 +0000 (01:06 +0000)]
Revert "[clang-scan-deps] Minimizer: Correctly handle multi-line content with CR+LF line endings"
This reverts commit r369986.
This change added a dependency on the 'dos2unix' tool, which is not one
of our accepted test dependencies and may not exist on all machines that
build Clang.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370000
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 27 Aug 2019 01:06:21 +0000 (01:06 +0000)]
Don't lose the FoundDecl and template arguments for a DeclRefExpr in
TreeTransform.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369999
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 27 Aug 2019 01:03:25 +0000 (01:03 +0000)]
Use FileEntryRef for PPCallbacks::FileSkipped
This fixes the issue where a filename dependendency was missing if the file that
was skipped was included through a symlink in an earlier run, if the file
manager was reused between runs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369998
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Tue, 27 Aug 2019 00:13:52 +0000 (00:13 +0000)]
[clang-scan-deps] Skip UTF-8 BOM in source minimizer
Differential Revision: https://reviews.llvm.org/D66511
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369993
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Tue, 27 Aug 2019 00:11:33 +0000 (00:11 +0000)]
NFC: Make test work with or without assertions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369992
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Mon, 26 Aug 2019 23:28:05 +0000 (23:28 +0000)]
[clang-scan-deps] Minimizer: Correctly skip over double slashes in angle bracket #include
Previously, double slashes (//) occurring in angle brackets #include were incorrectly interpreted as comments. eg. #include <dir//file.h>
Differential Revision: https://reviews.llvm.org/D66550
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369988
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Mon, 26 Aug 2019 23:19:21 +0000 (23:19 +0000)]
[clang-scan-deps] Minimizer: Correctly handle multi-line content with CR+LF line endings
Previously, an #error directive with quoted, multi-line content, along with CR+LF line endings wasn't handled correctly.
Differential Revision: https://reviews.llvm.org/D66556
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369986
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 26 Aug 2019 22:51:28 +0000 (22:51 +0000)]
PR42587: diagnose unexpanded uses of a pack parameter of a generic
lambda from within the lambda-declarator.
Instead of trying to reconstruct whether a parameter pack was declared
inside a lambda (which we can't do correctly in general because we might
not have attached parameters to their declaration contexts yet), track
the set of parameter packs introduced in each live lambda scope, and
require only those parameters to be immediately expanded when they
appear inside that lambda.
In passing, fix incorrect disambiguation of a lambda-expression starting
with an init-capture pack in a braced-init-list. We previously
incorrectly parsed that as a designated initializer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369985
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Mon, 26 Aug 2019 22:16:05 +0000 (22:16 +0000)]
hwasan, codegen: Keep more lifetime markers used for hwasan
Reviewers: eugenis
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66697
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369980
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Mon, 26 Aug 2019 22:15:50 +0000 (22:15 +0000)]
msan, codegen, instcombine: Keep more lifetime markers used for msan
Reviewers: eugenis
Subscribers: hiraditya, cfe-commits, #sanitizers, llvm-commits
Tags: #clang, #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D66695
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369979
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Mon, 26 Aug 2019 21:29:06 +0000 (21:29 +0000)]
Revert r369843 "[Testing] Unbreak r369830"
That was not the fix.
This reverts commit
8bcf690ae03db85608b2ea22eac7a91c84df4dc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369971
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 26 Aug 2019 20:55:43 +0000 (20:55 +0000)]
Updating a test case that was missed in r369957.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369968
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 26 Aug 2019 20:51:23 +0000 (20:51 +0000)]
Remove unused variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369965
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 26 Aug 2019 20:50:54 +0000 (20:50 +0000)]
[DebugInfo] Add debug-entry-values test coverage, NFC
Check that call site descriptions are emitted in dwarf4 + lldb +
debug-entry-values mode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369964
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 26 Aug 2019 20:46:20 +0000 (20:46 +0000)]
Fixing a weird copy-pasta to get bots back to green.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369960
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 26 Aug 2019 20:32:05 +0000 (20:32 +0000)]
ContentCache: Drop getBuffer's dependency on SourceManager
Refactor ContentCache::IsSystemFile to IsFileVolatile, checking
SourceManager::userFilesAreVolatile at construction time. This is a
step toward lowering ContentCache down from SourceManager to
FileManager.
No functionality change intended.
https://reviews.llvm.org/D66713
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369958
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 26 Aug 2019 20:29:08 +0000 (20:29 +0000)]
Reword the C11 extension diagnostic.
This makes it more consistent with other language extension diagnostics.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369957
91177308-0d34-0410-b5e6-
96231b3b80d8