]> granicus.if.org Git - clang/log
clang
5 years ago[X86] Remove what little support we had for MPX
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

5 years agoAdded 'inline' to functions defined in headers to avoid ODR violations
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

5 years agoChanged FrontendActionFactory::create to return a std::unique_ptr
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

5 years agoRemoved a function declaration that doesn't have a definition
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

5 years agoFix variable ‘IsInitCapturePack’ set but not used warning. NFCI.
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

5 years agoRemoved `AnyFunctionDecl`, it is unused.
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

5 years agoRemoved two function declarations that don't have definitions
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

5 years ago[Index] Added a ShouldSkipFunctionBody callback to libIndex, and refactored clients...
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

5 years ago[Index] Stopped wrapping FrontendActions in libIndex and its users
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

5 years ago[Index] Moved the IndexDataConsumer::finish call into the IndexASTConsumer from Index...
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

5 years ago[CodeGen]: don't treat structures returned in registers as memory inputs
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

5 years ago[Index] Create PP callbacks in the ASTConsumer
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

5 years ago[OpenCL] Fix diagnosing enqueue_kernel call with too few args
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

5 years ago[Index] Marked a bunch of classes 'final'
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

5 years ago[Analyzer] Iterator Checkers - Make range errors and invalidated access fatal
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

5 years ago[Test][Time profiler] Fix test for python3
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

5 years agoRemoved dead code from clang/AST/NSAPI.h
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

5 years ago[x86] Adding support for some missing intrinsics: _mm512_cvtsi512_si32
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

5 years ago[Modules] Fix rebuilding an updated module for each of its consumers.
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

5 years agoFix a passing XFAIL test
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

5 years ago[analyzer] Fix more analyzer warnings on analyzer and libAnalysis.
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

5 years agoFix always_inline 'target' compatibility check code for Lambdas
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

5 years ago[CFG] Make representation of destructor calls more accurate.
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

5 years ago[analyzer] Fix analyzer warnings on analyzer.
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

5 years ago[analyzer] pr43036: Fix support for operator 'sizeof...'.
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

5 years ago[analyzer] Trust global initializers when analyzing main().
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

5 years agoTry fixing CRLF issues in Git with [clang-scan-deps] Minimizer: Correctly handle...
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

5 years ago[OPENMP][Analysis] Add analysis of the map clauses.
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

5 years agoDelete minimize_source_to_dependency_directives_invalid_error.c
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

5 years agoFixup build of clang-interpreter example after change in r370122.
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

5 years ago[Clang][Bundler] Do not require host triple for extracting device bundles
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

5 years agoRevert "Change the X86 datalayout to add three address spaces for 32 bit signed,"
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

5 years agoFix "commas at the end of enumerator lists are a C99-specific"
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

5 years ago[ObjC] Fix type checking for qualified id block parameters.
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

5 years agoRe-land [clang-scan-deps] Minimizer: Correctly handle multi-line content with CR...
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

5 years ago[preprocessor] Add an opportunity to retain excluded conditional blocks
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

5 years agoArrayRef'ized CompilerInvocation::CreateFromArgs
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

5 years ago[clang][Index][NFC] Move IndexDataConsumer default implementation
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

5 years ago[Clang][Bundler] Fix for a hang when unbundling fat binary
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

5 years agoDiagnose _Bool as a C99 extension.
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

5 years agoDebug Info: Support for DW_AT_export_symbols for anonymous structs
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

5 years agoAMDGPU: Always emit amdgpu-flat-work-group-size
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

5 years agoDiagnose both _Complex and _Imaginary as C99 extensions.
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

5 years ago[driver][xray] fix the macOS support checker by supporting -macos
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

5 years agoMove EH spec mismatches under -fms-compatibility
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

5 years agoChange the X86 datalayout to add three address spaces for 32 bit signed,
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

5 years agoUse FileEntryRef for PPCallbacks::HasInclude
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

5 years ago[RISCV] Set MaxAtomicInlineWidth and MaxAtomicPromoteWidth for RV32/RV64 targets...
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

5 years agoUpdate the SARIF exporter to SARIF 2.1
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

5 years agoReplace some custom C11 extension warnings with the generic warning.
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

5 years agoFix a SARIF exporter crash with macro expansions
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

5 years agoFix text range end columns in SARIF to be exclusive
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

5 years agoQuote the token being diagnosed for C11 extensions.
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

5 years agoSpeculatively fix the build bots after r370052.
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

5 years agoImplement codegen for MSVC unions with reference members.
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

5 years agoTesting commit access; NFC
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

5 years ago[ASTImporter] Fix name conflict handling with different strategies
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

5 years ago[clang] Ensure that statements, expressions and types are trivially destructible
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

5 years ago[clang] Ensure that comment classes are trivially destructible
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

5 years ago[ReleaseNotes] MemorySanitizer support of ASLR on FreeBSD
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

5 years ago[Driver] Add an option for createInvocationFromCommandLine to recover on errors
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

5 years agoRevert "[clang-scan-deps] Minimizer: Correctly handle multi-line content with CR...
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

