]> granicus.if.org Git - clang/log
clang
10 years agoModules: Make missing headers in a module.map a warning not an error.
Daniel Jasper [Mon, 16 Dec 2013 14:53:57 +0000 (14:53 +0000)]
Modules: Make missing headers in a module.map a warning not an error.

Instead, mark the module as unavailable so that clang errors as soon as
someone tries to build this module.

A better long-term strategy might be to not stat the header files at all
while reading the module map and instead read them only when the module
is being built (there is a corresponding FIXME in parseHeaderDecl()).
However, it seems non-trivial to get there and this would be a temporary
solution to unblock us.

Also changed the implementation to reuse the same DiagnosticsEngine as
otherwise warnings can't be enabled or disabled with command-line flags.

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

10 years agoAlways break before the colon in constructor initializers, when
Alexander Kornienko [Mon, 16 Dec 2013 14:35:51 +0000 (14:35 +0000)]
Always break before the colon in constructor initializers, when
BreakConstructorInitializersBeforeComma is true.

This option is used in WebKit style, so this also ensures initializer lists are
not put on a single line, as per the WebKit coding guidelines.

Patch by Florian Sowade!

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

10 years agoAdded -iregex for case-insensitive regex to filter file names.
Alexander Kornienko [Mon, 16 Dec 2013 10:57:30 +0000 (10:57 +0000)]
Added -iregex for case-insensitive regex to filter file names.

Summary:
-regex and -iregex both mimic options of the find utility.
Made the default list of extensions case-insensitive, so that it's not only C
and CPP extensions are accepted in upper case.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2415

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

10 years agoclang-format: Fix formatting of function type parameters.
Daniel Jasper [Mon, 16 Dec 2013 08:36:18 +0000 (08:36 +0000)]
clang-format: Fix formatting of function type parameters.

Before:
  void f() { typedef void (*f)(int * a); }
After:
  void f() { typedef void (*f)(int *a); }

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

10 years agoclang-format: Improve handling of raw string literals.
Daniel Jasper [Mon, 16 Dec 2013 07:23:08 +0000 (07:23 +0000)]
clang-format: Improve handling of raw string literals.

Especially try to keep existing line breaks before raw string literals,
as the code author might have aligned content to it.

Thereby, clang-format now keeps things like:

  parseStyle(R"(
      BasedOnStyle: Google,
      ColumnLimit: 100)");
  parseStyle(
      R"(BasedOnStyle: Google,
         ColumnLimit: 100)");

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

10 years agoStop crashing on empty asm input constraints
Duncan P. N. Exon Smith [Mon, 16 Dec 2013 03:20:06 +0000 (03:20 +0000)]
Stop crashing on empty asm input constraints

An empty string for an ASM input constraint is invalid, and will crash
during clang CodeGen.  Change TargetInfo::validateInputConstraint to
reject an empty string.

<rdar://problem/15552191>

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

10 years agoAdd tests for all DescriptionString in Targets.cpp.
Rafael Espindola [Sun, 15 Dec 2013 17:53:44 +0000 (17:53 +0000)]
Add tests for all DescriptionString in Targets.cpp.

These right now just test that the same string is present in two files, but will
become more useful as clang's handling of DataLayout is refactored.

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

10 years agoDelete dead code.
Rafael Espindola [Sun, 15 Dec 2013 17:21:28 +0000 (17:21 +0000)]
Delete dead code.

This is always overwritten by the one in NaClTargetInfo.

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

10 years agoRemove unused diagnostic.
Benjamin Kramer [Sun, 15 Dec 2013 14:51:00 +0000 (14:51 +0000)]
Remove unused diagnostic.

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

10 years agoAllow target-specific attributes to share a spelling between different attributes...
Aaron Ballman [Sun, 15 Dec 2013 13:05:48 +0000 (13:05 +0000)]
Allow target-specific attributes to share a spelling between different attributes via the ParseKind field. Attributes will be given a common parsed attribute identifier (the AttributeList::AT_* enum), but retain distinct Attr subclasses.

This new functionality is used to implement the ARM and MSP430 interrupt attribute.

Patch reviewed by Richard Smith over IRC.

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

10 years agoASTContext: Declare builtin types implicitly
Alp Toker [Sun, 15 Dec 2013 10:36:26 +0000 (10:36 +0000)]
ASTContext: Declare builtin types implicitly

__builtin_va_list and friends have been showing up where they shouldn't for way
to long, making unwanted appearences in -ast-print, tooling and source level
visitors and even the hello world tutorial on the clang website.

