]> granicus.if.org Git - clang/log
clang
9 years agoAdd back a FIXME note to lit.cfg.
Francisco Lopes da Silva [Wed, 21 Jan 2015 21:38:05 +0000 (21:38 +0000)]
Add back a FIXME note to lit.cfg.

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

9 years agoclang-format: Fix crasher when splitting incomplete escape sequences.
Daniel Jasper [Wed, 21 Jan 2015 19:50:35 +0000 (19:50 +0000)]
clang-format: Fix crasher when splitting incomplete escape sequences.

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

9 years agoFix isTriviallyCopyableType for arrays
Saleem Abdulrasool [Wed, 21 Jan 2015 19:39:10 +0000 (19:39 +0000)]
Fix isTriviallyCopyableType for arrays

Fix isTriviallyCopyableType for arrays. An array of type T is trivially copyable
if T is trivially copyable.

Patch by Agustín Bergé!

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

9 years agoclang-format: Fix crasher caused by incorrect resetting of token info.
Daniel Jasper [Wed, 21 Jan 2015 18:35:47 +0000 (18:35 +0000)]
clang-format: Fix crasher caused by incorrect resetting of token info.

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

9 years agoclang-format: Fix bad memory access.
Daniel Jasper [Wed, 21 Jan 2015 18:04:02 +0000 (18:04 +0000)]
clang-format: Fix bad memory access.

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

9 years agoclang-format: Fix use-heap-after-free bug.
Daniel Jasper [Wed, 21 Jan 2015 17:35:29 +0000 (17:35 +0000)]
clang-format: Fix use-heap-after-free bug.

Discovered by the awesome test case and ASAN.

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

9 years agoUsed CHECK-DAG since the order is not important.
Rafael Espindola [Wed, 21 Jan 2015 17:12:04 +0000 (17:12 +0000)]
Used CHECK-DAG since the order is not important.

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

9 years agoUsed CHECK-DAG since the order is not important.
Rafael Espindola [Wed, 21 Jan 2015 16:56:43 +0000 (16:56 +0000)]
Used CHECK-DAG since the order is not important.

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

9 years agoInitial support for C++ parameter completion
Francisco Lopes da Silva [Wed, 21 Jan 2015 16:24:11 +0000 (16:24 +0000)]
Initial support for C++ parameter completion

The improved completion in call context now works with:

 - Functions.
 - Member functions.
 - Constructors.
 - New expressions.
 - Function call expressions.
 - Template variants of the previous.

There are still rough edges to be fixed:

 - Provide support for optional parameters.         (fix known)
 - Provide support for member initializers.         (fix known)
 - Provide support for variadic template functions. (fix unknown)
 - Others?

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

9 years agoDon't assume variable name.
Rafael Espindola [Wed, 21 Jan 2015 16:18:42 +0000 (16:18 +0000)]
Don't assume variable name.

Should fix the test in -Asserts builds.

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

9 years agoMake the test a bit stricter. NFC.
Rafael Espindola [Wed, 21 Jan 2015 16:13:57 +0000 (16:13 +0000)]
Make the test a bit stricter. NFC.

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

9 years agoMake the test a bit stricter. NFC.
Rafael Espindola [Wed, 21 Jan 2015 16:03:26 +0000 (16:03 +0000)]
Make the test a bit stricter. NFC.

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

9 years agoclang-format function. NFC.
Rafael Espindola [Wed, 21 Jan 2015 14:55:00 +0000 (14:55 +0000)]
clang-format function. NFC.

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

9 years agoAST: Don't ignore alignas on EnumDecls when calculating alignment
David Majnemer [Wed, 21 Jan 2015 10:54:38 +0000 (10:54 +0000)]
AST: Don't ignore alignas on EnumDecls when calculating alignment

We didn't consider any alignment attributes on an EnumDecl when
calculating alignment.

While we are here, ignore alignment specifications on typedef types if
one is used as the underlying type.  Otherwise, weird things happen:

enum Y : int;
Y y;

typedef int __attribute__((aligned(64))) u;
enum Y : u {};

What is the alignment of 'Y'?  It would be more consistent with the
overall design of enums with fixed underlying types to consider the
underlying type's UnqualifiedDesugaredType.

This fixes PR22279.

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

9 years agoRevert "Sema: err_after_alias is unreachable, remove it"
David Majnemer [Wed, 21 Jan 2015 01:30:40 +0000 (01:30 +0000)]
Revert "Sema: err_after_alias is unreachable, remove it"

This reverts commit r226626.  err_after_alias is, in fact, reachable.

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

