]> granicus.if.org Git - clang/log
clang
9 years agoUpdate test to make it robust to migration to typeless pointers
David Blaikie [Sun, 15 Feb 2015 04:12:14 +0000 (04:12 +0000)]
Update test to make it robust to migration to typeless pointers

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

9 years agoReplace snprintf with a Twine. NFC.
Benjamin Kramer [Sat, 14 Feb 2015 18:19:55 +0000 (18:19 +0000)]
Replace snprintf with a Twine. NFC.

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

9 years agoItaniumMangle: Correctly mangle <base-unresolved-name>
David Majnemer [Sat, 14 Feb 2015 13:23:54 +0000 (13:23 +0000)]
ItaniumMangle: Correctly mangle <base-unresolved-name>

We had two bugs:
- We were missing the "on" prefix for unresolved operators.
- We didn't handle the mangling of destructors at all.

This fixes PR22584.

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

9 years agoMake a reference const. No behavior change.
Nico Weber [Sat, 14 Feb 2015 05:47:01 +0000 (05:47 +0000)]
Make a reference const. No behavior change.

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

9 years agoRevise the implementation logic of sized deallocation: Do not automatically generate...
Larisse Voufo [Sat, 14 Feb 2015 05:42:57 +0000 (05:42 +0000)]
Revise the implementation logic of sized deallocation: Do not automatically generate weak definitions of the sized operator delete (in terms of unsized operator delete). Instead, provide the funcitonality via a new compiler flag, -fdef-sized-delete.
The current implementation causes link-time ODR violations when the delete symbols are exported into the dynamic table.

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

9 years ago[modules] Accept //-style comments in module maps on purpose rather than by
Richard Smith [Sat, 14 Feb 2015 05:32:00 +0000 (05:32 +0000)]
[modules] Accept //-style comments in module maps on purpose rather than by
accident, and accept them even when they begin '//*'.

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

9 years agoUpdate cxx_dr_status to cover dr1748 and add test.
Richard Smith [Sat, 14 Feb 2015 03:38:31 +0000 (03:38 +0000)]
Update cxx_dr_status to cover dr1748 and add test.

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

9 years agoTry to unbreak the Hexagon bot
David Majnemer [Sat, 14 Feb 2015 02:18:14 +0000 (02:18 +0000)]
Try to unbreak the Hexagon bot

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

9 years agoDR1748: the reserved placement allocation functions have undefined behavior if
Richard Smith [Sat, 14 Feb 2015 01:52:20 +0000 (01:52 +0000)]
DR1748: the reserved placement allocation functions have undefined behavior if
they're given a null pointer as an argument, so we do not need to emit null
checks on their results.

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

9 years agoCodeGen: _Atomic(_Complex) shouldn't crash
David Majnemer [Sat, 14 Feb 2015 01:48:17 +0000 (01:48 +0000)]
CodeGen: _Atomic(_Complex) shouldn't crash

We could be a little kinder if we did a compare-exchange loop instead of
an atomic-load/store pair.

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

9 years agoRevert "Revert r229082 for a bit, it caused PR22577."
David Majnemer [Sat, 14 Feb 2015 01:35:12 +0000 (01:35 +0000)]
Revert "Revert r229082 for a bit, it caused PR22577."

This reverts commit r229123.  It was a red herring, the bug was present
without r229082.

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

9 years agoCodeGen: Correctly convert atomic bool from i8 to i1
David Majnemer [Sat, 14 Feb 2015 01:35:07 +0000 (01:35 +0000)]
CodeGen: Correctly convert atomic bool from i8 to i1

Bools are a little tricky, they are i8 in memory and must be coerced
back to i1 before further operations can be performed on them.

This fixes PR22577.

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

9 years agoUpdate test case to be compatible with auto-migration to new getelementptr syntax...
David Blaikie [Sat, 14 Feb 2015 00:41:07 +0000 (00:41 +0000)]
Update test case to be compatible with auto-migration to new getelementptr syntax coming in the near future

The first change won't touch GEPOperators such as these, but the update
script only identifies them by the leading '(' after getelementptr or
'getelementptr inbounds', so update this test to at least have those
features to allow auto-migrating.

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

9 years agoRemove trailing whitespace getting in the way of near-future getelementptr change...
David Blaikie [Sat, 14 Feb 2015 00:28:51 +0000 (00:28 +0000)]
Remove trailing whitespace getting in the way of near-future getelementptr change updates

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