This commit factors down the implicit typedef and record creation facilities to
ensure they're marked implicit.

Also fixes a unit test that was testing incorrect behaviour, and removes old
hacks in the DeclPrinter that tried to skip implicit declarations manually.

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

10 years agoLexer: Issue -Wbackslash-newline-escape for line comments
Alp Toker [Sat, 14 Dec 2013 23:32:31 +0000 (23:32 +0000)]
Lexer: Issue -Wbackslash-newline-escape for line comments

The warning for backslash and newline separated by whitespace was missed in
this code path.

backslash<whitespace><newline> is handled differently from compiler to compiler
so it's important to warn consistently where there's ambiguity.

Matches similar handling of block comments and non-comment lines.

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

10 years agoFix test containing backslash and newline separated by space
Alp Toker [Sat, 14 Dec 2013 23:32:27 +0000 (23:32 +0000)]
Fix test containing backslash and newline separated by space

This was silently accepted by clang without warning due to a lexer bug.

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

10 years agoAdd triple to CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp in MS ABI mode
Hans Wennborg [Sat, 14 Dec 2013 17:04:17 +0000 (17:04 +0000)]
Add triple to CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp in MS ABI mode

I don't think we should need a triple, but this allows us to run the test
until we fix it (PR18251).

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

10 years agoCompilationDatabase.cpp:stripPositionalArgs(): Match not "no-integrated-as" but ...
NAKAMURA Takumi [Sat, 14 Dec 2013 06:03:28 +0000 (06:03 +0000)]
CompilationDatabase.cpp:stripPositionalArgs(): Match not "no-integrated-as" but "-no-integrated-as", it really fixes r197229.

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

10 years agoRemove 'not' from some CodeGen tests
Alp Toker [Sat, 14 Dec 2013 04:49:06 +0000 (04:49 +0000)]
Remove 'not' from some CodeGen tests

These were just missing an expected-no-diagnostics directive.

Also add -std=c++11 to a test warning noisly about extensions.

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

10 years agoPR18246: When performing template argument deduction to decide which template
Richard Smith [Sat, 14 Dec 2013 03:18:05 +0000 (03:18 +0000)]
PR18246: When performing template argument deduction to decide which template
is specialized by an explicit specialization, start from the first declaration
in case we've got a member of a class template (redeclarations might not number
the template parameters the same way).

Our recover here is still far from ideal.

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

10 years ago[objc] Add a test to make sure that a class can add a secondary initializer via a...
Argyrios Kyrtzidis [Sat, 14 Dec 2013 02:16:41 +0000 (02:16 +0000)]
[objc] Add a test to make sure that a class can add a secondary initializer via a category
and still inherit the designated initializers of its super class.

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

10 years agoRevert "Don't require -re suffix on -verify directives with regexes."
Alp Toker [Sat, 14 Dec 2013 01:07:05 +0000 (01:07 +0000)]
Revert "Don't require -re suffix on -verify directives with regexes."

This patch was submitted to the list for review and didn't receive a LGTM.

(In fact one explicit objection and one query were raised.)

This reverts commit r197295.

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

10 years agoPR18232: implement instantiation for class-scope explicit specializations of
Richard Smith [Sat, 14 Dec 2013 01:04:22 +0000 (01:04 +0000)]
PR18232: implement instantiation for class-scope explicit specializations of
class templates (a Microsoft extension).

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

10 years agoDon't require -re suffix on -verify directives with regexes.
Hans Wennborg [Sat, 14 Dec 2013 00:46:53 +0000 (00:46 +0000)]
Don't require -re suffix on -verify directives with regexes.

Differential Revision: http://llvm-reviews.chandlerc.com/D2392

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

10 years agoQuick-Fix pointer arithmetic when performing multi-D new-array initialization.
Faisal Vali [Sat, 14 Dec 2013 00:40:05 +0000 (00:40 +0000)]
Quick-Fix pointer arithmetic when performing multi-D new-array initialization.

clang still doesn't emit the right llvm code when initializing multi-D arrays it seems.

For e.g. the following code would still crash for me on Windows 7, 64 bit:

auto f4 = new int[100][200][300]{{{1,2,3}, {4, 5, 6}}, {{10, 20, 30}}};

It seems that the final new loop that iterates through each outermost array and memsets it to zero gets confused with its final ptr arithmetic.

This patch ensures that it converts the pointer to the allocated type (int [200][300]) before incrementing it (instead of using the base type: 'int').

Richard somewhat squeamishly approved the patch (as a quick fix to potentially make it into 3.4) - while exhorting for a more optimized fix in the future. http://llvm-reviews.chandlerc.com/D2398