9 years agoMS ABI: Virtual member pointer thunks should be in COMDAT groups
David Majnemer [Wed, 21 Jan 2015 01:21:31 +0000 (01:21 +0000)]
MS ABI: Virtual member pointer thunks should be in COMDAT groups

They can be emitted by multiple translation units and thus belong in a
COMDAT group.

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

9 years agoMS ABI: Let guard variables be present in COMDATs
David Majnemer [Wed, 21 Jan 2015 01:04:30 +0000 (01:04 +0000)]
MS ABI: Let guard variables be present in COMDATs

A guard variable in a COMDAT'd function should also be in a COMDAT.

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

9 years agoCodeGen: Compiler generated __declspec(uuid) objects should be COMDAT'd
David Majnemer [Wed, 21 Jan 2015 01:04:28 +0000 (01:04 +0000)]
CodeGen: Compiler generated __declspec(uuid) objects should be COMDAT'd

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

9 years agoSema: err_after_alias is unreachable, remove it
David Majnemer [Wed, 21 Jan 2015 00:52:17 +0000 (00:52 +0000)]
Sema: err_after_alias is unreachable, remove it

Examples this would have catched are now handled by the attribute
verification code.

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

9 years agoCorrect all typos in the initialization arguments, even if one could not
Kaelyn Takata [Wed, 21 Jan 2015 00:04:19 +0000 (00:04 +0000)]
Correct all typos in the initialization arguments, even if one could not
be corrected.

This fixes PR22250, which exposed the bug where if there's more than one
TypoExpr in the arguments, once one failed to be corrected none of the
TypoExprs after it would be handled at all thanks to an early return.

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

9 years agoLink libclang with dl if available.
Rafael Espindola [Tue, 20 Jan 2015 21:10:35 +0000 (21:10 +0000)]
Link libclang with dl if available.

This is in preparation for changing the link to use -Wl,-z,defs.

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

9 years agoFix crashes on missing @interface for category
Ben Langmuir [Tue, 20 Jan 2015 20:41:36 +0000 (20:41 +0000)]
Fix crashes on missing @interface for category

In a few places we didn't check that Category->getClassInterface() was
not null before using it.

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

9 years agoAdd the test that was supposed to be included with r223162.
Kaelyn Takata [Tue, 20 Jan 2015 20:15:29 +0000 (20:15 +0000)]
Add the test that was supposed to be included with r223162.

The test case is based on the reduction from PR21679 and has to be
freestanding to work correctly, since some of the expected errors (and
some of the problems that were fixed) only occur when the end of the
file is reached.

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

9 years agoImplement command line options for stack probe space
Hans Wennborg [Tue, 20 Jan 2015 19:45:50 +0000 (19:45 +0000)]
Implement command line options for stack probe space

This code adds the -mstack-probe-size command line option and implements the /Gs
compiler switch for clang-cl.

This should fix http://llvm.org/bugs/show_bug.cgi?id=21896

Patch by Andrew H!

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

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

9 years agoPatch fixes PR21932 crash on invalid code. Using
Fariborz Jahanian [Tue, 20 Jan 2015 16:53:34 +0000 (16:53 +0000)]
Patch fixes PR21932 crash on invalid code. Using
property-dot syntax on 'super' with no super
class. Patch by Jason Haslam.

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

9 years agoclang-format: Fix AlwaysBreakBeforeMultilineStrings with ColumnLimit=0
Daniel Jasper [Tue, 20 Jan 2015 12:59:20 +0000 (12:59 +0000)]
clang-format: Fix AlwaysBreakBeforeMultilineStrings with ColumnLimit=0

Before:
  const char *x =
      "hello llvm";

After:
  const char *x = "hello llvm";

This fixes llvm.org/PR22245.
Patch by Bill Meltsner, thank you!

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

9 years agoRe-apply "r226548 - Introduce SPIR calling conventions" reverted in r226558.
Alexander Kornienko [Tue, 20 Jan 2015 11:20:41 +0000 (11:20 +0000)]
Re-apply "r226548 - Introduce SPIR calling conventions" reverted in r226558.

The test was fixed after a discussion with the revision author: the check
pattern was made more flexible as the "%call" part is not what we actually want
to check strictly there.

The original patch description:
===
Introduce SPIR calling conventions.

This implements Section 3.7 from the SPIR 1.2 spec:

    SPIR kernels should use "spir_kernel" calling convention.
    Non-kernel functions use "spir_func" calling convention. All
    other calling conventions are disallowed.

