]> granicus.if.org Git - clang/log
clang
8 years agoExtract out a function onto CodeGenModule for getting the map of
Eric Christopher [Wed, 11 Nov 2015 23:05:08 +0000 (23:05 +0000)]
Extract out a function onto CodeGenModule for getting the map of
features for a particular function, then use it to clean up some
code.

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

8 years ago[TLS on Darwin] change how we handle globals with linkonce or weak linkage.
Manman Ren [Wed, 11 Nov 2015 22:42:31 +0000 (22:42 +0000)]
[TLS on Darwin] change how we handle globals with linkonce or weak linkage.

This is about how we handle static member of a template. Before this commit,
we use internal linkage for the IR thread-local variable, which is inefficient.
With this commit, we will start to follow Itanium C++ ABI.

rdar://problem/23415206

Reviewed by John McCall.

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

8 years ago[CMake] Fixing passthrough for variables starting with COMPILER_RT
Chris Bieneman [Wed, 11 Nov 2015 21:53:08 +0000 (21:53 +0000)]
[CMake] Fixing passthrough for variables starting with COMPILER_RT

This allows COMPILER_RT_* variables to be passed from the top-level CMake into the external project when LLVM_BUILD_EXTERNAL_COMPILER_RT=On.

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

8 years ago[analyzer] Fix scan-build to handle missing output directories.
Devin Coughlin [Wed, 11 Nov 2015 20:39:03 +0000 (20:39 +0000)]
[analyzer] Fix scan-build to handle missing output directories.

Cwd::abs_path has a somewhat tricky semantics: if it's operand directory does not exist,
it'll return undefined (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=257568).
This may cause scan-build to silently ignore output directory (specified with -o) and
use /tmp instead of trying to create directory. This tiny patch fixes the problem.

A patch by Yury Gribov!

Differential Revision: http://reviews.llvm.org/D14535

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

8 years ago[SemaDeclCXX] Use isTemplateParamScope() rather than accessing raw bits.
Davide Italiano [Wed, 11 Nov 2015 20:06:35 +0000 (20:06 +0000)]
[SemaDeclCXX] Use isTemplateParamScope() rather than accessing raw bits.

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

8 years ago[Lit Test] Updated 26 Lit tests to be C++11 compatible.
Charles Li [Wed, 11 Nov 2015 19:34:47 +0000 (19:34 +0000)]
[Lit Test] Updated 26 Lit tests to be C++11 compatible.

Expected diagnostics have been expanded to vary by C++ dialect.
RUN line has also been expanded to: default, C++98/03 and C++11.

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

8 years ago[TLS] move setting tls_guard in tls_init.
Manman Ren [Wed, 11 Nov 2015 19:19:26 +0000 (19:19 +0000)]
[TLS] move setting tls_guard in tls_init.

We used to emit the store prior to branch in the entry block. To make it more
efficient, this commit moves it to the init block. We still mark as initialized
before initializing anything else.

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

8 years agoHiding the scan-build and scan-view projects under the Misc folder in IDEs instead...
Aaron Ballman [Wed, 11 Nov 2015 18:13:42 +0000 (18:13 +0000)]
Hiding the scan-build and scan-view projects under the Misc folder in IDEs instead of having them at the root view.

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

8 years agoSilencing a -Wreturn-type warning for control reaching the end of a non-void function.
Aaron Ballman [Wed, 11 Nov 2015 13:42:02 +0000 (13:42 +0000)]
Silencing a -Wreturn-type warning for control reaching the end of a non-void function.

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

8 years ago[ASan] Allow -fsanitize-recover=address.
Yury Gribov [Wed, 11 Nov 2015 10:45:48 +0000 (10:45 +0000)]
[ASan] Allow -fsanitize-recover=address.

Differential Revision: http://reviews.llvm.org/D14243

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

8 years agoMake test/Driver/biarch.c use FileCheck instead of grep
Artyom Skrobov [Wed, 11 Nov 2015 10:45:44 +0000 (10:45 +0000)]
Make test/Driver/biarch.c use FileCheck instead of grep

Summary:
For clarity and ease of maintenance, I suggest porting this test
to use the same tooling as the rest of the tests.

Reviewers: joerg, rengolin, dougk, yaron.keren

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D14548

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

8 years ago[X86] Add 'pause' builtin that's already in llvm and use it instead of inline assembl...
Craig Topper [Wed, 11 Nov 2015 08:13:33 +0000 (08:13 +0000)]
[X86] Add 'pause' builtin that's already in llvm and use it instead of inline assembly to implement _mm_pause.

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