9 years agoAdjust test case to be compatible with future changes to explicitly pass the type...
David Blaikie [Sat, 14 Feb 2015 00:26:13 +0000 (00:26 +0000)]
Adjust test case to be compatible with future changes to explicitly pass the type to getelementptr

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

9 years ago[modules] If we have a choice between including a file textually and importing
Richard Smith [Fri, 13 Feb 2015 23:50:20 +0000 (23:50 +0000)]
[modules] If we have a choice between including a file textually and importing
a prebuilt form from a module, prefer the modular form, all else being equal.

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

9 years ago[modules] Guard against recursively re-entering diagnosing ODR violations while
Richard Smith [Fri, 13 Feb 2015 22:43:51 +0000 (22:43 +0000)]
[modules] Guard against recursively re-entering diagnosing ODR violations while
in the middle of emitting an ODR violation diagnostic. I don't yet have a
reduced testcase for this issue, working on it...

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

9 years ago[modules] Don't produce duplicate lookup results if the same declaration is
Richard Smith [Fri, 13 Feb 2015 20:17:14 +0000 (20:17 +0000)]
[modules] Don't produce duplicate lookup results if the same declaration is
visible through multiple imported modules. No functionality change.

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

9 years agoPR17938: This has already been fixed, add regression test.
Richard Smith [Fri, 13 Feb 2015 19:49:59 +0000 (19:49 +0000)]
PR17938: This has already been fixed, add regression test.

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

9 years ago[modules] Improve llvm-bcanalyzer output on AST files a little. No functionality...
Richard Smith [Fri, 13 Feb 2015 19:48:37 +0000 (19:48 +0000)]
[modules] Improve llvm-bcanalyzer output on AST files a little. No functionality change.

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

9 years agoRevert r229082 for a bit, it caused PR22577.
Nico Weber [Fri, 13 Feb 2015 16:27:00 +0000 (16:27 +0000)]
Revert r229082 for a bit, it caused PR22577.

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

9 years agoRemove a stray blank line that my sort_include.py script found.
Chandler Carruth [Fri, 13 Feb 2015 09:57:05 +0000 (09:57 +0000)]
Remove a stray blank line that my sort_include.py script found.

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

9 years ago[PM] Fix #include order here that I forgot to update before changing it.
Chandler Carruth [Fri, 13 Feb 2015 09:57:03 +0000 (09:57 +0000)]
[PM] Fix #include order here that I forgot to update before changing it.

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

9 years ago[PM] Move away from the old llvm/PassManager.h header and its using
Chandler Carruth [Fri, 13 Feb 2015 09:47:49 +0000 (09:47 +0000)]
[PM] Move away from the old llvm/PassManager.h header and its using
declarations and just use the legacy namespace qualifier in this file
and the permanent header name.

The old wrapper header is going away to make LLVM's build more modular,
and without updating Clang I can't easily start to add usage of the new
pass manager to Clang. This should make it more clear in the code which
set of types is doing what.

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

9 years agoMS ABI: Implement /volatile:ms
David Majnemer [Fri, 13 Feb 2015 07:55:47 +0000 (07:55 +0000)]
MS ABI: Implement /volatile:ms

The /volatile:ms semantics turn volatile loads and stores into atomic
acquire and release operations.  This distinction is important because
volatile memory operations do not form a happens-before relationship
with non-atomic memory.  This means that a volatile store is not
sufficient for implementing a mutex unlock routine.

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

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

9 years ago[X86] Fix test cases that I foolishly copied and modified from another file that...
Craig Topper [Fri, 13 Feb 2015 06:27:39 +0000 (06:27 +0000)]
[X86] Fix test cases that I foolishly copied and modified from another file that had optimizations on. This caused the check patterns to not quite match.

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

9 years ago[X86] Add range checking on immediate arguments on XOP vpcom builtins.
Craig Topper [Fri, 13 Feb 2015 06:04:48 +0000 (06:04 +0000)]
[X86] Add range checking on immediate arguments on XOP vpcom builtins.

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

9 years ago[X86] Add _mm_bslli_si128 and _mm_bsrli_si128 as aliases of _mm_slli_si128 and _mm_sr...
Craig Topper [Fri, 13 Feb 2015 06:04:45 +0000 (06:04 +0000)]
[X86] Add _mm_bslli_si128 and _mm_bsrli_si128 as aliases of _mm_slli_si128 and _mm_srli_si128. This matches Intel documentation and gcc.

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

9 years ago[X86] Simplify some code and remove some -Wshadow disables from intrinsic header.
Craig Topper [Fri, 13 Feb 2015 06:04:43 +0000 (06:04 +0000)]
[X86] Simplify some code and remove some -Wshadow disables from intrinsic header.

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