The patch works only for OpenCL source. Any other uses will need
to ensure that kernels are assigned the spir_kernel calling
convention correctly.
===

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

9 years agoReverting r226548 as one of the tests fails in some configurations.
Alexander Kornienko [Tue, 20 Jan 2015 10:55:33 +0000 (10:55 +0000)]
Reverting r226548 as one of the tests fails in some configurations.

Here's the fail log from our internal setup:
===
  .../tools/clang/clang -cc1 -internal-isystem .../tools/clang/staging/include -nostdsysteminc .../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl -triple spir-unknown-unknown -emit-llvm -o -
  FileCheck .../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl
.../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl:11:12: error: expected string not found in input
 // CHECK: %call = tail call spir_func i32 @get_dummy_id(i32 0)
           ^
<stdin>:6:52: note: scanning from here
define spir_kernel void @foo(i32 addrspace(1)* %A) #0 {
                                                   ^
<stdin>:7:2: note: possible intended match here
 %1 = tail call spir_func i32 @get_dummy_id(i32 0) #2
 ^
===

Here's a failure on a public CI server:
http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_check/1183/

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

9 years agoTest commit, no changes.
Pavel Labath [Tue, 20 Jan 2015 09:47:57 +0000 (09:47 +0000)]
Test commit, no changes.

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

9 years ago[OPENMP] Fixed DSA processing for predetermined shared variables.
Alexey Bataev [Tue, 20 Jan 2015 07:03:46 +0000 (07:03 +0000)]
[OPENMP] Fixed DSA processing for predetermined shared variables.
This patch allows to use predetermined shared variables in private clauses in
parallel or tasks regions.

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

9 years agoIntroduce SPIR calling conventions.
Sameer Sahasrabuddhe [Tue, 20 Jan 2015 06:44:32 +0000 (06:44 +0000)]
Introduce SPIR calling conventions.

This implements Section 3.7 from the SPIR 1.2 spec:

    SPIR kernels should use "spir_kernel" calling convention.
    Non-kernel functions use "spir_func" calling convention. All
    other calling conventions are disallowed.

The patch works only for OpenCL source. Any other uses will need
to ensure that kernels are assigned the spir_kernel calling
convention correctly.

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

9 years agoCodeGen: Update LoopAttributes for LLVM API change
Duncan P. N. Exon Smith [Mon, 19 Jan 2015 21:30:48 +0000 (21:30 +0000)]
CodeGen: Update LoopAttributes for LLVM API change

`MDNode::getTemporary()` returns a `unique_ptr<>` as of r226504.

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

9 years ago[AVX512] Add sub-vector FP extracts
Adam Nemet [Mon, 19 Jan 2015 20:12:05 +0000 (20:12 +0000)]
[AVX512] Add sub-vector FP extracts

Analogous to AVX2, these need to be implemented as macros to properly
propagate the immediate index operand.

Part of <rdar://problem/17688758>

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

9 years agoMigrate all uses of DIVariable's FlagIndirectVariable to use a DIExpression
Adrian Prantl [Mon, 19 Jan 2015 17:51:58 +0000 (17:51 +0000)]
Migrate all uses of DIVariable's FlagIndirectVariable to use a DIExpression
with a DW_OP_deref instead.

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

9 years agoAdd comdat to thunks.
Rafael Espindola [Mon, 19 Jan 2015 14:02:14 +0000 (14:02 +0000)]
Add comdat to thunks.

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

9 years agoMake this test a bit stricter. NFC.
Rafael Espindola [Mon, 19 Jan 2015 13:59:31 +0000 (13:59 +0000)]
Make this test a bit stricter. NFC.

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

9 years agoclang-format: Fix crasher on weird comments.
Daniel Jasper [Mon, 19 Jan 2015 11:49:32 +0000 (11:49 +0000)]
clang-format: Fix crasher on weird comments.

Crashing input:
  /\
  / comment

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

9 years agoclang-format: Fix crasher on incomplete condition compilation.
Daniel Jasper [Mon, 19 Jan 2015 10:52:16 +0000 (10:52 +0000)]
clang-format: Fix crasher on incomplete condition compilation.

Previously crashing input:
  void f(
  #if A
      );
  #else
  #endif

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

9 years agoclang-format: Fix crash on invalid code.
Daniel Jasper [Mon, 19 Jan 2015 10:51:42 +0000 (10:51 +0000)]
clang-format: Fix crash on invalid code.

Input "a<," made clang-format crash.

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