Thanks Richard!

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

10 years agoPrepare for using MS ABI by default for Win32: update CodeGenCXX tests
Hans Wennborg [Fri, 13 Dec 2013 22:43:52 +0000 (22:43 +0000)]
Prepare for using MS ABI by default for Win32: update CodeGenCXX tests

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

10 years agoAdd a testcase and a FIXME for an accepts-invalid.
Richard Smith [Fri, 13 Dec 2013 22:28:48 +0000 (22:28 +0000)]
Add a testcase and a FIXME for an accepts-invalid.

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

10 years agoDetabify and fix formatting.
Richard Smith [Fri, 13 Dec 2013 22:26:20 +0000 (22:26 +0000)]
Detabify and fix formatting.

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

10 years agoConsolidate DataLayout string testing in one file.
Rafael Espindola [Fri, 13 Dec 2013 21:49:53 +0000 (21:49 +0000)]
Consolidate DataLayout string testing in one file.

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

10 years agoRemove an unused parameter and include after r197273
Alp Toker [Fri, 13 Dec 2013 21:19:30 +0000 (21:19 +0000)]
Remove an unused parameter and include after r197273

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

10 years agoEliminate BinaryTypeTraitExpr
Alp Toker [Fri, 13 Dec 2013 20:49:58 +0000 (20:49 +0000)]
Eliminate BinaryTypeTraitExpr

There's nothing special about type traits accepting two arguments.

This commit eliminates BinaryTypeTraitExpr and switches all related handling
over to TypeTraitExpr.

Also fixes a CodeGen failure with variadic type traits appearing in a
non-constant expression.

The BTT/TT prefix and evaluation code is retained as-is for now but will soon
be further cleaned up.

This is part of the ongoing work to unify type traits.

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

10 years agoDelete dead code.
Rafael Espindola [Fri, 13 Dec 2013 20:27:54 +0000 (20:27 +0000)]
Delete dead code.

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

10 years agoConvert test to FileCheck.
Rafael Espindola [Fri, 13 Dec 2013 20:11:02 +0000 (20:11 +0000)]
Convert test to FileCheck.

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

10 years agoEvery target sets DescriptionString. Assert that.
Rafael Espindola [Fri, 13 Dec 2013 19:56:31 +0000 (19:56 +0000)]
Every target sets DescriptionString. Assert that.

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

10 years agoConvert test to FileCheck
Rafael Espindola [Fri, 13 Dec 2013 19:44:40 +0000 (19:44 +0000)]
Convert test to FileCheck

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

10 years agoObjective-C. Remove obsolete option from test.
Fariborz Jahanian [Fri, 13 Dec 2013 19:06:55 +0000 (19:06 +0000)]
Objective-C. Remove obsolete option from test.
// rdar://15641300

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

10 years agoUse a: and s: instead of a0: and s0: in the DataLayout strings.
Rafael Espindola [Fri, 13 Dec 2013 18:40:15 +0000 (18:40 +0000)]
Use a: and s: instead of a0: and s0: in the DataLayout strings.

They are equivalent and the size of 'a' and 's' is unused.

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

10 years agoTighten test regexes checking for __attribute__((thiscall)) on function types.
Hans Wennborg [Fri, 13 Dec 2013 18:34:23 +0000 (18:34 +0000)]
Tighten test regexes checking for __attribute__((thiscall)) on function types.

The tests were perhaps made too relaxed in r197164 when we switched to the new
MinGW ABI. This makes sure we check explicitly for an optional thiscall
attribute and nothing else.

We should still look into whether we should print these attributes at all in
these cases.

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

10 years agoObjective-C. Do not issue warning when 'readonly'
Fariborz Jahanian [Fri, 13 Dec 2013 18:19:59 +0000 (18:19 +0000)]
Objective-C. Do not issue warning when 'readonly'
property declaration has a memory management
attribute (retain, copy, etc.). Sich properties
are usually overridden to become 'readwrite'
via a class extension (which require the memory
management attribute specified). In the absence of class
extension override, memory management attribute is
needed to produce correct Code Gen. for the
property getter in any case and this warning becomes
confusing to user. // rdar://15641300

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

10 years agoConvert test to FileCheck and make it more strict.
Rafael Espindola [Fri, 13 Dec 2013 17:47:34 +0000 (17:47 +0000)]
Convert test to FileCheck and make it more strict.

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

10 years ago[analyzer] Add -analyzer-config to scan-build.
Jordan Rose [Fri, 13 Dec 2013 17:16:28 +0000 (17:16 +0000)]
[analyzer] Add -analyzer-config to scan-build.