9 years agoMark clang/test/CodeGen/exceptions-seh-leave.c as REQUIRES:asserts, for now.
NAKAMURA Takumi [Fri, 13 Feb 2015 00:24:21 +0000 (00:24 +0000)]
Mark clang/test/CodeGen/exceptions-seh-leave.c as REQUIRES:asserts, for now.

FIXME: Rewrite CHECKs for unnamed BBs and Insts.

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

9 years agoSEH: Use the SEHTryEpilogueStack instead of a separate bool
Reid Kleckner [Thu, 12 Feb 2015 23:40:45 +0000 (23:40 +0000)]
SEH: Use the SEHTryEpilogueStack instead of a separate bool

We don't need a bool to track this now that we have a stack for it.

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

9 years ago[modules] When collecting declarations to complete a redeclaration chain for an
Richard Smith [Thu, 12 Feb 2015 23:21:45 +0000 (23:21 +0000)]
[modules] When collecting declarations to complete a redeclaration chain for an
entity, put the originally-canonical decl IDs in the right places in the redecl
chain rather than reordering them all to the start. If we don't ensure that the
redecl chain order is consistent with the topological module order, we can fail
to make a declaration visible if later declarations are in more IDNSs than
earlier ones (for instance, because the earlier decls are invisible friends).

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

9 years ago[ms] Implement codegen for __leave.
Nico Weber [Thu, 12 Feb 2015 23:16:11 +0000 (23:16 +0000)]
[ms] Implement codegen for __leave.

Reviewed at http://reviews.llvm.org/D7575

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

9 years agoMangle the IsSystem bit into the .pcm file name
Ben Langmuir [Thu, 12 Feb 2015 21:51:31 +0000 (21:51 +0000)]
Mangle the IsSystem bit into the .pcm file name

When mangling the module map path into a .pcm file name, also mangle the
IsSystem bit, which can also depend on the header search paths. For
example, the user may change from -I to -isystem.  This can affect
diagnostics in the importing TU.

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

9 years agoFix typoo.
Richard Smith [Thu, 12 Feb 2015 21:23:20 +0000 (21:23 +0000)]
Fix typoo.

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

9 years agoSema: Semantically check _Atomic-qualified pointers
David Majnemer [Thu, 12 Feb 2015 21:07:34 +0000 (21:07 +0000)]
Sema: Semantically check _Atomic-qualified pointers

This fixes PR22568.

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

9 years agoFix dependency generation crash test to run clang and clean up after itself.
Greg Bedwell [Thu, 12 Feb 2015 12:41:28 +0000 (12:41 +0000)]
Fix dependency generation crash test to run clang and clean up after itself.

Previously the test did not have a RUN: prefix for the clang command.
In addition it was leaving behind a tmp file with no permissions causing issues when
deleting the build directory on Windows.

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

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

9 years ago[mips] Partially revert r223927: Removing __SIZEOF_INT128__ macro for MIPS64
Vasileios Kalintiris [Thu, 12 Feb 2015 11:36:56 +0000 (11:36 +0000)]
[mips] Partially revert r223927: Removing __SIZEOF_INT128__ macro for MIPS64

Partially revert r223927 because LLVM gained support for 128-bit integers
in r227089. Modify and keep the tests that verify the definition of the
macro __SIZEOF_INT128__ for MIPS64 BE & LE in the preprocessor.

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

9 years agoFix tests so they work when the linker is gcc
Filipe Cabecinhas [Thu, 12 Feb 2015 03:37:55 +0000 (03:37 +0000)]
Fix tests so they work when the linker is gcc

If the linker is gcc (the default for Generic_ELF toolchains), we end up
passing most of the arguments to the linker.

Some tests were failing to account for this in their usage of *-NOT: lines
and would fail if compiled with
-DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-unknown

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

9 years agoAdd InlineAsmDiagnosticHandler for bitcode input
Steven Wu [Thu, 12 Feb 2015 02:06:55 +0000 (02:06 +0000)]
Add InlineAsmDiagnosticHandler for bitcode input

Summary:
This patch installs an InlineAsmDiagnosticsHandler to avoid the crash
report when the input is bitcode and the bitcode contains invalid inline
assembly. The handler will simply print the same error message that will
print from the backend.

Add CHECK in test-case

Reviewers: echristo, rafael

Reviewed By: rafael

Subscribers: rafael, cfe-commits

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

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