9 years agoclang-format: Fix clang-format crash on invalid code.
Daniel Jasper [Mon, 19 Jan 2015 10:51:23 +0000 (10:51 +0000)]
clang-format: Fix clang-format crash on invalid code.

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

9 years agoclang-format: Fix assertion when trying to build a nullptr StringRef.
Daniel Jasper [Mon, 19 Jan 2015 10:51:05 +0000 (10:51 +0000)]
clang-format: Fix assertion when trying to build a nullptr StringRef.

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

9 years agoclang-format: Fix endless loop on incomplete try-catch-block.
Daniel Jasper [Mon, 19 Jan 2015 10:50:51 +0000 (10:50 +0000)]
clang-format: Fix endless loop on incomplete try-catch-block.

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

9 years agoclang-format: Remove assert that isn't helpful.
Daniel Jasper [Mon, 19 Jan 2015 10:50:08 +0000 (10:50 +0000)]
clang-format: Remove assert that isn't helpful.

This assert would trigger on:
  #d , = }

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

9 years agoMake clang-format work in emacs buffers with unicode characters.
Manuel Klimek [Mon, 19 Jan 2015 10:48:04 +0000 (10:48 +0000)]
Make clang-format work in emacs buffers with unicode characters.

Emacs functions by default use character positions; convert characters
to offsets when handing parameters to clang-format and convert byte
offsets we get from clang-format back to character positions.
Reworked the code a bit so the 0-based to 1-based offset calculations
are done in the same place where we do the multi-byte to offset mapping.

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

9 years agoAdd back a check removed in r226436
David Majnemer [Mon, 19 Jan 2015 10:21:22 +0000 (10:21 +0000)]
Add back a check removed in r226436

It shouldn't have been removed, the code which replaced it didn't cover
this case.

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

9 years agoSemaDeclCXX.cpp: Suppress a warning. [-Wunused-variable]
NAKAMURA Takumi [Mon, 19 Jan 2015 09:49:59 +0000 (09:49 +0000)]
SemaDeclCXX.cpp: Suppress a warning. [-Wunused-variable]

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

9 years agoSema: Variable definitions cannot be __attribute__((alias))
David Majnemer [Mon, 19 Jan 2015 09:00:28 +0000 (09:00 +0000)]
Sema: Variable definitions cannot be __attribute__((alias))

Things that are OK:
  extern int var1 __attribute((alias("v1")));
  static int var2 __attribute((alias("v2")));

Things that are not OK:
  int var3 __attribute((alias("v3")));
  extern int var4 __attribute((alias("v4"))) = 4;

We choose to accpet:
  struct S { static int var5 __attribute((alias("v5"))); };

  This code causes assertion failues in GCC 4.8 and ICC 13.0.1, we have
  no reason to reject it.

This partially fixes PR22217.

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

9 years ago[X86] Change AVX512 intrinsics to take a 8-bit immediate for the comparision kind...
Craig Topper [Mon, 19 Jan 2015 06:08:02 +0000 (06:08 +0000)]
[X86] Change AVX512 intrinsics to take a 8-bit immediate for the comparision kind instead of a 32-bit immediate. This matches an equivalent change in llvm.

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

9 years ago[OPENMP] Disable copyprivate an nowait clauses in 'single' directive.
Alexey Bataev [Mon, 19 Jan 2015 05:20:46 +0000 (05:20 +0000)]
[OPENMP] Disable copyprivate an nowait clauses in 'single' directive.
The copyprivate clause must not be used with the nowait clause in single
directive.

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

9 years agoPR6037
Nathan Sidwell [Mon, 19 Jan 2015 01:44:02 +0000 (01:44 +0000)]
PR6037
Warn on inaccessible direct base

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

9 years ago[x86] Teach Sema to check size of comparison immediate on avx512 cmpps/cmppd buitins.
Craig Topper [Mon, 19 Jan 2015 01:18:22 +0000 (01:18 +0000)]
[x86] Teach Sema to check size of comparison immediate on avx512 cmpps/cmppd buitins.

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

9 years ago[x86] Mark that the AVX-512 cmpps/cmppd builtins need an ICE for the comparison immed...
Craig Topper [Mon, 19 Jan 2015 01:18:19 +0000 (01:18 +0000)]
[x86] Mark that the AVX-512 cmpps/cmppd builtins need an ICE for the comparison immediate. This requires converting to a macro in the header file.

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

9 years agoHandle unscoped enumeration in nested name specifier.
Serge Pavlov [Sun, 18 Jan 2015 20:04:35 +0000 (20:04 +0000)]
Handle unscoped enumeration in nested name specifier.