8 years ago[X86] Use __builtin_ia32_paddq and __builtin_ia32_psubq to implement a couple intrins...
Craig Topper [Wed, 11 Nov 2015 08:00:41 +0000 (08:00 +0000)]
[X86] Use __builtin_ia32_paddq and __builtin_ia32_psubq to implement a couple intrinsics that were supposed to operate on MMX registers. Otherwise we end up operating on GPRs. Throw in a test for _mm_mul_su32 while I was there.

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

8 years ago[X86] Header formatting fixes. NFC
Craig Topper [Wed, 11 Nov 2015 08:00:39 +0000 (08:00 +0000)]
[X86] Header formatting fixes. NFC

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

8 years ago[X86] Add missing typecasts in intrinsic macros. This should make them more robust...
Craig Topper [Wed, 11 Nov 2015 03:47:10 +0000 (03:47 +0000)]
[X86] Add missing typecasts in intrinsic macros. This should make them more robust against inputs that aren't already the right type.

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

8 years ago[X86] Change pointer type in AVX2 gather builtins to be the scalar type instead of...
Craig Topper [Wed, 11 Nov 2015 02:51:18 +0000 (02:51 +0000)]
[X86] Change pointer type in AVX2 gather builtins to be the scalar type instead of the vector type. This matches gcc and removes extras casts.

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

8 years agoReorder the check strings in test case following r252692.
Akira Hatanaka [Wed, 11 Nov 2015 02:13:36 +0000 (02:13 +0000)]
Reorder the check strings in test case following r252692.

rdar://problem/19836465

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

8 years agoFix a FIXME about using std::is_sorted.
Eric Christopher [Wed, 11 Nov 2015 02:04:08 +0000 (02:04 +0000)]
Fix a FIXME about using std::is_sorted.

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

8 years agoAdd support for GCC's '__auto_type' extension, per the GCC manual:
Richard Smith [Wed, 11 Nov 2015 02:02:15 +0000 (02:02 +0000)]
Add support for GCC's '__auto_type' extension, per the GCC manual:
https://gcc.gnu.org/onlinedocs/gcc/Typeof.html

Differences from the GCC extension:
 * __auto_type is also permitted in C++ (but only in places where
   it could appear in C), allowing its use in headers that might
   be shared across C and C++, or used from C++98
 * __auto_type can be combined with a declarator, as with C++ auto
   (for instance, "__auto_type *p")
 * multiple variables can be declared in a single __auto_type
   declaration, with the C++ semantics (the deduced type must be
   the same in each case)

This patch also adds a missing restriction on applying typeof to
a bit-field, which GCC has historically rejected in C (due to
lack of clarity as to whether the operand should be promoted).
The same restriction also applies to __auto_type in C (in both
GCC and Clang).

This also fixes PR25449.

Patch by Nicholas Allegra!

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

8 years agoN3922: direct-list-initialization of an auto-typed variable no longer deduces a
Richard Smith [Wed, 11 Nov 2015 01:36:17 +0000 (01:36 +0000)]
N3922: direct-list-initialization of an auto-typed variable no longer deduces a
std::initializer_list<T> type. Instead, the list must contain a single element
and the type is deduced from that.

In Clang 3.7, we warned by default on all the cases that would change meaning
due to this change. In Clang 3.8, we will support only the new rules -- per
the request in N3922, this change is applied as a Defect Report against earlier
versions of the C++ standard.

This change is not entirely trivial, because for lambda init-captures we
previously did not track the difference between direct-list-initialization and
copy-list-initialization. The difference was not previously observable, because
the two forms of initialization always did the same thing (the elements of the
initializer list were always copy-initialized regardless of the initialization
style used for the init-capture).

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

8 years ago[static analyzer] Don't flag nil storage into NSMutableDictionary.
Anna Zaks [Wed, 11 Nov 2015 00:49:22 +0000 (00:49 +0000)]
[static analyzer] Don't flag nil storage into NSMutableDictionary.

This is now allowed and has the behavior of removing the mapping.

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

8 years agoDefine __unsafe_unretained and __autoreleasing in ObjC GC mode.
John McCall [Tue, 10 Nov 2015 23:00:25 +0000 (23:00 +0000)]
Define __unsafe_unretained and __autoreleasing in ObjC GC mode.

This was an accidental regression from the MRC __weak patch.

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

8 years agoFix build
Jonathan Roelofs [Tue, 10 Nov 2015 22:59:18 +0000 (22:59 +0000)]
Fix build

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

8 years agoImplement post-commit review feedback on r252662
Jonathan Roelofs [Tue, 10 Nov 2015 22:48:11 +0000 (22:48 +0000)]
Implement post-commit review feedback on r252662

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