-analyzer-config options are now passed from scan-build through to
ccc-analyzer and then to clang.

Patch by Daniel Connelly!

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

10 years agoFix raw lex crash and -frewrite-includes noeol-at-eof failure
Alp Toker [Fri, 13 Dec 2013 17:04:55 +0000 (17:04 +0000)]
Fix raw lex crash and -frewrite-includes noeol-at-eof failure

Raw lexers don't have a preprocessor so we need to null check.

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

10 years ago[OpenCL] Produce an error when the work group and vec type hint attributes
Joey Gouly [Fri, 13 Dec 2013 16:15:28 +0000 (16:15 +0000)]
[OpenCL] Produce an error when the work group and vec type hint attributes
are used on non-kernel functions.

Reviewed by Aaron over IRC!

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

10 years agoAdd a clang side test for pr18235 too.
Rafael Espindola [Fri, 13 Dec 2013 16:11:31 +0000 (16:11 +0000)]
Add a clang side test for pr18235 too.

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

10 years agoARM MachO embedded: fix test without FileCheck line
Tim Northover [Fri, 13 Dec 2013 16:05:12 +0000 (16:05 +0000)]
ARM MachO embedded: fix test without FileCheck line

Well, that's one way to pass a test, I suppose. Unfortunately actually doing
the testing means I didn't pass all I thought (embedded v7a is not supported,
apparently). I'll deal with that with the move to -none-macho rather than
putting heinous hacks in right now.

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

10 years agoclang-check to ignore -no-integrated-as because certain drivers can't handle it
Artyom Skrobov [Fri, 13 Dec 2013 13:43:48 +0000 (13:43 +0000)]
clang-check to ignore -no-integrated-as because certain drivers can't handle it

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

10 years agoMove the input files for the unnecessary-module-map-parsing test to Inputs.
Manuel Klimek [Fri, 13 Dec 2013 10:08:24 +0000 (10:08 +0000)]
Move the input files for the unnecessary-module-map-parsing test to Inputs.

Needed to change rename.m to set the right include path so we don't
import a broken module due to recursive module checking.

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

10 years agoMove comment to its rightful place
Renato Golin [Fri, 13 Dec 2013 09:27:34 +0000 (09:27 +0000)]
Move comment to its rightful place

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

10 years agoRefine 'objc_protocol_requires_explicit_implementation' attribute to better handle...
Ted Kremenek [Fri, 13 Dec 2013 06:26:14 +0000 (06:26 +0000)]
Refine 'objc_protocol_requires_explicit_implementation' attribute to better handle indirect protocols.

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

10 years agoMake 'CheckProtocolMethodDefs' a static function.
Ted Kremenek [Fri, 13 Dec 2013 06:26:10 +0000 (06:26 +0000)]
Make 'CheckProtocolMethodDefs' a static function.

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

10 years agoChange 'method X in protocol not implemented' warning to include the name of the...
Ted Kremenek [Fri, 13 Dec 2013 05:58:51 +0000 (05:58 +0000)]
Change 'method X in protocol not implemented' warning to include the name of the protocol.

This removes an extra "note:", which wasn't really all that more useful
and overall reduces the diagnostic spew for this case.

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

10 years agoMake 'WarnUndefinedMethod' a static function.
Ted Kremenek [Fri, 13 Dec 2013 05:58:44 +0000 (05:58 +0000)]
Make 'WarnUndefinedMethod' a static function.

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

10 years ago[objc] If we don't know for sure what the designated initializers of the superclass...
Argyrios Kyrtzidis [Fri, 13 Dec 2013 03:48:17 +0000 (03:48 +0000)]
[objc] If we don't know for sure what the designated initializers of the superclass are,
assume that a [super init..] inside a designated initializer also refers to a designated one
and do not warn.

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

10 years ago[-cxx-abi microsoft] Remove trailing spaces from the mangler
David Majnemer [Fri, 13 Dec 2013 01:06:04 +0000 (01:06 +0000)]
[-cxx-abi microsoft] Remove trailing spaces from the mangler

No functional change, just a tidying up.

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

10 years agoAST: Update URL for Itanium ABI spec
David Majnemer [Fri, 13 Dec 2013 00:54:42 +0000 (00:54 +0000)]
AST: Update URL for Itanium ABI spec

The old URL hasn't worked for quite some time.  While we are here, also
change the link so that it will send us straight to the mangling portion
of the ABI doc.

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