If an unscoped enum is used as a nested name specifier and the language dialect
is not C++ 11, issue an extension warning.
This fixes PR16951.

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

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

9 years agoUpdate error message text.
Serge Pavlov [Sun, 18 Jan 2015 19:05:48 +0000 (19:05 +0000)]
Update error message text.

Previously if an enumeration was used in a nested name specifier in pre-C++11
language dialect, error message was 'XXX is not a class, namespace, or scoped
enumeration'. This patch removes the word 'scoped' as in C++11 any enumeration
may be used in this context.

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

9 years agoAdd comment after API changes in r225090
David Blaikie [Sun, 18 Jan 2015 02:48:07 +0000 (02:48 +0000)]
Add comment after API changes in r225090

Code review suggestion by Eric Christopher.

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

9 years agoDebugInfo: Attribute complex expressions to the source location of the expression
David Blaikie [Sun, 18 Jan 2015 01:57:54 +0000 (01:57 +0000)]
DebugInfo: Attribute complex expressions to the source location of the expression

Just as r225956 did for scalar expressions (CGExprScalar::Visit), do the
same for complex expressions.

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

9 years agoAddress review feedback from r215780: Use a flag insteda of the heap. No behavior...
Nico Weber [Sun, 18 Jan 2015 01:50:35 +0000 (01:50 +0000)]
Address review feedback from r215780: Use a flag insteda of the heap. No behavior change.

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

9 years agoDebugInfo: Attribute aggregate expressions to the source location of the expression
David Blaikie [Sun, 18 Jan 2015 01:48:19 +0000 (01:48 +0000)]
DebugInfo: Attribute aggregate expressions to the source location of the expression

Just as r225956 did for scalar expressions (CGExprScalar::Visit), do the
same for aggregate expressions.

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

9 years agoRefactor test so it's not lazily emitted on a global, simplifying ordering when more...
David Blaikie [Sun, 18 Jan 2015 00:37:04 +0000 (00:37 +0000)]
Refactor test so it's not lazily emitted on a global, simplifying ordering when more test cases are added

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

9 years agoRecommit r225083 (reverted in r225361) now that calls to aggregate initializers from...
David Blaikie [Sun, 18 Jan 2015 00:14:21 +0000 (00:14 +0000)]
Recommit r225083 (reverted in r225361) now that calls to aggregate initializers from in class non-static data members are explicitly attributed to the desired line.

The code setting the debug location being removed here was accidentally
leaking a location into the call to the non-static data member's ctor
call. Without it the call had no location and could cause assertion
failures if it was inlined. Now that it has a location (and a correct
one at that) this code should hopefully be no longer needed.

It's possible of course that other parts of the debug info are also
relying on the debug locations being set here to leak to where they're
needed - so we might see the same assertions again & will have to
investigate what the dependence was/is. But the chances are good that
any of those are debug info line table quality bugs we've just not found
yet anyway - so it'll be good to flush them out.

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

9 years agoDebugInfo: Correct the debug location of non-static data member initializers
David Blaikie [Sun, 18 Jan 2015 00:12:58 +0000 (00:12 +0000)]
DebugInfo: Correct the debug location of non-static data member initializers

This was causing some trouble for otherwise dead code removed in r225085
(reverted in r225361). The location being set for function arguments was
leaking out to the call which wasn't setting its own location (so a
quality bug turned into a crasher with r225085). Fix this so r225085 can
be recommitted.

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

9 years ago[msan] Fix a uninitialized-use bug in the template argument diffing
Chandler Carruth [Sat, 17 Jan 2015 14:20:14 +0000 (14:20 +0000)]
[msan] Fix a uninitialized-use bug in the template argument diffing
logic.

In one place we would try to check for the difference between integers
even if we were missing one of the integers. This would eventually end
up reading uninitialized data out of the APSInt objects. The fix is to
short circuit the sameness test when we don't have integers on both
sides.

This fixes a test failure I was seeing with MSan. Not sure whether other
bots were seeing it or not, but yay MSan. In particular the feature to
very carefully track origins back through stores throughout the program
was invaluable.

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

9 years agoAdd tests for two more asserts that r226365 fixed according to SLi's bot.
Nico Weber [Sat, 17 Jan 2015 04:27:09 +0000 (04:27 +0000)]
Add tests for two more asserts that r226365 fixed according to SLi's bot.

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

9 years agoAdd a test for something that used to crash before r226365.
Nico Weber [Sat, 17 Jan 2015 04:14:31 +0000 (04:14 +0000)]
Add a test for something that used to crash before r226365.

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