9 years agoMore for DR1467: In C++, when initializing an element of an aggregate,
Richard Smith [Thu, 12 Feb 2015 01:55:09 +0000 (01:55 +0000)]
More for DR1467: In C++, when initializing an element of an aggregate,
always use the normal copy-initialization rules. Remove a special case that
tries to stay within the list initialization checker here; that makes us do the
wrong thing when list-initialization of an aggregate would not perform
aggregate initialization.

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

9 years agoImprove the "braces around scalar init" warning to determine whether to warn
Richard Smith [Thu, 12 Feb 2015 01:50:05 +0000 (01:50 +0000)]
Improve the "braces around scalar init" warning to determine whether to warn
based on whether "redundant" braces are ever reasonable as part of the
initialization of the entity, rather than whether the initialization is
"top-level". In passing, add a warning flag for it.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Wed, 11 Feb 2015 22:33:32 +0000 (22:33 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoAdd the 'noinline' attribute to call sites within __try bodies
Reid Kleckner [Wed, 11 Feb 2015 21:40:48 +0000 (21:40 +0000)]
Add the 'noinline' attribute to call sites within __try bodies

LLVM doesn't support non-call exceptions, so inlining makes it harder to
catch such asynchronous exceptions.

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

9 years agoFix REQUIRES lines on tests from r228735. Thanks Kristof for pointing out the missin...
Pete Cooper [Wed, 11 Feb 2015 19:45:13 +0000 (19:45 +0000)]
Fix REQUIRES lines on tests from r228735.  Thanks Kristof for pointing out the missing commas

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

9 years agoCXXInheritance: Modernize removal of hidden virtual base class decls.
Benjamin Kramer [Wed, 11 Feb 2015 19:09:16 +0000 (19:09 +0000)]
CXXInheritance: Modernize removal of hidden virtual base class decls.

NFC.

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

9 years agoAdd a comdat to __clang_call_terminate
Reid Kleckner [Wed, 11 Feb 2015 18:50:13 +0000 (18:50 +0000)]
Add a comdat to __clang_call_terminate

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

9 years agoFix PR19351. While building up a composite type it is important to use
Adrian Prantl [Wed, 11 Feb 2015 17:45:15 +0000 (17:45 +0000)]
Fix PR19351. While building up a composite type it is important to use
a non-uniqueable temporary node that is only turned into a permanent
unique or distinct node after it is finished.
Otherwise an intermediate node may get accidentally uniqued with another
node as illustrated by the testcase.

Paired commit with LLVM.

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

9 years agoFix amount of diagnostic classes
Alex Denisov [Wed, 11 Feb 2015 07:56:16 +0000 (07:56 +0000)]
Fix amount of diagnostic classes

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

9 years agoInstrProf: Add a test for PR22531
Justin Bogner [Wed, 11 Feb 2015 02:53:03 +0000 (02:53 +0000)]
InstrProf: Add a test for PR22531

This is a test for the llvm change in r228793. We need to make sure
that names referred to by coverage end up in the right section, or the
coverage tools won't work.

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

9 years agoAdd a warning for direct-list-initialization of a variable with a deduced type
Richard Smith [Wed, 11 Feb 2015 02:41:33 +0000 (02:41 +0000)]
Add a warning for direct-list-initialization of a variable with a deduced type
(or of a lambda init-capture, which is sort-of such a variable). The semantics
of such constructs will change when we implement N3922, so we intend to warn on
this in Clang 3.6 then change the semantics in Clang 3.7.

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

9 years agoPR21857: weaken an incorrect assertion.
Richard Smith [Wed, 11 Feb 2015 01:48:47 +0000 (01:48 +0000)]
PR21857: weaken an incorrect assertion.

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

9 years agoEmit landing pads for SEH even if nounwind is present
Reid Kleckner [Wed, 11 Feb 2015 00:00:21 +0000 (00:00 +0000)]
Emit landing pads for SEH even if nounwind is present

Disabling exceptions applies nounwind to lots of functions. SEH catches
asynch exceptions, so emit the landing pad anyway.

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

9 years ago[PowerPC] Remove the --no-tls-optimize workaround from the clang driver
Bill Schmidt [Tue, 10 Feb 2015 20:36:08 +0000 (20:36 +0000)]
[PowerPC] Remove the --no-tls-optimize workaround from the clang driver

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

9 years ago[analyzer] Pass actual state to alloc/dealloc handling functions.
Anton Yartsev [Tue, 10 Feb 2015 20:13:08 +0000 (20:13 +0000)]
[analyzer] Pass actual state to alloc/dealloc handling functions.

The state obtained from CheckerContext::getState() may be outdated by the time the alloc/dealloc handling function is called (e.g. the state was modified but the transition was not performed). State argument was added to all alloc/dealloc handling functions in order to get the latest state and to allow sequential calls to those functions.

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

9 years agoCheck for backtraces in tests which are verifying pretty stack traces from a crashing...
Pete Cooper [Tue, 10 Feb 2015 19:53:38 +0000 (19:53 +0000)]
Check for backtraces in tests which are verifying pretty stack traces from a crashing clang.

PrettyStackTrace now requires the ENABLE_BACKTRACES option.  We need to check for that here or these tests fail llvm-lit.

Reviewed by chandlerc

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

9 years ago[ARM] Add tests for armv6s[-]m being an alias to armv6[-]m
Bradley Smith [Tue, 10 Feb 2015 15:16:49 +0000 (15:16 +0000)]
[ARM] Add tests for armv6s[-]m being an alias to armv6[-]m

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

9 years agoAdd translationUnitDecl matcher.
Samuel Benzaquen [Tue, 10 Feb 2015 14:46:45 +0000 (14:46 +0000)]
Add translationUnitDecl matcher.

Summary: Add translationUnitDecl matcher.

Reviewers: alexfh

Subscribers: klimek, cfe-commits

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

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

9 years agoFix __ldrexd arm intrinsic.
James Molloy [Tue, 10 Feb 2015 09:09:04 +0000 (09:09 +0000)]
Fix __ldrexd arm intrinsic.

The parameter definition of this API is const volatile __int64*, but it is not defined correctly in clang. Move the 'CD' to the correct location.

Bug tracked here: http://llvm.org/bugs/show_bug.cgi?id=21004

Patch by Daniel Jump!

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

9 years agoDo not force "-static" for aarch64 iOS kernel/kext assembly code.
Bob Wilson [Tue, 10 Feb 2015 06:33:04 +0000 (06:33 +0000)]
Do not force "-static" for aarch64 iOS kernel/kext assembly code.

Somehow a check for aarch64 was added to the Darwin toolchain's
isKernelStatic function as part of the initial commit for Apple's
arm64 target (r205100). That check was not in any of Apple's internal
code and no one here knows where it came from. It has been harmless
because "-static" does not change much, if anything, for arm64 iOS code,
but it makes no sense to keep this check.

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

9 years ago[modules] When determining whether a name from a module replaces a name we
Richard Smith [Tue, 10 Feb 2015 03:28:10 +0000 (03:28 +0000)]
[modules] When determining whether a name from a module replaces a name we
already have, check whether the name from the module is actually newer than the
existing declaration. If it isn't, we might (say) replace a visible declaration
with an injected friend, and thus make it invisible (or lose a default argument
or an array bound).

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

9 years agoA temporary fix for backward compatibility breakages caused by PR12117.
Larisse Voufo [Tue, 10 Feb 2015 02:20:14 +0000 (02:20 +0000)]
A temporary fix for backward compatibility breakages caused by PR12117.

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

9 years ago[Static Analyzer] The name of the checker that reports a bug is added
Gabor Horvath [Mon, 9 Feb 2015 22:52:26 +0000 (22:52 +0000)]
[Static Analyzer] The name of the checker that reports a bug is added
to the plist output. This check_name field does not guaranteed to be the
same as the name of the checker in the future.

Reviewer: Anna Zaks

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

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

9 years agoBe more conservative about gethostname()'s truncating behaviour
Ben Langmuir [Mon, 9 Feb 2015 21:55:44 +0000 (21:55 +0000)]
Be more conservative about gethostname()'s truncating behaviour

Don't assume it will provide an error or null-terminate the string on
truncation, since POSIX doesn't guarantee either behaviour (although
Linux and Darwin at least will do the 'right thing').

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