10 years agoMove C++ destructor emission into CGCXXABI
Reid Kleckner [Fri, 13 Dec 2013 00:53:54 +0000 (00:53 +0000)]
Move C++ destructor emission into CGCXXABI

No functionality change.  Only Itanium C++ destructors have implicit VTT
parameters.

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

10 years ago[-cxx-abi microsoft] Add commentary for mangleStaticGuardVariable
David Majnemer [Fri, 13 Dec 2013 00:52:45 +0000 (00:52 +0000)]
[-cxx-abi microsoft] Add commentary for mangleStaticGuardVariable

We will need to do some work here if we want to play nice with MSVC2013.
Add a TODO indicating what changed and why this matters.

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

10 years agoRevert "[-cxx-abi microsoft] Mangle reference temporaries"
David Majnemer [Fri, 13 Dec 2013 00:39:38 +0000 (00:39 +0000)]
Revert "[-cxx-abi microsoft] Mangle reference temporaries"

This reverts commit r197184.

Richard Smith brings up some good points, a proper implementation will
require us to mangle unnameable entities compatibly with MSVC.

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

10 years agoRemove getVTT* in favor of getStructorImplicitParameter*
Reid Kleckner [Fri, 13 Dec 2013 00:09:59 +0000 (00:09 +0000)]
Remove getVTT* in favor of getStructorImplicitParameter*

No functionality change.  The only remaining uses were in ItaniumCXXABI,
which knows the implicit parameter is a VTT.

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

10 years agoEnhance "auto synthesis will not synthesize property in protocol" to include property...
Ted Kremenek [Thu, 12 Dec 2013 23:40:14 +0000 (23:40 +0000)]
Enhance "auto synthesis will not synthesize property in protocol" to include property and protocol name.

Implements <rdar://problem/15617839>.

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

10 years ago[ms-abi] Fixing bitfields sema arror for ms-mode
Warren Hunt [Thu, 12 Dec 2013 23:23:28 +0000 (23:23 +0000)]
[ms-abi] Fixing bitfields sema arror for ms-mode

The check for bitfields that are longer than their base type needed to
be checked in microsoft mode (cl.exe does not support the C++ extnetion
for bitfields longer than their type).

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

10 years agoPR18229: Fix typo in assert condition.
Richard Smith [Thu, 12 Dec 2013 23:14:16 +0000 (23:14 +0000)]
PR18229: Fix typo in assert condition.

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

10 years ago[-cxx-abi microsoft] Mangle reference temporaries
David Majnemer [Thu, 12 Dec 2013 23:12:01 +0000 (23:12 +0000)]
[-cxx-abi microsoft] Mangle reference temporaries

They are mangled the same as normal references, nothing special is going
on here.

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

10 years ago[ms-abi] Refactoring Non-virtual base layout in record layout
Warren Hunt [Thu, 12 Dec 2013 22:33:37 +0000 (22:33 +0000)]
[ms-abi] Refactoring Non-virtual base layout in record layout

This refactor addresses bugzilla bug 18167 and simplifies the code at
the same time.  Also I add a test case for the bug.  Also I make a
non-functional change to the basic layout lit tests to make them more
reliable (using CHECK-NEXT instead of CHECK).

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

10 years agoReplace use of Triple::getEnvironmentName with the simpler
Joerg Sonnenberger [Thu, 12 Dec 2013 21:29:27 +0000 (21:29 +0000)]
Replace use of Triple::getEnvironmentName with the simpler
Triple::getEnvironment.

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

10 years agoUnify type trait parsing
Alp Toker [Thu, 12 Dec 2013 21:23:03 +0000 (21:23 +0000)]
Unify type trait parsing

Type trait parsing is all over the place at the moment with unary, binary and
n-ary C++11 type traits that were developed independently at different points
in clang's history.

There's no good reason to handle them separately -- there are three parsers,
three AST nodes and lots of duplicated handling code with slightly different
implementations and diags for each kind.

This commit unifies parsing of type traits and sets the stage for further
consolidation.

No change in behaviour other than more consistent error recovery.

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

10 years agoWith the new update to the ABI, we should not look for installations
Yaron Keren [Thu, 12 Dec 2013 20:30:41 +0000 (20:30 +0000)]
With the new update to the ABI, we should not look for installations
of MinGW older than 4.7 with incompatible C++ libraries.

This patch makes clang look for all MinGW versions from 4.7:

  4.7.0, 4.7.1, 4.7.2, 4.7.3
  4.8.0, 4.8.1, 4.8.2.

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

10 years agoMake this test pass on Release builds.
Rafael Espindola [Thu, 12 Dec 2013 16:15:25 +0000 (16:15 +0000)]
Make this test pass on Release builds.