9 years agoIf a function decl cannot be merged, mark it as invalid.
Nico Weber [Sat, 17 Jan 2015 02:33:17 +0000 (02:33 +0000)]
If a function decl cannot be merged, mark it as invalid.

Clang currently crashes on

    class C {
      C() = default;
      C() = delete;
    };

My cunning plan for fixing this was to change the `if (!FnD)` in
Parser::ParseCXXInlineMethodDef() to `if (!FnD || FnD->isInvalidDecl)` – but
alas, the second constructor decl wasn't marked as invalid.  This lets
Sema::MergeFunctionDecl() return true on function redeclarations, which leads
to them being marked invalid.

This also improves error messages when functions are redeclared.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Sat, 17 Jan 2015 02:27:54 +0000 (02:27 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoAddress review feedback from r226306. No intended behavior change.
Nico Weber [Sat, 17 Jan 2015 02:26:40 +0000 (02:26 +0000)]
Address review feedback from r226306. No intended behavior change.

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

9 years agoMake sure all weak destructors go in a comdat in the ms abi.
Rafael Espindola [Sat, 17 Jan 2015 01:47:39 +0000 (01:47 +0000)]
Make sure all weak destructors go in a comdat in the ms abi.

Destructors have a special treatment in getFunctionLinkage. Instead of
duplicating the logic, check the resulting linkage.

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

9 years agoClean up a string comparison with StringRef. Suggestion by David Majnemer.
Richard Trieu [Sat, 17 Jan 2015 00:56:10 +0000 (00:56 +0000)]
Clean up a string comparison with StringRef.  Suggestion by David Majnemer.

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

9 years agoRemove std::move that was preventing return value optimization.
Richard Trieu [Sat, 17 Jan 2015 00:46:55 +0000 (00:46 +0000)]
Remove std::move that was preventing return value optimization.

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

9 years agoAdding option -fno-inline-asm to disallow inline asm
Steven Wu [Fri, 16 Jan 2015 23:05:28 +0000 (23:05 +0000)]
Adding option -fno-inline-asm to disallow inline asm

Summary:
This patch add a new option to dis-allow all inline asm.
Any GCC style inline asm will be reported as an error.

Reviewers: rnk, echristo

Reviewed By: rnk, echristo

Subscribers: bob.wilson, rnk, echristo, rsmith, cfe-commits

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

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

9 years agoSuggest objc_method_family(none) for a property named -newFoo or similar.
Jordan Rose [Fri, 16 Jan 2015 23:04:31 +0000 (23:04 +0000)]
Suggest objc_method_family(none) for a property named -newFoo or similar.

As mentioned in the previous commit, if a property (declared with @property)
has a name that matches a special Objective-C method family, the getter picks
up that family despite being declared by the property. The most correct way
to solve this problem is to add the 'objc_method_family' attribute to the
getter with an argument of 'none', which unfortunately requires an explicit
declaration of the getter.

This commit adds a note to the existing error (ARC) or warning (MRR) for
such a poorly-named property that suggests the solution; if there's already
a declaration of the getter, it even includes a fix-it.

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

9 years agoObjC getters with names like "newItem" should still be linked to the @property.
Jordan Rose [Fri, 16 Jan 2015 23:04:26 +0000 (23:04 +0000)]
ObjC getters with names like "newItem" should still be linked to the @property.

Two years ago I added a compile-time "optimization" to
ObjCMethodDecl::findPropertyDecl: exit early if the current method is part
of a special Objective-C method family (like 'new' or 'init'). However, if a
property (declared with @property) has a name that matches a method family,
the getter picks up that family despite being declared by the property. The
early exit then made ObjCMethodDecl::findPropertyDecl decide that there
was no associated property, despite the method itself being marked as an
accessor. This corrects that by removing the early exit.

This does /not/ change the fact that such a getter is considered to return a
value with a +1 retain count. The best way to eliminate this is by adding the
objc_method_family(none) attribute to the getter, but unlike the existing
ns_returns_not_retained that can't be applied directly to the property -- you
have to redeclare the getter instead.

(It'd be nice if @property just implied objc_method_family(none) for its
getter, but that would be a backwards-incompatible change.)

rdar://problem/19038838

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

9 years agoIsolate test for PR22096 to clang.
David Blaikie [Fri, 16 Jan 2015 22:55:09 +0000 (22:55 +0000)]
Isolate test for PR22096 to clang.

Emitting inlinable calls without debug locations (in functions with
debug info, to functions with debug info) is problematic for debug info
when inlining occurs. Test specifically that we don't do that in this
case - thus the test isn't simply "don't crash", it's "include debug
location for this call" (granted it's the wrong location - fix for that
is coming)

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