9 years agoDiagnose timeouts in the LockFileManager and delete the dead lock file
Ben Langmuir [Mon, 9 Feb 2015 20:35:13 +0000 (20:35 +0000)]
Diagnose timeouts in the LockFileManager and delete the dead lock file

If the lock file manager times out, we should give an error rather than
silently trying to load the existing module.  And delete the
(presumably) dead lock file, since it will otherwise prevent progress in
future invokations. This is unsound since we have no way to prove that
the lock file we are deleting is the same one we timed out on, but since
the lock is only to avoid excessive rebuilding anyway it should be okay.
Depends on llvm r228603.

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

9 years agoUpdate r228592 for when gethostname() returns an error
Ben Langmuir [Mon, 9 Feb 2015 20:13:11 +0000 (20:13 +0000)]
Update r228592 for when gethostname() returns an error

If gethostname() is not successful, just skip adding the hostname to the
module hash.  And don't bother setting hostname[255] = 0, since if
gethostname() is successful, it will be null-terminated already (and if
it's not successful we don't read the string now.

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

9 years agoAdd missing include from r228592
Ben Langmuir [Mon, 9 Feb 2015 19:30:29 +0000 (19:30 +0000)]
Add missing include from r228592

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

9 years agoAdd the hostname to the module hash to avoid sharing between hosts
Ben Langmuir [Mon, 9 Feb 2015 19:23:08 +0000 (19:23 +0000)]
Add the hostname to the module hash to avoid sharing between hosts

Sharing between hosts will cause problems for the LockFileManager, which
can timeout waiting for a process that has already died.

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

9 years agoDebugInfo: Refactor default arg handling into a common place (instead of handling...
David Blaikie [Mon, 9 Feb 2015 19:13:51 +0000 (19:13 +0000)]
DebugInfo: Refactor default arg handling into a common place (instead of handling in repeatedly for aggregate, complex, and scalar types)

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

9 years agoDebugInfo: Suppress the location of instructions in complex default arguments.
David Blaikie [Mon, 9 Feb 2015 18:55:57 +0000 (18:55 +0000)]
DebugInfo: Suppress the location of instructions in complex default arguments.

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

9 years agoDebugInfo: Suppress the location of instructions in aggregate default arguments.
David Blaikie [Mon, 9 Feb 2015 18:47:14 +0000 (18:47 +0000)]
DebugInfo: Suppress the location of instructions in aggregate default arguments.

Matches the existing code for scalar default arguments. Complex default
arguments probably need the same handling too (test/fix to that coming
next).

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

9 years agoUpdate cxx_status to list features implemented in Clang 3.6.
Benjamin Kramer [Mon, 9 Feb 2015 11:48:43 +0000 (11:48 +0000)]
Update cxx_status to list features implemented in Clang 3.6.

Still yellow because 3.6 is unreleased. While there make Urbana paper
links clickable and list binary literals as available in Clang 2.9
(they've been available basically since the dawn of Clang, but not
having a version number in the table looks weird)

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

9 years agoSema: Don't give attribute alias vars with struct type an init expr
David Majnemer [Sun, 8 Feb 2015 10:55:14 +0000 (10:55 +0000)]
Sema: Don't give attribute alias vars with struct type an init expr

We'd give the VarDecl a CXXConstructExpr even though it is annotated
with an alias attribute.  This would make us trip over sanity checking
asserts.

This fixes PR22493.

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

9 years agoclang-format: Correctly mark preprocessor lines in child blocks.
Daniel Jasper [Sun, 8 Feb 2015 09:34:49 +0000 (09:34 +0000)]
clang-format: Correctly mark preprocessor lines in child blocks.

This prevents contracting:
  auto lambda = []() {
    int a = 2
  #if A
            + 2
  #endif
        ;
  };

into:
  auto lambda = []() { int a = 2
  #if A + 2
  #endif ; };

Which is obviously BAD.

This fixes llvm.org/PR22496.

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

9 years agoReplace DeclContext::getNextContext with DeclContext::collectAllContexts
Yaron Keren [Sat, 7 Feb 2015 22:16:16 +0000 (22:16 +0000)]
Replace DeclContext::getNextContext with DeclContext::collectAllContexts
in the Clang CFE Internals Manual (done in r147729).

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

9 years agoCodeGen: Move DebugLocs.
Benjamin Kramer [Sat, 7 Feb 2015 13:15:54 +0000 (13:15 +0000)]
CodeGen: Move DebugLocs.

It's slightly cheaper than copying it, if the DebugLoc points to replaceable
metadata every copy is recorded in a DenseMap, moving reduces the peak size of
that map.

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

9 years ago[modules] Treat friend declarations that are lexically within a dependent
Richard Smith [Sat, 7 Feb 2015 03:11:11 +0000 (03:11 +0000)]
[modules] Treat friend declarations that are lexically within a dependent
context as anonymous for merging purposes. They can't be found by their names,
so we merge them based on their position within the surrounding context.

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

9 years agoclang-format: Format Objective-C try blocks like all the other try blocks.
Nico Weber [Sat, 7 Feb 2015 01:57:32 +0000 (01:57 +0000)]
clang-format: Format Objective-C try blocks like all the other try blocks.

Before:

  @try {
    // ...
  }
  @finally {
    // ...
  }

Now:

  @try {
    // ...
  } @finally {
    // ...
  }

This is consistent with how we format C++ try blocks and SEH try blocks.
clang-format not doing this before was an implementation oversight.

This is dependent on BraceBreakingStyle.  The snippet above is with the
Attach style.  Style Stroustrip for example still results in the "Before:"
snippet, which makes sense since other blocks (try, else) break after '}' too.

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

9 years agoMake the byte-shift SSE intrinsics emit vector shuffles which we know the backend...
Filipe Cabecinhas [Sat, 7 Feb 2015 01:37:09 +0000 (01:37 +0000)]
Make the byte-shift SSE intrinsics emit vector shuffles which we know the backend can handle.

Also removed unused builtins.

Original patch by Andrea Di Biagio!

Reviewers: craig.topper, nadav

Subscribers: cfe-commits

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

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

9 years ago[modules] Don't accidentally trigger deserialization from DeclContext::noload_lookup.
Richard Smith [Sat, 7 Feb 2015 00:45:52 +0000 (00:45 +0000)]
[modules] Don't accidentally trigger deserialization from DeclContext::noload_lookup.

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

9 years agoPR22405: don't lose implicit-deleted-ness across AST write / read.
Richard Smith [Fri, 6 Feb 2015 23:20:21 +0000 (23:20 +0000)]
PR22405: don't lose implicit-deleted-ness across AST write / read.

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

9 years agoMake this test a little less specific by removing the argument that
Eric Christopher [Fri, 6 Feb 2015 20:53:40 +0000 (20:53 +0000)]
Make this test a little less specific by removing the argument that
could change.

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

9 years agoASTUnit: Fix a name clash in GCC builds.
Benjamin Kramer [Fri, 6 Feb 2015 18:58:04 +0000 (18:58 +0000)]
ASTUnit: Fix a name clash in GCC builds.

Should fix the build. Looks like GCC 4.9 is using different scoping rules for
range-based for loops.

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

9 years agoInline asm IR input register constraints don't have early clobber
Eric Christopher [Fri, 6 Feb 2015 18:44:18 +0000 (18:44 +0000)]
Inline asm IR input register constraints don't have early clobber
modifiers on them. If we have a matching output constraint with
an early clobber make sure we don't propagate that to the input
constraint.

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

9 years agoASTUnit: Use range-based for loops.
Benjamin Kramer [Fri, 6 Feb 2015 18:36:04 +0000 (18:36 +0000)]
ASTUnit: Use range-based for loops.

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

9 years ago-iframework option should be forwarded to linker
Steven Wu [Fri, 6 Feb 2015 18:08:29 +0000 (18:08 +0000)]
-iframework option should be forwarded to linker

Summary:
-iframework option is used to specified System framework path so the
path specified should be passed to linker as -F option
rdar://problem/18234544

Reviewers: bob.wilson

Subscribers: cfe-commits

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

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

9 years agoMake FileEntry::closeFile public
Ben Langmuir [Fri, 6 Feb 2015 17:34:28 +0000 (17:34 +0000)]
Make FileEntry::closeFile public

If you request that the file manager not close your file immediately
after reading, it's useful to be able to close it later to prevent a
file descriptor leak.

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

9 years agoRevert "OpenCL: handle shift operator with vector operands"
Tom Stellard [Fri, 6 Feb 2015 17:30:04 +0000 (17:30 +0000)]
Revert "OpenCL: handle shift operator with vector operands"

This reverts commit r228382.

This breaks the following case:  Reported by Jeroen Ketema:
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150202/122961.html

typedef __attribute__((ext_vector_type(3))) char char3;

void foo() {
 char3 v = {1,1,1};
 char3 w = {1,2,3};

 w <<= v;
}

If I compile with:

 clang -x cl file.c

Then an error is produced:

file.c:10:5: error: expression is not assignable
 w <<= v;
 ~ ^
1 error generated.

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

9 years agoUpdate APIs that return a pair of iterators to return an iterator_range instead.
Benjamin Kramer [Fri, 6 Feb 2015 17:25:10 +0000 (17:25 +0000)]
Update APIs that return a pair of iterators to return an iterator_range instead.

Convert uses of those APIs into ranged for loops. NFC.

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

9 years ago[PowerPC] Re-disable linker optimizations for now
Bill Schmidt [Fri, 6 Feb 2015 15:31:03 +0000 (15:31 +0000)]
[PowerPC] Re-disable linker optimizations for now

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

9 years agoAdded a test to check that exception flags are not passed by default on PS4.
Andrea Di Biagio [Fri, 6 Feb 2015 13:02:39 +0000 (13:02 +0000)]
Added a test to check that exception flags are not passed by default on PS4.

This patch adds an extra test case to clang-exception-flags.cpp.
No functional change intended.

Patch by Wolfgang Pieb!

Reviewers: filcab, alexr

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

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

9 years agoOpenCL: handle shift operator with vector operands
Sameer Sahasrabuddhe [Fri, 6 Feb 2015 05:44:55 +0000 (05:44 +0000)]
OpenCL: handle shift operator with vector operands

Introduce a number of checks:
1. If LHS is a scalar, then RHS cannot be a vector.
2. Operands must be of integer type.
3. If both are vectors, then the number of elements must match.

Relax the requirement for "usual arithmetic conversions":
When LHS is a vector, a scalar RHS can simply be expanded into a
vector; OpenCL does not require that its rank be lower than the LHS.
For example, the following code is not an error even if the implicit
type of the constant literal is "int".

  char2 foo(char2 v) { return v << 1; }

Consolidate existing tests under CodeGenOpenCL, and add more tests
under SemaOpenCL.

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

9 years ago[modules] If a module declares an entity and then imports another declaration
Richard Smith [Fri, 6 Feb 2015 02:42:59 +0000 (02:42 +0000)]
[modules] If a module declares an entity and then imports another declaration
of that entity, ensure that the redeclaration chain is reordered properly on
reload. Otherwise, the result of name lookup for that entity may point to an
entity that is too old; if that's an injected friend name or the like, that
can result in the name not being found at all.

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

9 years agoPreprocessor: support __BIGGEST_ALIGNMENT__ macro
Tim Northover [Fri, 6 Feb 2015 01:25:07 +0000 (01:25 +0000)]
Preprocessor: support __BIGGEST_ALIGNMENT__ macro

For compatibility with GCC (and because it's generally helpful information
otherwise inaccessible to the preprocessor). This appears to be canonically the
alignment of max_align_t (e.g. on i386, __BIGGEST_ALIGNMENT__ is 4 even though
vector types will be given greater alignment).

Patch mostly by Mats Petersson

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

9 years agoFix \param in r228276. [-Wdocumentation]
NAKAMURA Takumi [Thu, 5 Feb 2015 23:12:13 +0000 (23:12 +0000)]
Fix \param in r228276. [-Wdocumentation]

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

9 years ago[modules] Refactor: unify the code that picks which declaration goes into a
Richard Smith [Thu, 5 Feb 2015 23:08:52 +0000 (23:08 +0000)]
[modules] Refactor: unify the code that picks which declaration goes into a
name lookup table.

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

9 years agoForce an unknown target for the default case to make it work.
Filipe Cabecinhas [Thu, 5 Feb 2015 19:48:48 +0000 (19:48 +0000)]
Force an unknown target for the default case to make it work.

Summary:
This test was failing if LLVM_DEFAULT_TARGET_TRIPLE=x86_64-scei-ps4 due to
its behavior for exceptions.
Force an --unknown triple for the default case.

Reviewers: echristo, chandlerc

Subscribers: cfe-commits

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

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

9 years agoRe-land r228258 and make clang-cl's /EHs- disable -fexceptions again
Reid Kleckner [Thu, 5 Feb 2015 18:56:03 +0000 (18:56 +0000)]
Re-land r228258 and make clang-cl's /EHs- disable -fexceptions again

After r228258, Clang started emitting C++ EH IR that LLVM wasn't ready
to deal with, even when exceptions were disabled with /EHs-. This time,
make /EHs- turn off -fexceptions while still emitting exceptional
constructs in functions using __try.  Since Sema rejects C++ exception
handling constructs before CodeGen, landingpads should only appear in
such functions as the result of a __try.

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

9 years agoclang-format: Fix assert triggering on carriage returns.
Daniel Jasper [Thu, 5 Feb 2015 11:05:31 +0000 (11:05 +0000)]
clang-format: Fix assert triggering on carriage returns.

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

9 years agoPR22465: when performing list-initialization for a class type C, if we see an
Richard Smith [Thu, 5 Feb 2015 07:02:11 +0000 (07:02 +0000)]
PR22465: when performing list-initialization for a class type C, if we see an
initializer of the form {x}, where x is of type C or a type derived from C,
perform *non-list* initialization of the entity from x, but create a
CXXConstructExpr that knows that we used list-initialization syntax.

Plus some fixes to ensure we mangle correctly in this and related cases.

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