8 years agoImplement the fix that r252641 should have been
Jonathan Roelofs [Tue, 10 Nov 2015 22:38:59 +0000 (22:38 +0000)]
Implement the fix that r252641 should have been

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

8 years ago[COFF] Don't try to emit weak aliases on COFF
Reid Kleckner [Tue, 10 Nov 2015 22:23:58 +0000 (22:23 +0000)]
[COFF] Don't try to emit weak aliases on COFF

This comes up when a derived class destructor is equivalent to a base
class destructor defined in the same TU, and we try to alias them.

A COFF weak alias cannot satisfy a normal undefined symbol reference
from another TU. The other TU must also mark the referenced symbol as
weak, and we can't rely on that.

Clang already has a special case here for dllexport, but we failed to
realize that the problem also applies to other non-discardable symbols
such as those from explicit template instantiations.

Fixes PR25477.

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

8 years agoImplement __attribute__((internal_linkage)).
Evgeniy Stepanov [Tue, 10 Nov 2015 21:28:44 +0000 (21:28 +0000)]
Implement __attribute__((internal_linkage)).

The attrubite is applicable to functions and variables and changes
the linkage of the subject to internal.

This is the same functionality as C-style "static", but applicable to
class methods; and the same as anonymouns namespaces, but can apply
to individual methods of a class.

Following the proposal in
http://lists.llvm.org/pipermail/cfe-dev/2015-October/045580.html

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

8 years ago[WebAssembly] Change long double to be quadruple-precision floating point.
Dan Gohman [Tue, 10 Nov 2015 21:01:46 +0000 (21:01 +0000)]
[WebAssembly] Change long double to be quadruple-precision floating point.

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

8 years agoFix missing CMake dependency introduced in r252474
Jonathan Roelofs [Tue, 10 Nov 2015 20:01:22 +0000 (20:01 +0000)]
Fix missing CMake dependency introduced in r252474

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

8 years agoAdd the variant of __sparc_v9__ with five underscores, not just four.
Joerg Sonnenberger [Tue, 10 Nov 2015 19:28:17 +0000 (19:28 +0000)]
Add the variant of __sparc_v9__ with five underscores, not just four.

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

8 years agoNo longer creating the install-clang target for IDEs, as it was never meant for those.
Aaron Ballman [Tue, 10 Nov 2015 12:51:25 +0000 (12:51 +0000)]
No longer creating the install-clang target for IDEs, as it was never meant for those.

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

8 years ago[Analyzer] Fix comments and formatting. NFC.
Sean Eveson [Tue, 10 Nov 2015 11:48:55 +0000 (11:48 +0000)]
[Analyzer] Fix comments and formatting. NFC.

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

8 years ago[X86] Use setzero instead of set1(0) in a few places in intrinsic headers.
Craig Topper [Tue, 10 Nov 2015 05:08:08 +0000 (05:08 +0000)]
[X86] Use setzero instead of set1(0) in a few places in intrinsic headers.

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

8 years ago[X86] Remove temporary variables from macros in x86 intrinsic headers. Prevents dupli...
Craig Topper [Tue, 10 Nov 2015 05:08:05 +0000 (05:08 +0000)]
[X86] Remove temporary variables from macros in x86 intrinsic headers. Prevents duplicate names appearing from multiple macro expansions. NFC

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

8 years ago[X86] Fix bad intrinsic header comment. NFC.
Craig Topper [Tue, 10 Nov 2015 05:08:00 +0000 (05:08 +0000)]
[X86] Fix bad intrinsic header comment. NFC.

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

8 years agoUse the generic Sparc CPU handling for Linux, FreeBSD and OpenBSD, too.
Joerg Sonnenberger [Tue, 10 Nov 2015 00:40:29 +0000 (00:40 +0000)]
Use the generic Sparc CPU handling for Linux, FreeBSD and OpenBSD, too.
This currently changes the default toward the more historic -Av8/-Av9,
but as discussed with James Y Knight, consistency is for now more
important than figuring out which default CPU each OS should be using.

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

8 years agoUse the normal switch over getArch() approach and not a long if chain.
Joerg Sonnenberger [Tue, 10 Nov 2015 00:23:12 +0000 (00:23 +0000)]
Use the normal switch over getArch() approach and not a long if chain.

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

8 years ago[Driver] Use platform-appropriate profiling libraries for WatchOS, TVOS
Vedant Kumar [Tue, 10 Nov 2015 00:20:34 +0000 (00:20 +0000)]
[Driver] Use platform-appropriate profiling libraries for WatchOS, TVOS