5 years agoDon't lose the FoundDecl and template arguments for a DeclRefExpr in
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

5 years agoUse FileEntryRef for PPCallbacks::FileSkipped
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

5 years ago[clang-scan-deps] Skip UTF-8 BOM in source minimizer
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

5 years agoNFC: Make test work with or without assertions
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

5 years ago[clang-scan-deps] Minimizer: Correctly skip over double slashes in angle bracket...
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

5 years ago[clang-scan-deps] Minimizer: Correctly handle multi-line content with CR+LF line...
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

5 years agoPR42587: diagnose unexpanded uses of a pack parameter of a generic
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

5 years agohwasan, codegen: Keep more lifetime markers used for hwasan
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

5 years agomsan, codegen, instcombine: Keep more lifetime markers used for msan
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

5 years agoRevert r369843 "[Testing] Unbreak r369830"
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

5 years agoUpdating a test case that was missed in r369957.
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

5 years agoRemove unused variables.
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

5 years ago[DebugInfo] Add debug-entry-values test coverage, NFC
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

5 years agoFixing a weird copy-pasta to get bots back to green.
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

5 years agoContentCache: Drop getBuffer's dependency on SourceManager
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

5 years agoReword the C11 extension diagnostic.
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

5 years agoFix gen-cdb-fragment test for Windows
Alex Lorenz [Mon, 26 Aug 2019 20:02:40 +0000 (20:02 +0000)]
Fix gen-cdb-fragment test for Windows

Windows bots didn't seem to like the empty argument, so I rewrote the test.

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

5 years ago[Clang][Bundler] Use llvm-objcopy for creating fat object files
Sergey Dmitriev [Mon, 26 Aug 2019 19:48:43 +0000 (19:48 +0000)]
[Clang][Bundler] Use llvm-objcopy for creating fat object files

clang-offload-bundler currently uses partial linking for creating fat object files, but such technique cannot be used on Windows due to the absence of partial linking support in the linker. This patch changes implementation to use llvm-objcopy for merging device and host objects instead of doing partial linking. This is one step forward towards enabling OpenMP offload on Windows.

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

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

5 years agoDiagnose use of _Thread_local as an extension when not in C11 mode.
Aaron Ballman [Mon, 26 Aug 2019 19:44:07 +0000 (19:44 +0000)]
Diagnose use of _Thread_local as an extension when not in C11 mode.

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

5 years ago[OPENMP][NVPTX]Fix critical region codegen.
Alexey Bataev [Mon, 26 Aug 2019 19:07:48 +0000 (19:07 +0000)]
[OPENMP][NVPTX]Fix critical region codegen.

Summary:
Previously critical regions were emitted with the barrier making it a
worksharing construct though it is not. Also, it leads to incorrect
behavior in Cuda9+. Patch fixes this problem.

Reviewers: ABataev, jdoerfert

Subscribers: jholewinski, guansong, cfe-commits, grokos

Tags: #clang

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

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

5 years ago[msvc] Add necessary #include to make compiler intrinsics available.
Richard Smith [Mon, 26 Aug 2019 18:33:15 +0000 (18:33 +0000)]
[msvc] Add necessary #include to make compiler intrinsics available.

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

5 years agoFileManager: Use llvm::Expected in new getFileRef API
Duncan P. N. Exon Smith [Mon, 26 Aug 2019 18:29:51 +0000 (18:29 +0000)]
FileManager: Use llvm::Expected in new getFileRef API

`FileManager::getFileRef` is a modern API which we expect to convert to
over time.  We should modernize the error handling as well, using
`llvm::Expected` instead of `llvm::ErrorOr`, to help clients that care
about errors to ensure nothing is missed.

However, not all clients care.  I've also added another path for those
that don't:

- `FileEntryRef` is now copy- and move-assignable (using a pointer
  instead of a reference).
- `FileManager::getOptionalFileRef` returns an `llvm::Optional` instead
  of `llvm::Expected`.
- Added an `llvm::expectedToOptional` utility in case this is useful
  elsewhere.

https://reviews.llvm.org/D66705

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

5 years agoFix file header.
Richard Smith [Mon, 26 Aug 2019 18:21:13 +0000 (18:21 +0000)]
Fix file header.

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

5 years agoImprove behavior in the case of stack exhaustion.
Richard Smith [Mon, 26 Aug 2019 18:18:07 +0000 (18:18 +0000)]
Improve behavior in the case of stack exhaustion.

Summary:
Clang performs various recursive operations (such as template instantiation),
and may use non-trivial amounts of stack space in each recursive step (for
instance, due to recursive AST walks). While we try to keep the stack space
used by such steps to a minimum and we have explicit limits on the number of
such steps we perform, it's impractical to guarantee that we won't blow out the
stack on deeply recursive template instantiations on complex ASTs, even with
only a moderately high instantiation depth limit.