On Assert builds the "call" was matching the variable name in
%call = call ...

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

10 years ago[Modules] Don't parse any module map if modules are disabled.
Argyrios Kyrtzidis [Thu, 12 Dec 2013 16:08:33 +0000 (16:08 +0000)]
[Modules] Don't parse any module map if modules are disabled.

Fixes rdar://15644663.

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

10 years agoSwitch to the new MingW ABI.
Rafael Espindola [Thu, 12 Dec 2013 16:07:11 +0000 (16:07 +0000)]
Switch to the new MingW ABI.

GCC 4.7 changed the MingW ABI. On the clang side this means that methods now
have the thiscall calling convention by default.

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

10 years agoAvoid temporary std::string.
Rafael Espindola [Thu, 12 Dec 2013 15:48:19 +0000 (15:48 +0000)]
Avoid temporary std::string.

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

10 years agoDon't return a pointer to a temporary std::string's c_str.
Rafael Espindola [Thu, 12 Dec 2013 15:39:05 +0000 (15:39 +0000)]
Don't return a pointer to a temporary std::string's c_str.

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

10 years agoSimple refactoring to eliminate single-use local variable
Bernard Ogden [Thu, 12 Dec 2013 13:27:15 +0000 (13:27 +0000)]
Simple refactoring to eliminate single-use local variable

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

10 years agoRefactor duplicate functions
Bernard Ogden [Thu, 12 Dec 2013 13:27:11 +0000 (13:27 +0000)]
Refactor duplicate functions

getARMCPU and getLLVMArchSuffixForARM existed as very similar functions
in both ToolChain.cpp and Tools.cpp. Create a single implementation of
each in Tools.cpp, eliminate the duplicate and share via Tools.h.

Creates an 'arm' namespace in Tools.h to be used by any ARM-targetting tools.

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

10 years agoMake thumb the default instruction set for v7m and v7em
Bernard Ogden [Thu, 12 Dec 2013 13:27:04 +0000 (13:27 +0000)]
Make thumb the default instruction set for v7m and v7em

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

10 years agoFix -mthumb resetting of target cpu
Bernard Ogden [Thu, 12 Dec 2013 13:26:59 +0000 (13:26 +0000)]
Fix -mthumb resetting of target cpu

Passing -mthumb with no explicit CPU on the command line
resulted in target CPU changing from the architecture
default to arm7tdmi. Now it does not.

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

10 years agoSuppress -Wshadow / -Wold-style-cast expanded from system header macros
Alp Toker [Thu, 12 Dec 2013 12:47:48 +0000 (12:47 +0000)]
Suppress -Wshadow / -Wold-style-cast expanded from system header macros

Thanks to Jonathan Sauer for providing initial test cases.

Fixes PR16093 and PR18147.

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

10 years agoDarwin-embedded: find correct libclang_rt for embedded targets.
Tim Northover [Thu, 12 Dec 2013 11:55:52 +0000 (11:55 +0000)]
Darwin-embedded: find correct libclang_rt for embedded targets.

This refactors some of the Darwin toolchain classification to give a more solid
distinction between the three primary Darwin platforms (OS X, IOS and IOS
simulator) so that a 4th choice can be added temporarily: embedded MachO
targets.

Longer term, this support will be factored out into a separate class and no
longer classified as "darwin-eabi", but the refactoring should still be useful.

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

10 years agoAdd a test case for the PR17748 crash
Timur Iskhodzhanov [Thu, 12 Dec 2013 11:07:03 +0000 (11:07 +0000)]
Add a test case for the PR17748 crash

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

10 years agoFixed a typo
Alexander Kornienko [Thu, 12 Dec 2013 10:08:54 +0000 (10:08 +0000)]
Fixed a typo

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

10 years agoFilter-out irrelevant command-line options in CommonOptionsParser.
Alexander Kornienko [Thu, 12 Dec 2013 09:59:42 +0000 (09:59 +0000)]
Filter-out irrelevant command-line options in CommonOptionsParser.