When adding profiling instrumentation, use libclang_rt.profile_tvos.a
for TVOS targets and libclang_rt.profile_watchos.a for WatchOS targets.

I've also fixed up a comment and added an assert() that prevents us from
defaulting to an incorrect platform.

Differential Revision: http://reviews.llvm.org/D14521

Reviewed-by: t.p.northover
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252558 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReorganise CPU handling for Sparc. When using -mcpu=v9 and co, __sparcv8
Joerg Sonnenberger [Mon, 9 Nov 2015 23:39:45 +0000 (23:39 +0000)]
Reorganise CPU handling for Sparc. When using -mcpu=v9 and co, __sparcv8
is not defined for 32bit mode, but __sparcv9 is. Pass down the correct
-target-cpu flags to the backend, so that instruction restrictions are
applied correctly. Pass down the correct -A flag when not using IAS.
The latter is limited to NetBSD targets in this commit.

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

8 years ago[CMake] Support passing CMAKE_VERBOSE_MAKEFILE through to bootstrap builds.
Chris Bieneman [Mon, 9 Nov 2015 22:43:10 +0000 (22:43 +0000)]
[CMake] Support passing CMAKE_VERBOSE_MAKEFILE through to bootstrap builds.

This option enables full verbosity in recursive CMake builds.

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

8 years agoExtend linux header search to find libc++ headers in c++/vN for any N.
Evgeniy Stepanov [Mon, 9 Nov 2015 21:10:54 +0000 (21:10 +0000)]
Extend linux header search to find libc++ headers in c++/vN for any N.

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

8 years agoAtomics: support __c11_* calls on _Atomic struct types.
Tim Northover [Mon, 9 Nov 2015 19:56:35 +0000 (19:56 +0000)]
Atomics: support __c11_* calls on _Atomic struct types.

When a struct's size is not a power of 2, the corresponding _Atomic() type is
promoted to the nearest. We already correctly handled normal C++ expressions of
this form, but direct calls to the __c11_atomic_whatever builtins ended up
performing dodgy operations on the smaller non-atomic types (e.g. memcpy too
much). Later optimisations removed this as undefined behaviour.

This patch converts EmitAtomicExpr to allocate its temporaries at the full
atomic width, sidestepping the issue.

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

8 years ago[analyzer] Fix assertion failure invalidating on const member function calls (PR25392).
Devin Coughlin [Mon, 9 Nov 2015 19:50:29 +0000 (19:50 +0000)]
[analyzer] Fix assertion failure invalidating on const member function calls (PR25392).

We now return early when the 'this' value cannot be converted to a MemRegion.

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

8 years agoMoving FileManager::removeDotPaths to llvm::sys::path::remove_dots
Mike Aizatsky [Mon, 9 Nov 2015 19:12:18 +0000 (19:12 +0000)]
Moving FileManager::removeDotPaths to llvm::sys::path::remove_dots

Differential Revision: http://reviews.llvm.org/D14394

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

8 years agoUse "auto" when the type name is redundant
Alexander Kornienko [Mon, 9 Nov 2015 17:53:06 +0000 (17:53 +0000)]
Use "auto" when the type name is redundant

Summary: Use "auto" when the type name is redundant

Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D14501

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

8 years agoFix the cmake build after r252474 broke it
Jonathan Roelofs [Mon, 9 Nov 2015 16:47:09 +0000 (16:47 +0000)]
Fix the cmake build after r252474 broke it

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

8 years agoAdjust printQualifiedName to handle unscoped enums in a way similar to anonymous...
Alexander Kornienko [Mon, 9 Nov 2015 16:45:17 +0000 (16:45 +0000)]
Adjust printQualifiedName to handle unscoped enums in a way similar to anonymous namespaces.

Patch by Sterling Augustine!

Differential revision: http://reviews.llvm.org/D14459

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

8 years agoCreate install targets for scan-build and scan-view
Jonathan Roelofs [Mon, 9 Nov 2015 16:12:56 +0000 (16:12 +0000)]
Create install targets for scan-build and scan-view

http://reviews.llvm.org/D14403

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

8 years agoFixing SPHINX warnings with incorrect indentations.
Aaron Ballman [Mon, 9 Nov 2015 15:24:09 +0000 (15:24 +0000)]
Fixing SPHINX warnings with incorrect indentations.

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

8 years ago[EABI] Add Clang support for -meabi flag
Renato Golin [Mon, 9 Nov 2015 12:40:41 +0000 (12:40 +0000)]
[EABI] Add Clang support for -meabi flag

The -meabi flag to control LLVM EABI version.