The user experience in these cases is generally terrible: we crash with
no hint of what went wrong. Under this patch, we attempt to do better:

 * Detect when the stack is nearly exhausted, and produce a warning with a
   nice template instantiation backtrace, telling the user that we might
   run slowly or crash.

 * For cases where we're forced to trigger recursive template
   instantiation in arbitrarily-deeply-nested contexts, check whether
   we're nearly out of stack space and allocate a new stack (by spawning
   a new thread) after producing the warning.

Reviewers: rnk, aaron.ballman

Subscribers: mgorny, cfe-commits

Tags: #clang

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

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

5 years ago[driver] add a new option `-gen-cdb-fragment-path` to emit
Alex Lorenz [Mon, 26 Aug 2019 17:59:41 +0000 (17:59 +0000)]
[driver] add a new option `-gen-cdb-fragment-path` to emit
a fragment of a compilation database for each compilation

This patch adds a new option called -gen-cdb-fragment-path to the driver,
which can be used to specify a directory path to which clang can emit a fragment
of a CDB for each compilation it needs to invoke.

This option emits the same CDB contents as -MJ, and will be ignored if -MJ is specified.

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

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

5 years agoFix use of invalidated iterator introduced by r369680.
Richard Smith [Mon, 26 Aug 2019 17:31:06 +0000 (17:31 +0000)]
Fix use of invalidated iterator introduced by r369680.

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

5 years ago[libclang][index][NFCi] Refactor machinery for skipping function bodies
Jan Korous [Mon, 26 Aug 2019 17:25:23 +0000 (17:25 +0000)]
[libclang][index][NFCi] Refactor machinery for skipping function bodies

Refactor machinery for skipping inline function bodies that have already
been parsed in other frontend actions.

Preparations for moving this code to libIndex.

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

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

5 years ago[NFC] Add comments to some bool arguments for better readability
Gabor Horvath [Mon, 26 Aug 2019 17:03:01 +0000 (17:03 +0000)]
[NFC] Add comments to some bool arguments for better readability

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

5 years agoFix -dA flag, it is not a preprocessor flag.
Erich Keane [Mon, 26 Aug 2019 17:00:13 +0000 (17:00 +0000)]
Fix -dA flag, it is not a preprocessor flag.

-dA was in the d_group, which is a preprocessor state dumping group.
However -dA is a debug flag to cause a verbose asm.  It was already
implemented to do the same thing as -fverbose-asm, so make it just be an
alias.

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

5 years agoclang-format: [JS] handle `as const`.
Martin Probst [Mon, 26 Aug 2019 15:37:05 +0000 (15:37 +0000)]
clang-format: [JS] handle `as const`.

Summary:
TypeScript 3.4 supports casting into a const type using `as const`:

    const x = {x: 1} as const;

Previously, clang-format would insert a space after the `const`. With
this patch, no space is inserted after the sequence `as const`.

Reviewers: krasimir

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[Wdocumentation] improve wording of a warning message
Dmitri Gribenko [Sun, 25 Aug 2019 18:20:18 +0000 (18:20 +0000)]
[Wdocumentation] improve wording of a warning message

Based on @davezarzycki remarks in D64696 improved the wording of the warning
message.

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

Patch by Mark de Wever.

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

5 years agoFileManager: Factor duplicated code in getBufferForFile, NFC
Duncan P. N. Exon Smith [Sun, 25 Aug 2019 01:18:35 +0000 (01:18 +0000)]
FileManager: Factor duplicated code in getBufferForFile, NFC

Incidentally, this also unifies the two versions (removing an
unnecessary call to `SmallString::c_str`).

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

5 years ago[OpenCL] Microoptimize OCL2Qual a bit
Benjamin Kramer [Sat, 24 Aug 2019 13:04:34 +0000 (13:04 +0000)]
[OpenCL] Microoptimize OCL2Qual a bit

Still not optimal, but makes clang 25k smaller.

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

5 years ago[analyzer] Analysis: Fix checker silencing
Csaba Dabis [Sat, 24 Aug 2019 12:17:49 +0000 (12:17 +0000)]
[analyzer] Analysis: Fix checker silencing

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

5 years ago[Testing] Unbreak r369830
David Zarzycki [Sat, 24 Aug 2019 08:12:51 +0000 (08:12 +0000)]
[Testing] Unbreak r369830

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

5 years agoPR42513: Enter the proper DeclContext before substituting into an
Richard Smith [Sat, 24 Aug 2019 02:30:00 +0000 (02:30 +0000)]
PR42513: Enter the proper DeclContext before substituting into an
default template argument expression.

We already did this for type template parameters and template template
parameters, but apparently forgot to do so for non-type template
parameters. This causes the substituted default argument expression to
be substituted in the proper context, and in particular to properly mark
its subexpressions as odr-used.

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

5 years agoRe-enable DependencyScannerTest on windows with the right fixes
Alex Lorenz [Sat, 24 Aug 2019 01:53:40 +0000 (01:53 +0000)]
Re-enable DependencyScannerTest on windows with the right fixes

It should now pass.

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

5 years agoNFC: Rename some sanitizer related lifetime checks
Vitaly Buka [Sat, 24 Aug 2019 01:31:38 +0000 (01:31 +0000)]
NFC: Rename some sanitizer related lifetime checks

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