9 years agoFix a case where delayed typo correction should have resolved an
Kaelyn Takata [Fri, 16 Jan 2015 22:11:04 +0000 (22:11 +0000)]
Fix a case where delayed typo correction should have resolved an
ambiguity but wasn't.

In the new test case, "click" wasn't being corrected properly because
Sema::ClassifyName would call CorrectTypo for "click" then later
Sema::DiagnoseEmptyLookup would call CorrectTypoDelayed for the same use
of "click" (the former by the parser needing to determine what the
identifier is so it knows how to parse the statement, i.e. is it the
beginning of a declaration or an expression). CorrectTypo would record
that typo correction for "click" failed and CorrectTypoDelayed would see
that and not even try to correct the typo, even though in this case
CorrectTypo failed due to an ambiguity (both "Click" and "clock" having
an edit distance of one from "click") that could be resolved with more
information. The fix is two-fold:
  1) Have CorrectTypo not record failed corrections if the reason for
     the failure was two or more corrections with the same edit
     distance, and
  2) Make the CorrectionCandidateCallback used by
     Parser::ParseCastExpression reject FunctionDecl candidates when the
     next token after the identifier is a ".", "=", or "->" since
     functions cannot be assigned to and do not have members that can be
     referenced.

The reason for two correction spots is that from r222549 until r224375
landed, the first correction attempt would fail completely but the
second would suggest "clock" while having the note point to the
declaration of "Click".

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

9 years agoRemove pathname dependence. Also rewrite test to use FileCheck
Eric Christopher [Fri, 16 Jan 2015 22:03:52 +0000 (22:03 +0000)]
Remove pathname dependence. Also rewrite test to use FileCheck
at the same time.

Patch by David Callahan.

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

9 years agoFix some copypasta typos in asserts.
Sean Silva [Fri, 16 Jan 2015 21:44:26 +0000 (21:44 +0000)]
Fix some copypasta typos in asserts.

Fixes PR22236

Patch by Nicolas Brunie! <nicolas.brunie@kalray.eu>

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

9 years agoAlso put vtables in a comdat when rtti is disabled.
Rafael Espindola [Fri, 16 Jan 2015 21:41:44 +0000 (21:41 +0000)]
Also put vtables in a comdat when rtti is disabled.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Fri, 16 Jan 2015 21:09:43 +0000 (21:09 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoAdd comdat to string literal variables on COFF.
Rafael Espindola [Fri, 16 Jan 2015 20:32:35 +0000 (20:32 +0000)]
Add comdat to string literal variables on COFF.

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

9 years agoSpell 0 in an enum-appropriate way. No behavior change.
Nico Weber [Fri, 16 Jan 2015 19:35:01 +0000 (19:35 +0000)]
Spell 0 in an enum-appropriate way. No behavior change.

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

9 years agoDon't crash if a declarator in a friend decl doesn't have a name.
Nico Weber [Fri, 16 Jan 2015 19:34:13 +0000 (19:34 +0000)]
Don't crash if a declarator in a friend decl doesn't have a name.

There was already an explicit check for that for the first decl.  Move that
to a different place so that it's called for the following decls too.  Also
don't randomly set the BitfieldSize ExprResult to true (this sets a pointer to
true internally).

Found by SLi's bot.

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

9 years agoAdd comdats to the RTTI variables in the microsoft abi.
Rafael Espindola [Fri, 16 Jan 2015 19:23:42 +0000 (19:23 +0000)]
Add comdats to the RTTI variables in the microsoft abi.

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

9 years ago[AVX512] Add intrinsics for masked aligned FP loads and stores
Adam Nemet [Fri, 16 Jan 2015 18:51:50 +0000 (18:51 +0000)]
[AVX512] Add intrinsics for masked aligned FP loads and stores

Part of <rdar://problem/17688758>

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

9 years agoFix typo in r225922.
Adam Nemet [Fri, 16 Jan 2015 18:51:46 +0000 (18:51 +0000)]
Fix typo in r225922.

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

9 years agoAArch64: implement AAPCS layout rules for bit-fields.
Tim Northover [Fri, 16 Jan 2015 18:44:04 +0000 (18:44 +0000)]
AArch64: implement AAPCS layout rules for bit-fields.

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

9 years agoAdd comdats to dynamic init functions in the microsoft abi.
Rafael Espindola [Fri, 16 Jan 2015 16:04:45 +0000 (16:04 +0000)]
Add comdats to dynamic init functions in the microsoft abi.

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