Without '-meabi' or with '-meabi default' imply LLVM triple default.
With '-meabi gnu' sets EABI GNU.
With '-meabi 4' or '-meabi 5' set EABI version 4 and 5 respectively.

A similar patch was introduced in LLVM.

Patch by Vinicius Tinti.

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

8 years ago[PGO] Code cleanup [NFC]
Xinliang David Li [Mon, 9 Nov 2015 00:04:16 +0000 (00:04 +0000)]
[PGO] Code cleanup [NFC]

Use interfaces defined in LLVM to create FuncName
and FuncNameVar.

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

8 years agoReplace tab with 8 spaces, NFC.
Yaron Keren [Sun, 8 Nov 2015 22:01:45 +0000 (22:01 +0000)]
Replace tab with 8 spaces, NFC.

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

8 years ago[analyzer] Update SATestBuild.py to enable a 'download and patch' model for projects.
Devin Coughlin [Sat, 7 Nov 2015 18:27:35 +0000 (18:27 +0000)]
[analyzer] Update SATestBuild.py to enable a 'download and patch' model for projects.

Currently the SATestBuild.py and SATestAdd.py buildbot scripts expect project
sources to be checked into the project repository. This commit changes these
scripts to additionally support a model where project sources are downloaded
rather than checked into the repository. Sometimes projects may need to be
modified (for example, to support a newer versions of clang), so the updated scripts
also allow for an optional patch file that will be applied to the downloaded
project source before analysis.

To support this workflow, this commit changes the expected layout of
a project in the repository. The project-specific helper scripts will stay
in the root of each project directory, but the benchmark source itself (if
checked into the repo) should now be stored in a subdirectory named
'CachedSource':

  project_name/
    cleanup_run_static_analyzer.sh [optional]
    run_static_analyzer.cmd [required]
    download_project.sh [optional]
    CachedSource/ [optional]
    changes_for_analyzer.patch [optional]

If the 'CachedSource' source directory is not present, the download script will
be executed. This script should download the project source into 'CachedSource'.
Then, if 'changes_for_analyzer.patch' is present its changes will
be applied to a copy of 'CachedSource' before analysis.

Differential Revision: http://reviews.llvm.org/D14345

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

8 years agoRemove spaces in empty line, NFC.
Yaron Keren [Sat, 7 Nov 2015 16:35:07 +0000 (16:35 +0000)]
Remove spaces in empty line, NFC.

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

8 years agoRemove spaces at start of line, NFC.
Yaron Keren [Sat, 7 Nov 2015 16:24:52 +0000 (16:24 +0000)]
Remove spaces at start of line, NFC.

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

8 years agoMake a couple methods static.
Craig Topper [Sat, 7 Nov 2015 08:08:34 +0000 (08:08 +0000)]
Make a couple methods static.

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

8 years agoMake SemaBuiltinCpuSupports a static function. NFC.
Craig Topper [Sat, 7 Nov 2015 08:08:31 +0000 (08:08 +0000)]
Make SemaBuiltinCpuSupports a static function. NFC.

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

8 years agoUse makeArrayRef instead of explicitly mentioning the type. NFC
Craig Topper [Sat, 7 Nov 2015 06:16:16 +0000 (06:16 +0000)]
Use makeArrayRef instead of explicitly mentioning the type. NFC

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

8 years agoFix indentation. NFC
Craig Topper [Sat, 7 Nov 2015 06:16:14 +0000 (06:16 +0000)]
Fix indentation. NFC

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

8 years agoUse regex in test case.
Akira Hatanaka [Sat, 7 Nov 2015 00:48:18 +0000 (00:48 +0000)]
Use regex in test case.

This is a follow-up to r252369.

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

8 years agoAdd support for function attribute 'not_tail_called'.
Akira Hatanaka [Fri, 6 Nov 2015 23:56:15 +0000 (23:56 +0000)]
Add support for function attribute 'not_tail_called'.

This attribute is used to prevent tail-call optimizations to the marked
function. For example, in the following piece of code, foo1 will not be
tail-call optimized:

int __attribute__((not_tail_called)) foo1(int);

int foo2(int a) {
  return foo1(a); // Tail-call optimization is not performed.
}

The attribute has effect only on statically bound calls. It has no
effect on indirect calls. Also, virtual functions and objective-c
methods cannot be marked as 'not_tail_called'.

rdar://problem/22667622

Differential Revision: http://reviews.llvm.org/D12922

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

8 years agoStaticAnalyzer: Remove implicit ilist iterator conversions, NFC
Duncan P. N. Exon Smith [Fri, 6 Nov 2015 23:04:58 +0000 (23:04 +0000)]
StaticAnalyzer: Remove implicit ilist iterator conversions, NFC