Summary:
Leave only -help, -version and options from the specified category.
Updated clang-check and clang-tidy. As clang-tidy is in a separate repository,
here's the diff:

  Index: tools/extra/clang-tidy/tool/ClangTidyMain.cpp
  ===================================================================
  --- tools/extra/clang-tidy/tool/ClangTidyMain.cpp       (revision 197024)
  +++ tools/extra/clang-tidy/tool/ClangTidyMain.cpp       (working copy)
  @@ -39,7 +39,7 @@
   // FIXME: Add option to list name/description of all checks.

   int main(int argc, const char **argv) {
  -  CommonOptionsParser OptionsParser(argc, argv);
  +  CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory);

     SmallVector<clang::tidy::ClangTidyError, 16> Errors;
     clang::tidy::runClangTidy(Checks, OptionsParser.getCompilations(),

Reviewers: djasper, klimek

Reviewed By: djasper

CC: cfe-commits, revane, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D2379

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

10 years agoImplemented GNU-style formatting for compound statements.
Alexander Kornienko [Thu, 12 Dec 2013 09:49:52 +0000 (09:49 +0000)]
Implemented GNU-style formatting for compound statements.

Summary:
Added BraceBreakingStyle::BS_GNU. I'm not sure about the correctness of
static initializer formatting, but compound statements should be fine.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D2372

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

10 years agoc-arcmt-test/Makefile: Fixup for LDFLAGS=-static on cygming, corresponding to r197116.
NAKAMURA Takumi [Thu, 12 Dec 2013 06:37:12 +0000 (06:37 +0000)]
c-arcmt-test/Makefile: Fixup for LDFLAGS=-static on cygming, corresponding to r197116.

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

10 years agoAdd more test cases for 'objc_protocol_requires_explicit_implementation'.
Ted Kremenek [Thu, 12 Dec 2013 06:20:42 +0000 (06:20 +0000)]
Add more test cases for 'objc_protocol_requires_explicit_implementation'.

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

10 years agoPR17602: check accessibility when performing an implicit derived-to-base
Richard Smith [Thu, 12 Dec 2013 03:40:18 +0000 (03:40 +0000)]
PR17602: check accessibility when performing an implicit derived-to-base
conversion on the LHS of a .* or ->*. Slightly improve diagnostics in case
of an ambiguous base class.

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

10 years agoUpdate user manual to note that implementation for C++11 and C++1y is complete, and...
Richard Smith [Thu, 12 Dec 2013 02:42:17 +0000 (02:42 +0000)]
Update user manual to note that implementation for C++11 and C++1y is complete, and fix a bunch of other issues here.

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

10 years agoRe-apply r197076 and r197086; the build was fixed by chapuni in r197114.
Hans Wennborg [Thu, 12 Dec 2013 02:24:20 +0000 (02:24 +0000)]
Re-apply r197076 and r197086; the build was fixed by chapuni in r197114.

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

10 years agoFix autoconf build in libclang since r197075, (has been reverted in r197111).
NAKAMURA Takumi [Thu, 12 Dec 2013 02:19:37 +0000 (02:19 +0000)]
Fix autoconf build in libclang since r197075, (has been reverted in r197111).

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

10 years agoFix Incorrect CHECK message [0-31]+ in test case.
Kevin Qin [Thu, 12 Dec 2013 02:17:35 +0000 (02:17 +0000)]
Fix Incorrect CHECK message [0-31]+ in test case.
In regular expression, [0-31]+ equals to [0-3]+, not the number from
0 to 31. So change it to [0-9]+.

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

10 years agoRevert r197076: "[objcmt] When emitting a remap file, use a json format
Hans Wennborg [Thu, 12 Dec 2013 02:12:17 +0000 (02:12 +0000)]
Revert r197076: "[objcmt] When emitting a remap file, use a json format
with the edit entries, instead of applying the changes"

(And also revert the follow-up r197086.)

This seems to have broken Linux builds, which were failing with the following:

/build/buildbot/osu8/clang-x86_64-linux-selfhost-rel/llvm.obj/Release+Asserts/lib/libclang.so:
error: undefined reference to
'clang::ento::objc_retain::CallEffects::getEffect(clang::ObjCMethodDecl const*)'
/build/buildbot/osu8/clang-x86_64-linux-selfhost-rel/llvm.obj/Release+Asserts/lib/libclang.so:
error: undefined reference to
'clang::ento::objc_retain::CallEffects::getEffect(clang::FunctionDecl const*)'
collect2: error: ld returned 1 exit status

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

10 years agoSwitching to using hasGlobalStorage instead of !hasLocalStorage for better clarity.
Aaron Ballman [Thu, 12 Dec 2013 02:03:50 +0000 (02:03 +0000)]
Switching to using hasGlobalStorage instead of !hasLocalStorage for better clarity.

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

10 years agoAdded a Subjects clause to the section attribute and made its diagnostics more consis...
Aaron Ballman [Thu, 12 Dec 2013 01:34:39 +0000 (01:34 +0000)]
Added a Subjects clause to the section attribute and made its diagnostics more consistent with other attributes.

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

10 years agoPR18217: Rewrite JumpDiagnostics' handling of temporaries, to correctly handle
Richard Smith [Thu, 12 Dec 2013 01:27:02 +0000 (01:27 +0000)]
PR18217: Rewrite JumpDiagnostics' handling of temporaries, to correctly handle
declarations that might lifetime-extend multiple temporaries. In passing, fix a
crasher (PR18217) if an initializer was dependent and exactly the wrong shape,
and remove a bogus function (Expr::findMaterializedTemporary) now its last use
is gone.

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

10 years agoObjective-C migrator: when inferring 'readonly' property of an
Fariborz Jahanian [Thu, 12 Dec 2013 01:02:00 +0000 (01:02 +0000)]
Objective-C migrator: when inferring 'readonly' property of an
Objective-C object conforming to 'NSCopying' protocol, infer
a 'copy' property, instead of 'strong'. // rdar://15525937

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

10 years agoUse llvm::Regex::Escape in VerifyDiagnosticConsumer.cpp
Hans Wennborg [Thu, 12 Dec 2013 00:27:31 +0000 (00:27 +0000)]
Use llvm::Regex::Escape in VerifyDiagnosticConsumer.cpp

This depends on LLVM r197096.

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

10 years agoAdd CFG tests for switch's involving "extended" enum.
Ted Kremenek [Wed, 11 Dec 2013 23:44:05 +0000 (23:44 +0000)]
Add CFG tests for switch's involving "extended" enum.

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

10 years agoAdd new PrintingPolicy entry to trim number of newlines. Useful for the CFG printer.
Ted Kremenek [Wed, 11 Dec 2013 23:44:02 +0000 (23:44 +0000)]
Add new PrintingPolicy entry to trim number of newlines.  Useful for the CFG printer.

The change isn't completely comprehensive.  This can be filled in
lazily as needed.  There is one consumer right now.

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

10 years agoChange semantics of regex expectations in the diagnostic verifier
Hans Wennborg [Wed, 11 Dec 2013 23:40:50 +0000 (23:40 +0000)]
Change semantics of regex expectations in the diagnostic verifier

Previously, a line like

  // expected-error-re {{foo}}

treats the entirety of foo as a regex. This is inconvenient when matching type
names containing regex characters. For example, to match
"void *(class test8::A::*)(void)" inside such a regex, one would have to type
"void \*\(class test8::A::\*\)\(void\)".

This patch changes the semantics of expected-error-re to only treat the parts
of the directive wrapped in double curly braces as regexes. This avoids the
escaping problem and leads to nicer patterns for those cases; see e.g. the
change to test/Sema/format-strings-scanf.c.

(The balanced search for closing }} of a directive also makes us handle the
full directive in test\SemaCXX\constexpr-printing.cpp:41 and :53.)