9 years agoMake this test a bit stricter. NFC.
Rafael Espindola [Fri, 16 Jan 2015 16:02:03 +0000 (16:02 +0000)]
Make this test a bit stricter. NFC.

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

9 years agoAttempt to fix the build with XCode 5.0.2 (and probably 5.1.1).
Alexander Kornienko [Fri, 16 Jan 2015 15:57:15 +0000 (15:57 +0000)]
Attempt to fix the build with XCode 5.0.2 (and probably 5.1.1).

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

9 years agoAdd comdats to constructs and destructor in the microsoft abi.
Rafael Espindola [Fri, 16 Jan 2015 15:37:11 +0000 (15:37 +0000)]
Add comdats to constructs and destructor in the microsoft abi.

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

9 years agorestore fix for 18645, buildbot apparently gave a false positive.
Nathan Sidwell [Fri, 16 Jan 2015 15:20:14 +0000 (15:20 +0000)]
restore fix for 18645, buildbot apparently gave a false positive.
Correct logic concerning 'T &&' deduction against lvalues.

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

9 years ago[OPENMP] Fixed data-sharing attributes processing for variables with global
Alexey Bataev [Fri, 16 Jan 2015 07:11:33 +0000 (07:11 +0000)]
[OPENMP] Fixed data-sharing attributes processing for variables with global
storage.
This fix allows to use non-constant global variables, static local variables and static data
members in data-sharing attribute clauses in parallel and task regions.

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

9 years agoUse a trivial comdat for C++ tables.
Rafael Espindola [Thu, 15 Jan 2015 23:18:01 +0000 (23:18 +0000)]
Use a trivial comdat for C++ tables.

This produces comdats for vtables, typeinfo, typeinfo names, and vtts.

When combined with llvm not producing implicit comdats, not doing this would
cause code bloat on ELF and link errors on COFF.

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

9 years agoUse a trivial comdat for inline ctor/dtor when not using C5/D5.
Rafael Espindola [Thu, 15 Jan 2015 21:36:08 +0000 (21:36 +0000)]
Use a trivial comdat for inline ctor/dtor when not using C5/D5.

When combined with llvm not producing implicit comdats, not doing this would
cause code bloat on ELF and link errors on COFF.

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

9 years ago[PowerPC] Add a target option for invariant function descriptors
Hal Finkel [Thu, 15 Jan 2015 21:22:22 +0000 (21:22 +0000)]
[PowerPC] Add a target option for invariant function descriptors

The PPC backend will now assume that PPC64 ELFv1 function descriptors are
invariant. This must be true for well-defined C/C++ code, but I'm providing an
option to disable this assumption in case someone's JIT-engine needs it.

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

9 years agoWarn about dllexported explicit class template instantiation declarations (PR22035)
Hans Wennborg [Thu, 15 Jan 2015 21:18:30 +0000 (21:18 +0000)]
Warn about dllexported explicit class template instantiation declarations (PR22035)

Clang would previously become confused and crash here.

It does not make a lot of sense to export these, so warning seems appropriate.

MSVC will export some member functions for this kind of specializations, whereas
MinGW ignores the dllexport-edness. The latter behaviour seems better.

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

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

9 years agoPR 20146
Nathan Sidwell [Thu, 15 Jan 2015 16:45:53 +0000 (16:45 +0000)]
PR 20146
reject CV void return type on C definitions per 6.9.1/3

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

9 years ago[PM] Track an LLVM API update which separates the TargetLibraryInfo
Chandler Carruth [Thu, 15 Jan 2015 10:42:26 +0000 (10:42 +0000)]
[PM] Track an LLVM API update which separates the TargetLibraryInfo
object from the pass that provides access to it.

We should probably refactor the createTLI code here in Clang in light of
the new structure, but I wanted this patch to be a minimal one that just
patches the behavior back together.

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

9 years agoAST: alignof might be dependent because of alignment attributes
David Majnemer [Thu, 15 Jan 2015 10:04:14 +0000 (10:04 +0000)]
AST: alignof might be dependent because of alignment attributes

Dependent alignment attributes should make an alignof expression
dependent as well.

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

9 years ago[CMake] clangCodeGen: Prune a redundant "Target" out of libdeps. It is supplied by...
NAKAMURA Takumi [Thu, 15 Jan 2015 08:51:01 +0000 (08:51 +0000)]
[CMake] clangCodeGen: Prune a redundant "Target" out of libdeps. It is supplied by Analysis.

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