Remove implicit ilist iterator conversions from clangStaticAnalyzer.

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

8 years agoCodeGen: Remove implicit ilist iterator conversions, NFC
Duncan P. N. Exon Smith [Fri, 6 Nov 2015 23:00:41 +0000 (23:00 +0000)]
CodeGen: Remove implicit ilist iterator conversions, NFC

Make ilist iterator conversions explicit in clangCodeGen.  Eventually
I'll remove them everywhere.

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

8 years agoFixing line endings; NFC.
Aaron Ballman [Fri, 6 Nov 2015 15:34:03 +0000 (15:34 +0000)]
Fixing line endings; NFC.

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

8 years agoFollowup test failure fix for r252310 ("[tsan] Add Clang frontend support for TSan...
Kuba Brecka [Fri, 6 Nov 2015 15:20:30 +0000 (15:20 +0000)]
Followup test failure fix for r252310 ("[tsan] Add Clang frontend support for TSan on OS X").

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

8 years ago[tsan] Add Clang frontend support for TSan on OS X
Kuba Brecka [Fri, 6 Nov 2015 15:09:20 +0000 (15:09 +0000)]
[tsan] Add Clang frontend support for TSan on OS X

We're currently in process of porting TSan to OS X, and quite a few of the initial support in the runtime library has already landed in trunk. This patch actually enables "-fsanitize=thread" in the frontend.

Differential Revision: http://reviews.llvm.org/D14440

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

8 years agoFix __builtin_signbit for ppcf128 type
Petar Jovanovic [Fri, 6 Nov 2015 14:52:46 +0000 (14:52 +0000)]
Fix __builtin_signbit for ppcf128 type

Function__builtin_signbit returns wrong value for type ppcf128 on big endian
machines. This patch fixes how value is generated in that case.

Patch by Aleksandar Beserminji.

Differential Revision: http://reviews.llvm.org/D14149

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

8 years ago[analyzer] Add VforkChecker to find unsafe code in vforked process.
Yury Gribov [Fri, 6 Nov 2015 11:16:31 +0000 (11:16 +0000)]
[analyzer] Add VforkChecker to find unsafe code in vforked process.

This checker looks for unsafe constructs in vforked process:
function calls (excluding whitelist), memory write and returns.
This was originally motivated by a vfork-related bug in xtables package.

Patch by Yury Gribov.

Differential revision: http://reviews.llvm.org/D14014

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

8 years agoRefactor: Simplify boolean conditional return statements in lib/ARCMigrate
Alexander Kornienko [Fri, 6 Nov 2015 01:26:37 +0000 (01:26 +0000)]
Refactor: Simplify boolean conditional return statements in lib/ARCMigrate

Patch by Richard Thomson! (+a couple of modifications to address comments)

Differential revision: http://reviews.llvm.org/D10009

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

8 years agoRefactor: simplify boolean conditional return statements in lib/Analysis
Alexander Kornienko [Fri, 6 Nov 2015 01:08:38 +0000 (01:08 +0000)]
Refactor: simplify boolean conditional return statements in lib/Analysis

Patch by Richard Thomson!

Differential revision: http://reviews.llvm.org/D10008

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

8 years agoFix crash in EmitDeclMetadata mode
Keno Fischer [Thu, 5 Nov 2015 23:18:44 +0000 (23:18 +0000)]
Fix crash in EmitDeclMetadata mode

Summary: This fixes a bug that's easily encountered in LLDB
(https://llvm.org/bugs/show_bug.cgi?id=22875). The problem here is that we
mangle a name during debug info emission, but never actually emit the actual
Decl, so we run into problems in EmitDeclMetadata (which assumes such a Decl
exists). Fix that by just skipping metadata emissions for mangled names that
don't have associated Decls.

Reviewers: rjmccall

Subscribers: labath, cfe-commits

Differential Revision: http://reviews.llvm.org/D13959

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

8 years agoBetter link for Library Fundamentals TS.
Richard Smith [Thu, 5 Nov 2015 22:21:52 +0000 (22:21 +0000)]
Better link for Library Fundamentals TS.

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

8 years agoCodeGen: Update for debug info API change.
Peter Collingbourne [Thu, 5 Nov 2015 22:04:14 +0000 (22:04 +0000)]
CodeGen: Update for debug info API change.

Differential Revision: http://reviews.llvm.org/D14266

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

8 years agoFix incorrect status for P0012R1.
Richard Smith [Thu, 5 Nov 2015 21:42:32 +0000 (21:42 +0000)]
Fix incorrect status for P0012R1.

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

8 years agoFix CSS style name.
Richard Smith [Thu, 5 Nov 2015 21:42:07 +0000 (21:42 +0000)]
Fix CSS style name.

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

8 years agoUpdate C++ status page to match motions from Kona.
Richard Smith [Thu, 5 Nov 2015 21:41:06 +0000 (21:41 +0000)]
Update C++ status page to match motions from Kona.

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

8 years agoPR25368: Replace workaround for build failure with modules enabled with a fix
Richard Smith [Thu, 5 Nov 2015 21:16:22 +0000 (21:16 +0000)]
PR25368: Replace workaround for build failure with modules enabled with a fix
for the root cause. The 'using llvm::isa;' declaration in Basic/LLVM.h only
pulls the declarations of llvm::isa that were declared prior to it into
namespace clang. In a modules build, this is a hermetic set of just the
declarations from LLVM. In a non-modules build, we happened to also pull the
declaration from lib/CodeGen/Address.h into namespace clang, which made the
code in question accidentally compile.

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

8 years agoImprove macro dumping to preserve semantically-relevant spelling information.
Richard Smith [Thu, 5 Nov 2015 20:55:14 +0000 (20:55 +0000)]
Improve macro dumping to preserve semantically-relevant spelling information.

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

8 years ago[WebAssembly] Update wasm builtin functions to match spec changes.
Dan Gohman [Thu, 5 Nov 2015 20:16:37 +0000 (20:16 +0000)]
[WebAssembly] Update wasm builtin functions to match spec changes.

The page_size operator has been removed from the spec, and the resize_memory
operator has been changed to grow_memory.

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

8 years agoAfter some discussion, promote -fobjc-weak to a driver option.
John McCall [Thu, 5 Nov 2015 19:19:56 +0000 (19:19 +0000)]
After some discussion, promote -fobjc-weak to a driver option.

rdar://problem/23415863

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

8 years ago[analyzer] Update RegionStoreManager::getBinding to handle BlockDataRegions
Devin Coughlin [Thu, 5 Nov 2015 18:56:42 +0000 (18:56 +0000)]
[analyzer] Update RegionStoreManager::getBinding to handle BlockDataRegions

Update RegionStoreManager::getBinding() to return UnknownVal when trying to get
the binding for a BlockDataRegion. Previously, getBinding() would try to cast the
BlockDataRegion to a TypedValueRegion and crash. This happened when a block
was passed as a parameter to an inlined function for which
StackHintGeneratorForSymbol::getMessage() tried to generate a stack hint message.

rdar://problem/21291971

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

8 years ago[ARM] Clang gives unintended warning message for 'mthumb' + M-profiles:
Alexandros Lamprineas [Thu, 5 Nov 2015 17:11:55 +0000 (17:11 +0000)]
[ARM] Clang gives unintended warning message for 'mthumb' + M-profiles:

$ clang --target=armv7m-none-eabi -mthumb -march=armv7-m -c test.c
clang-3.8: warning: argument unused during compilation: '-mthumb'

Differential Revision: http://reviews.llvm.org/D14384

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

8 years agoAllow use of private headers in different sub-modules.
Manuel Klimek [Thu, 5 Nov 2015 15:24:47 +0000 (15:24 +0000)]
Allow use of private headers in different sub-modules.

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

8 years ago[x86] Additional small fix for MCU psABI support
Andrey Bokhanko [Thu, 5 Nov 2015 12:43:09 +0000 (12:43 +0000)]
[x86] Additional small fix for MCU psABI support

This patch fixes one more thing in MCU psABI support: LongDoubleWidth should be set to 64.

Differential Revision: http://reviews.llvm.org/D14285

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

8 years agoUse profile data template file for covmap func record (NFC)
Xinliang David Li [Thu, 5 Nov 2015 05:46:39 +0000 (05:46 +0000)]
Use profile data template file for covmap func record (NFC)

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

8 years agoMake ArgumentAdjuster aware of the current file being processed.
Alexander Kornienko [Thu, 5 Nov 2015 02:19:53 +0000 (02:19 +0000)]
Make ArgumentAdjuster aware of the current file being processed.

Summary:
This is needed to handle per-project configurations when adding extra
arguments in clang-tidy for example.

Reviewers: klimek, djasper

Subscribers: djasper, cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D14191

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

8 years agoTestModuleFileExtension.cpp: Include <cstdio> explicitly for fprintf(3).
NAKAMURA Takumi [Thu, 5 Nov 2015 01:34:19 +0000 (01:34 +0000)]
TestModuleFileExtension.cpp: Include <cstdio> explicitly for fprintf(3).

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

8 years ago[modules] Don't merge an anonymous enum definition into a named enum definition.
Richard Smith [Thu, 5 Nov 2015 01:30:19 +0000 (01:30 +0000)]
[modules] Don't merge an anonymous enum definition into a named enum definition.

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

8 years agoFix build break
David Majnemer [Thu, 5 Nov 2015 01:10:42 +0000 (01:10 +0000)]
Fix build break

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

8 years ago[Lex] Add __has_builtin support for __make_integer_seq
David Majnemer [Thu, 5 Nov 2015 01:01:47 +0000 (01:01 +0000)]
[Lex] Add __has_builtin support for __make_integer_seq

Differential Revision: http://reviews.llvm.org/D14349

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

8 years ago[modules] If we're given a module file, via -fmodule-file=, for a module, but
Richard Smith [Thu, 5 Nov 2015 00:54:55 +0000 (00:54 +0000)]
[modules] If we're given a module file, via -fmodule-file=, for a module, but
we can't load that file due to a configuration mismatch, and implicit module
building is disabled, and the user turns off the error-by-default warning for
that situation, then fall back to textual inclusion for the module rather than
giving an error if any of its headers are included.

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

8 years agoFix nullptr crash in -Wthread-safety-beta
Reid Kleckner [Thu, 5 Nov 2015 00:24:01 +0000 (00:24 +0000)]
Fix nullptr crash in -Wthread-safety-beta

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

8 years agoThe control expression for a _Generic selection expression should have
Aaron Ballman [Thu, 5 Nov 2015 00:06:05 +0000 (00:06 +0000)]
The control expression for a _Generic selection expression should have
its type decayed and qualifiers stripped when determining which
selection it matches. Fixes PR16340.

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

8 years agoclang-format: Turn on wrapping before "else" for WebKit style.
Daniel Jasper [Wed, 4 Nov 2015 22:49:32 +0000 (22:49 +0000)]
clang-format: Turn on wrapping before "else" for WebKit style.

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

8 years agoFix some Clang-tidy modernize warnings, other minor fixes.
Eugene Zelenko [Wed, 4 Nov 2015 21:37:17 +0000 (21:37 +0000)]
Fix some Clang-tidy modernize warnings, other minor fixes.

Differential revision: http://reviews.llvm.org/D14311

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

8 years ago[analyzer] Add 'optin' checker package and move localizability checkers into it.
Devin Coughlin [Wed, 4 Nov 2015 21:33:41 +0000 (21:33 +0000)]
[analyzer] Add 'optin' checker package and move localizability checkers into it.

This commit creates a new 'optin' top-level checker package and moves several of
the localizability checkers into it.

This package is for checkers that are not alpha and that would normally be on by
default but where the driver does not have enough information to determine when
they are applicable. The localizability checkers fit this criterion because the
driver cannot determine whether a project is localized or not -- this is best
determined at the IDE or build-system level.

This new package is *not* intended for checkers that are too noisy to be on by
default.

The hierarchy under 'optin' mirrors that in 'alpha': checkers under 'optin'
should be organized in the hierarchy they would have had if they were truly top
level (e.g., optin.osx.cocoa.MyOptInChecker).

Differential Revision: http://reviews.llvm.org/D14303

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

8 years agoFixed a link.
Alexander Kornienko [Wed, 4 Nov 2015 19:42:17 +0000 (19:42 +0000)]
Fixed a link.

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

8 years agoFixed header levels.
Alexander Kornienko [Wed, 4 Nov 2015 19:40:05 +0000 (19:40 +0000)]
Fixed header levels.

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

8 years agoRemoved mentions of clang-modernize, added a short description of clang-tidy.
Alexander Kornienko [Wed, 4 Nov 2015 19:34:55 +0000 (19:34 +0000)]
Removed mentions of clang-modernize, added a short description of clang-tidy.

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

8 years ago[modules] Generalize the workaround for multiple ambiguous definitions of
Richard Smith [Wed, 4 Nov 2015 19:26:32 +0000 (19:26 +0000)]
[modules] Generalize the workaround for multiple ambiguous definitions of
internal linkage entities in different modules from r250884 to apply to all
names, not just function names.

This is really awkward: we don't want to merge internal-linkage symbols from
separate modules, because they might not actually be defining the same entity.
But we don't want to reject programs that use such an ambiguous symbol if those
internal-linkage symbols are in fact equivalent. For now, we're resolving the
ambiguity by picking one of the equivalent definitions as an extension.

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