Differential Revision: http://llvm-reviews.chandlerc.com/D2388

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

10 years ago[AArch64] Refactor NEON floating-point Max/Min/Maxnm/Minnm across vector AArch64
Chad Rosier [Wed, 11 Dec 2013 23:21:39 +0000 (23:21 +0000)]
[AArch64] Refactor NEON floating-point Max/Min/Maxnm/Minnm across vector AArch64
intrinsics to use f32 types, rather than their vector equivalents.

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

10 years agoRemove extra qualification to fix build with g++ after r197076
Alp Toker [Wed, 11 Dec 2013 22:50:04 +0000 (22:50 +0000)]
Remove extra qualification to fix build with g++ after r197076

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

10 years ago[ms-abi][cleanup] Removing FinalizeCXXLayout : no functional change
Warren Hunt [Wed, 11 Dec 2013 22:28:32 +0000 (22:28 +0000)]
[ms-abi][cleanup] Removing FinalizeCXXLayout : no functional change

After r196549 there is no need to separate FinalizeCXXLayout and
FinalizeLayout so they were merged and FinalizeCXXLayout was eliminated.

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

10 years agoNo longer accepting attribute spellings with prefix and suffix underscores except...
Aaron Ballman [Wed, 11 Dec 2013 22:27:44 +0000 (22:27 +0000)]
No longer accepting attribute spellings with prefix and suffix underscores except for GNU attributes, or C++11-style attributes in the GNU namespace. This prevents attributes such as __declspec(__dllexport__) or [[__noreturn__]] from being treated as known attributes.

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

10 years agoRevert r197043, not a good comment
Renato Golin [Wed, 11 Dec 2013 21:44:56 +0000 (21:44 +0000)]
Revert r197043, not a good comment

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