]> granicus.if.org Git - clang/log
clang
12 years agoRevert previous commit changing location information to see if this
Eric Christopher [Fri, 30 Mar 2012 05:42:12 +0000 (05:42 +0000)]
Revert previous commit changing location information to see if this
is causing the gdb test failures on the bots.

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

12 years agoAdd _mm_minpos_epu16 to smmintrin.h. Fixes PR12399.
Craig Topper [Fri, 30 Mar 2012 05:41:28 +0000 (05:41 +0000)]
Add _mm_minpos_epu16 to smmintrin.h. Fixes PR12399.

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

12 years agoForbid the block and lambda copy-capture of __autoreleasing variables
John McCall [Fri, 30 Mar 2012 05:23:48 +0000 (05:23 +0000)]
Forbid the block and lambda copy-capture of __autoreleasing variables
in ARC, under the usual reasoning limiting the use of __autoreleasing.

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

12 years agoFix shuffle vector calculation for mm_permute_ps. Fixes PR 12401.
Craig Topper [Fri, 30 Mar 2012 05:09:18 +0000 (05:09 +0000)]
Fix shuffle vector calculation for mm_permute_ps. Fixes PR 12401.

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

12 years agoWhen emitting a static local variable in C++, handle
John McCall [Fri, 30 Mar 2012 04:25:14 +0000 (04:25 +0000)]
When emitting a static local variable in C++, handle
the case that the variable already exists.  Partly this is just
protection against people making crazy declarations with custom
asm labels or extern "C" names that intentionally collide with
the manglings of such variables, but the main reason is that we
can actually emit a static local variable twice with the
requirement that it match up.  There may be other cases with
(e.g.) the various nested functions, but the main exemplar is
with constructor variants, where we can be forced into
double-emitting the function body under certain circumstances
like (currently) the presence of virtual bases.

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

12 years agoAdd a note about a missing optimization in the case of virtual
John McCall [Fri, 30 Mar 2012 04:25:03 +0000 (04:25 +0000)]
Add a note about a missing optimization in the case of virtual
inheritance.

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

12 years agoMissing piece of r153720: make sure the vtable pointer is handled correctly.
Eli Friedman [Fri, 30 Mar 2012 04:16:06 +0000 (04:16 +0000)]
Missing piece of r153720: make sure the vtable pointer is handled correctly.

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

12 years agoConstStructBuilder: fix offset math for base classes so it works correctly in general...
Eli Friedman [Fri, 30 Mar 2012 03:55:31 +0000 (03:55 +0000)]
ConstStructBuilder: fix offset math for base classes so it works correctly in general.  Found by inspection.

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

12 years agoMake sure we perform the relevant implied conversions correctly for ObjC methods...
Eli Friedman [Fri, 30 Mar 2012 01:13:43 +0000 (01:13 +0000)]
Make sure we perform the relevant implied conversions correctly for ObjC methods with related result types. PR12384.

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

12 years agoTestcase for the previous commit.
Eric Christopher [Fri, 30 Mar 2012 01:07:51 +0000 (01:07 +0000)]
Testcase for the previous commit.

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

12 years agoChange location information for synthesized properties to be at the
Eric Christopher [Fri, 30 Mar 2012 01:07:48 +0000 (01:07 +0000)]
Change location information for synthesized properties to be at the
property file/line rather than the @synthesize file/line. Avoids
some nasty confusing-ness with conflating the file from the scope
and the line from the original declaration.

Update a couple of testcases accordingly since I had to change
that we actually use the passed in location in EmitFunctionStart.

Fixes rdar://11026482

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

12 years agoThe UTF16 string referenced by a CFString should go into the __TEXT,__ustring
Bill Wendling [Fri, 30 Mar 2012 00:26:17 +0000 (00:26 +0000)]
The UTF16 string referenced by a CFString should go into the __TEXT,__ustring
section. A 'normal' string will go into the __TEXT,__const section, but this
isn't good for UTF16 strings. The __ustring section allows for coalescing, among
other niceties (such as allowing the linker to easily split up strings).

Instead of outputting the UTF16 string as a series of bytes, output it as a
series of shorts. The back-end will then nicely place the UTF16 string into the
correct section, because it's a mensch.
<rdar://problem/10655949>

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

12 years agoAdd info to ObjCPropertyRefExpr to indicate whether the dot syntax property
Argyrios Kyrtzidis [Fri, 30 Mar 2012 00:19:18 +0000 (00:19 +0000)]
Add info to ObjCPropertyRefExpr to indicate whether the dot syntax property
reference is going to message the setter, the getter, or both.

Having this info on the ObjCPropertyRefExpr node makes it easier for AST
clients (like libclang) to reason about the meaning of the property reference.

[AST/Sema]
-Use 2 bits (with a PointerIntPair) in ObjCPropertyRefExpr to record the above info
-Have ObjCPropertyOpBuilder set the info appropriately.

[libclang]
-When there is an implicit property reference (property syntax using methods)
have clang_getCursorReferenced return a cursor for the method. If the property
reference is going to result in messaging both the getter and the setter choose
to return a cursor for the setter because it is less obvious from source inspection
that the setter is getting called.

The general idea has the seal of approval by John.

rdar://11151621

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

12 years ago[libclang] A MemberRefExpr cursor for a property dot syntax should have as
Argyrios Kyrtzidis [Fri, 30 Mar 2012 00:19:13 +0000 (00:19 +0000)]
[libclang] A MemberRefExpr cursor for a property dot syntax should have as
its location the location of the property.

Part of rdar://11113120

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

12 years ago[libclang] Have c-index-test output more information about a cursor with -cursor-at:
Argyrios Kyrtzidis [Fri, 30 Mar 2012 00:19:05 +0000 (00:19 +0000)]
[libclang] Have c-index-test output more information about a cursor with -cursor-at:

-the location of the cursor
-its extent
-its spelling

Part of radar://11113120

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

12 years agoExtend -Wc++11-narrowing to cover converted constant expressions as well as braced...
Eli Friedman [Thu, 29 Mar 2012 23:39:39 +0000 (23:39 +0000)]
Extend -Wc++11-narrowing to cover converted constant expressions as well as braced-initializers.  <rdar://problem/11121178>.

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

12 years ago[analyzer] Add a malloc cpp test file.
Anna Zaks [Thu, 29 Mar 2012 23:26:54 +0000 (23:26 +0000)]
[analyzer] Add a malloc cpp test file.

Includes a test from a reported false positive fixed in some earlier
commit.

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

12 years agoFix whitespace.
Bill Wendling [Thu, 29 Mar 2012 22:12:09 +0000 (22:12 +0000)]
Fix whitespace.

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

12 years agoARM backend knows about cortex-m4. The front end should too.
Jim Grosbach [Thu, 29 Mar 2012 19:53:34 +0000 (19:53 +0000)]
ARM backend knows about cortex-m4. The front end should too.

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

12 years agomodern objc translator: avoid some duplicate declarations.
Fariborz Jahanian [Thu, 29 Mar 2012 19:04:10 +0000 (19:04 +0000)]
modern objc translator: avoid some duplicate declarations.

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

12 years agoRefactor special member function deletion. No functionality change.
Richard Smith [Thu, 29 Mar 2012 19:00:10 +0000 (19:00 +0000)]
Refactor special member function deletion. No functionality change.

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

12 years agoRelax the test slightly so that it should pass on other people's computers.
David Chisnall [Thu, 29 Mar 2012 18:41:08 +0000 (18:41 +0000)]
Relax the test slightly so that it should pass on other people's computers.

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

12 years agomodern objc translator: additional test.
Fariborz Jahanian [Thu, 29 Mar 2012 18:20:51 +0000 (18:20 +0000)]
modern objc translator: additional test.

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

12 years agoCall out to GCC-compatible runtime functions for atomic ops that we can't use
David Chisnall [Thu, 29 Mar 2012 18:01:11 +0000 (18:01 +0000)]
Call out to GCC-compatible runtime functions for atomic ops that we can't use
LLVM intrinsics for.

I have an implementation of these functions, which wants to go in a libgcc_s
equivalent in compiler-rt.  It's currently here:

http://people.freebsd.org/~theraven/atomic.c

It will be committed to compiler-rt as soon as I work out where would be a
sensible place to put it...

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

12 years agoPass parameters in the correct order when assembling an AtomicExpr.
David Chisnall [Thu, 29 Mar 2012 17:58:59 +0000 (17:58 +0000)]
Pass parameters in the correct order when assembling an AtomicExpr.

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

12 years agomodern objective-c translator: fix up assortment of
Fariborz Jahanian [Thu, 29 Mar 2012 17:51:09 +0000 (17:51 +0000)]
modern objective-c translator: fix up assortment of
visibility directives for a variety of exported
meta-data symbols. // rdar://11144048

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

12 years agoRevert r153613 as it's causing large compile-time regressions on the nightly testers.
Chad Rosier [Thu, 29 Mar 2012 17:37:10 +0000 (17:37 +0000)]
Revert r153613 as it's causing large compile-time regressions on the nightly testers.

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

12 years agoGo back to using just the selector name for the getter and setter
Eric Christopher [Thu, 29 Mar 2012 17:31:33 +0000 (17:31 +0000)]
Go back to using just the selector name for the getter and setter
in the property debug info. Any more isn't necessary after all.

rdar://11144023

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

12 years agoTidy.
Eric Christopher [Thu, 29 Mar 2012 17:31:31 +0000 (17:31 +0000)]
Tidy.

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

12 years agoMake ModuleMapParser own its TargetInfo, so it doesn't get leaked.
Benjamin Kramer [Thu, 29 Mar 2012 14:07:03 +0000 (14:07 +0000)]
Make ModuleMapParser own its TargetInfo, so it doesn't get leaked.

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

12 years ago Add support for objc property decls according to the page at:
Eric Christopher [Thu, 29 Mar 2012 08:43:37 +0000 (08:43 +0000)]
Add support for objc property decls according to the page at:

    http://llvm.org/docs/SourceLevelDebugging.html#objcproperty

    including type and DECL. Expand the getter and setter names
    into the fully qualified names.

    rdar://11144023

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

12 years agounwind.h fix for -fvisibility=hidden users. This fixes firefox build in a system
Rafael Espindola [Thu, 29 Mar 2012 03:37:17 +0000 (03:37 +0000)]
unwind.h fix for -fvisibility=hidden users. This fixes firefox build in a system
with libunwind installed.
Patch by Jeffrey Yasskin!

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

12 years agoDon't try to parse a malformed parameter list after a constructor or operator
Richard Smith [Thu, 29 Mar 2012 01:46:00 +0000 (01:46 +0000)]
Don't try to parse a malformed parameter list after a constructor or operator
name as a direct initializer.

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

12 years agoReject 'template<typename...Ts> void f(Ts ...(x));'. Add a special-case
Richard Smith [Thu, 29 Mar 2012 01:16:42 +0000 (01:16 +0000)]
Reject 'template<typename...Ts> void f(Ts ...(x));'. Add a special-case
diagnostic and a fix-it to explain to the user where the ellipsis is
supposed to go.

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

12 years ago[arcmt] Fix a bug where a property in a class extension, that did not exist
Argyrios Kyrtzidis [Thu, 29 Mar 2012 01:10:31 +0000 (01:10 +0000)]
[arcmt] Fix a bug where a property in a class extension, that did not exist
in the interface, got its attribute rewritten twice, resulting in
'weakweak' or 'strongstrong'.

rdar://11047179

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

12 years agoDefine __LITTLE_ENDIAN__ for le32, since "le" stands for little endian.
Jan Wen Voung [Thu, 29 Mar 2012 00:05:59 +0000 (00:05 +0000)]
Define __LITTLE_ENDIAN__ for le32, since "le" stands for little endian.
Add a test for this too.

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

12 years agoWhen we can't prove that the target of an aggregate copy is
John McCall [Wed, 28 Mar 2012 23:30:44 +0000 (23:30 +0000)]
When we can't prove that the target of an aggregate copy is
a complete object, the memcpy needs to use the data size of
the structure instead of its sizeof() value.  Fixes PR12204.

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

12 years agoFix typo in my last patch.
Fariborz Jahanian [Wed, 28 Mar 2012 21:13:53 +0000 (21:13 +0000)]
Fix typo in my last patch.

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

12 years ago[libclang] Fix CIndexer::isOptEnabled(); not sure what I was thinking there.
Argyrios Kyrtzidis [Wed, 28 Mar 2012 20:42:59 +0000 (20:42 +0000)]
[libclang] Fix CIndexer::isOptEnabled(); not sure what I was thinking there.

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

12 years ago[analyzer] Enable retry exhausted without inlining by default.
Anna Zaks [Wed, 28 Mar 2012 19:59:16 +0000 (19:59 +0000)]
[analyzer] Enable retry exhausted without inlining by default.

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

12 years agoFix the type of wchar_t on Solaris.
David Chisnall [Wed, 28 Mar 2012 18:04:14 +0000 (18:04 +0000)]
Fix the type of wchar_t on Solaris.

Patch by Dmitri Shubin!

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

12 years agoobjective-c: Improve diagnostics and
Fariborz Jahanian [Wed, 28 Mar 2012 17:56:49 +0000 (17:56 +0000)]
objective-c: Improve diagnostics and
provide 'fixit' hint when dictionary index
is not of proper type. // rdar://11062080

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

12 years ago[analyser] Stats checker: do not mark a node as exhausted if we will
Anna Zaks [Wed, 28 Mar 2012 17:05:50 +0000 (17:05 +0000)]
[analyser] Stats checker: do not mark a node as exhausted if we will
retry without inlining.

(+ other minor cleanups)

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

12 years ago[analyzer] Refactor: Use Decl when determining if the Block belongs to
Anna Zaks [Wed, 28 Mar 2012 17:05:46 +0000 (17:05 +0000)]
[analyzer] Refactor: Use Decl when determining if the Block belongs to
the root function.

(This is a bit cleaner then using the StackFrame.)

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

12 years agoCodeGen/CGDeclCXX.cpp: Twine-ize CreateGlobalInitOrDestructFunction().
NAKAMURA Takumi [Wed, 28 Mar 2012 16:24:29 +0000 (16:24 +0000)]
CodeGen/CGDeclCXX.cpp: Twine-ize CreateGlobalInitOrDestructFunction().

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

12 years agoUnify and fix our checking of C++ [dcl.meaning]p1's requirements
Douglas Gregor [Wed, 28 Mar 2012 16:01:27 +0000 (16:01 +0000)]
Unify and fix our checking of C++ [dcl.meaning]p1's requirements
concerning qualified declarator-ids. We now diagnose extraneous
qualification at namespace scope (which we had previously missed) and
diagnose these qualification errors for all kinds of declarations; it
was rather uneven before. Fixes <rdar://problem/11135644>.

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

12 years agoWhen we form a new function/class template specialization, we first
Douglas Gregor [Wed, 28 Mar 2012 14:34:23 +0000 (14:34 +0000)]
When we form a new function/class template specialization, we first
search for the specialization (in a folding set) and, if not found
form a *Decl that is then inserted into that folding set. In rare
cases, the folding set may be reallocated between the search and the
insertion, causing a crash. No test case, because triggering rehashing
consistently in a small test case is not feasible. Fixes
<rdar://problem/11115071>.

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

12 years agoFix suspicious comparison reported by PVS-Studio!
Ted Kremenek [Wed, 28 Mar 2012 05:24:50 +0000 (05:24 +0000)]
Fix suspicious comparison reported by PVS-Studio!

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

12 years ago[libclang] Rename setBackGroundPriority -> setThreadBackgroundPriority.
Argyrios Kyrtzidis [Wed, 28 Mar 2012 02:49:54 +0000 (02:49 +0000)]
[libclang] Rename setBackGroundPriority -> setThreadBackgroundPriority.

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

12 years ago[libclang] Fix gcc error.
Argyrios Kyrtzidis [Wed, 28 Mar 2012 02:49:50 +0000 (02:49 +0000)]
[libclang] Fix gcc error.

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

12 years ago[libclang] Introduce options to control the priority for the threads
Argyrios Kyrtzidis [Wed, 28 Mar 2012 02:18:05 +0000 (02:18 +0000)]
[libclang] Introduce options to control the priority for the threads
that libclang creates.

-Introduce CXGlobalOptFlags enum for the new options that can be
 set on the CXIndex object.

-CXGlobalOpt_ThreadBackgroundPriorityForIndexing affects:
  clang_indexSourceFile
  clang_indexTranslationUnit
  clang_parseTranslationUnit
  clang_saveTranslationUnit

-CXGlobalOpt_ThreadBackgroundPriorityForEditing affects:
  clang_reparseTranslationUnit
  clang_codeCompleteAt
  clang_annotateTokens

rdar://9075282

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

12 years ago[libclang] Put the CIndexer class in the clang namespace instead of having
Argyrios Kyrtzidis [Wed, 28 Mar 2012 02:18:02 +0000 (02:18 +0000)]
[libclang] Put the CIndexer class in the clang namespace instead of having
it at global namespace.

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

12 years ago[libclang] For clang_saveTranslationUnit, if the AST to save has invalid nodes
Argyrios Kyrtzidis [Wed, 28 Mar 2012 02:17:59 +0000 (02:17 +0000)]
[libclang] For clang_saveTranslationUnit, if the AST to save has invalid nodes
due to compiler errors, use a crash recovery thread to do the AST writing for
protection.

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

12 years agoMove the emission of strict enum range metadata behind a flag (the same
Chandler Carruth [Tue, 27 Mar 2012 23:58:37 +0000 (23:58 +0000)]
Move the emission of strict enum range metadata behind a flag (the same
flag as GCC uses: -fstrict-enums). There is a *lot* of code making
unwarranted assumptions about the underlying type of enums, and it
doesn't seem entirely reasonable to eagerly break all of it.

Much more importantly, the current state of affairs is *very* good at
optimizing based upon this information, which causes failures that are
very distant from the actual enum. Before we push for enabling this by
default, I think we need to implement -fcatch-undefined-behavior support
for instrumenting and trapping whenever we store or load a value outside
of the range. That way we can track down the misbehaving code very
quickly.

I discussed this with Rafael, and currently the only important cases he
is aware of are the bool range-based optimizations which are staying
hard enabled. We've not seen any issue with those either, and they are
much more important for performance.

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

12 years agoIntroduce a new libclang API to determine the parent context of a code
Douglas Gregor [Tue, 27 Mar 2012 23:34:16 +0000 (23:34 +0000)]
Introduce a new libclang API to determine the parent context of a code
completion item. For example, if the code completion itself represents
a declaration in a namespace (say, std::vector), then this API
retrieves the cursor kind and name of the namespace (std). Implements
<rdar://problem/11121951>.

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

12 years agoIf we see '(...' where we're expecting an abstract-declarator, that doesn't
Richard Smith [Tue, 27 Mar 2012 23:05:05 +0000 (23:05 +0000)]
If we see '(...' where we're expecting an abstract-declarator, that doesn't
necessarily mean we've found a function declarator. If the next token is not
a ')', this is actually a parenthesized pack expansion.

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

12 years ago[libclang] Introduce indexing option CXIndexOpt_SuppressWarnings, which
Argyrios Kyrtzidis [Tue, 27 Mar 2012 21:38:03 +0000 (21:38 +0000)]
[libclang] Introduce indexing option CXIndexOpt_SuppressWarnings, which
disables all compiler warnings.

rdar://11059556

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

12 years agomodern objective-c translator: writing objc boolean literals.
Fariborz Jahanian [Tue, 27 Mar 2012 20:17:30 +0000 (20:17 +0000)]
modern objective-c translator: writing objc boolean literals.
// rdar://11124775

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

12 years ago[analyzer] Add an option to re-analyze a dead-end path without inlining.
Anna Zaks [Tue, 27 Mar 2012 20:02:53 +0000 (20:02 +0000)]
[analyzer] Add an option to re-analyze a dead-end path without inlining.

The analyzer gives up path exploration under certain conditions. For
example, when the same basic block has been visited more than 4 times.
With inlining turned on, this could lead to decrease in code coverage.
Specifically, if we give up inside the inlined function, the rest of
parent's basic blocks will not get analyzed.

This commit introduces an option to enable re-run along the failed path,
in which we do not inline the last inlined call site. This is done by
enqueueing the node before the processing of the inlined call site
with a special policy encoded in the state. The policy tells us not to
inline the call site along the path.

This lead to ~10% increase in the number of paths analyzed. Even though
we expected a much greater coverage improvement.

The option is turned off by default for now.

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

12 years ago[analyzer] Fix a typo.
Anna Zaks [Tue, 27 Mar 2012 20:02:47 +0000 (20:02 +0000)]
[analyzer] Fix a typo.

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

12 years ago[analyzer] Stats checker: minor interprocedural tweaks.
Anna Zaks [Tue, 27 Mar 2012 20:02:44 +0000 (20:02 +0000)]
[analyzer] Stats checker: minor interprocedural tweaks.

Report root function name with exhausted block diagnostic.

Also, use stack frames, not just any location context when checking if
the basic block is in the same context.

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

12 years ago[analyzer] Stats: Only count the number of times we run path sensitive
Anna Zaks [Tue, 27 Mar 2012 20:02:41 +0000 (20:02 +0000)]
[analyzer] Stats: Only count the number of times we run path sensitive
analyzes.

(This method can be called twice on the same function.)

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

12 years agoAdd better support for $fp and $sp for mips inline asm support.
Eric Christopher [Tue, 27 Mar 2012 19:56:11 +0000 (19:56 +0000)]
Add better support for $fp and $sp for mips inline asm support.

Patch by Jack Carter.

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

12 years ago[preprocessor] Handle correctly inclusion directives that have macro expansions, e.g
Argyrios Kyrtzidis [Tue, 27 Mar 2012 18:47:48 +0000 (18:47 +0000)]
[preprocessor] Handle correctly inclusion directives that have macro expansions, e.g
"#include MACRO(STUFF)".

-As an inclusion position for the included file, use the file location of the file where it
was included but *after* the macro expansions. We want the macro expansions to be considered
as before-in-translation-unit for everything in the included file.

-In the preprocessing record take into account that only inclusion directives can be encountered
as "out-of-order" (by comparing the start of the range which for inclusions is the hash location)
and use binary search if there is an extreme number of macro expansions in the include directive.

Fixes rdar://11111779

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

12 years agoobjective-c modern translator: move all inithooks into a single array
Fariborz Jahanian [Tue, 27 Mar 2012 18:41:05 +0000 (18:41 +0000)]
objective-c modern translator: move all inithooks into a single array
// rdar://11124354

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

12 years agoEven more careful consideration of C++11 13.3.3.1p4. Fixes PR12241.
Sebastian Redl [Tue, 27 Mar 2012 18:33:03 +0000 (18:33 +0000)]
Even more careful consideration of C++11 13.3.3.1p4. Fixes PR12241.

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

12 years agoIntroduce a -cc1-level option -pubnames-dump, which simply dumps the
Douglas Gregor [Tue, 27 Mar 2012 18:06:49 +0000 (18:06 +0000)]
Introduce a -cc1-level option -pubnames-dump, which simply dumps the
list of identifiers that that 'public' names at the end of the
translation unit, e.g., defined macros or identifiers with top-level
names, in sorted order. Meant to support <rdar://problem/10921596>.

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

12 years agoRemove few if-then-else when both branches are the
Fariborz Jahanian [Tue, 27 Mar 2012 16:42:20 +0000 (16:42 +0000)]
Remove few if-then-else when both branches are the
same. pr12357.

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

12 years agoCommit patch reverted in r153454 with the modified test
Fariborz Jahanian [Tue, 27 Mar 2012 16:21:30 +0000 (16:21 +0000)]
Commit patch reverted in r153454 with the modified test
case that I forgot to check in.

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

12 years agoUpdate the ARC specification for several changes made in the
John McCall [Tue, 27 Mar 2012 07:42:12 +0000 (07:42 +0000)]
Update the ARC specification for several changes made in the
last N months.  This required a brief soliloquy about change in
an uncertainly-versioned world.

I believe I've gotten the right target versions on all these changes.

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

12 years agoAdd cross-referencing comments to ParseDirectDeclarator to note that
Richard Smith [Tue, 27 Mar 2012 01:42:32 +0000 (01:42 +0000)]
Add cross-referencing comments to ParseDirectDeclarator to note that
isConstructorDeclaration also needs updating for any extension to the
grammar of a direct-declarator.

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

12 years agoChange RetainCountChecker to eagerly "escape" retained objects when they are
Ted Kremenek [Tue, 27 Mar 2012 01:12:45 +0000 (01:12 +0000)]
Change RetainCountChecker to eagerly "escape" retained objects when they are
assigned to a struct.  This is fallout from inlining results, which expose
far more patterns where people stuff CF objects into structs and pass them
around (and we can reason about it).  The problem is that we don't have
a general way to detect when values have escaped, so as an intermediate step
we need to eagerly prune out such tracking.

Fixes <rdar://problem/11104566>.

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

12 years agoWhen we see 'Class(X' or 'Class::Class(X' and we suspect that it names a
Richard Smith [Tue, 27 Mar 2012 00:56:56 +0000 (00:56 +0000)]
When we see 'Class(X' or 'Class::Class(X' and we suspect that it names a
constructor, but X is not a known typename, check whether the tokens could
possibly match the syntax of a declarator before concluding that it isn't
a constructor. If it's definitely ill-formed, assume it is a constructor.

Empirical evidence suggests that this pattern is much more often a
constructor with a typoed (or not-yet-declared) type name than any of the
other possibilities, so the extra cost of the check is not expected to be
problematic.

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

12 years ago[driver] Put -cpp-precomp and -no-cpp-precomp under the clang_ignored_f_group.
Chad Rosier [Mon, 26 Mar 2012 23:36:04 +0000 (23:36 +0000)]
[driver] Put -cpp-precomp and -no-cpp-precomp under the clang_ignored_f_group.
We don't currently support these options.
rdar://11120518

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

12 years ago[driver] Testcase for r153469, r153470, and r153478.
Chad Rosier [Mon, 26 Mar 2012 22:43:28 +0000 (22:43 +0000)]
[driver] Testcase for r153469, r153470, and r153478.

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

12 years ago[driver] Fix unused argument warnings.
Chad Rosier [Mon, 26 Mar 2012 22:04:46 +0000 (22:04 +0000)]
[driver]  Fix unused argument warnings.

1. Don't short-circuit conditional statements that are checking flags.
Otherwise, the driver emits warnings about unused arguments.

2. -mkernel and -fapple-kext imply no exceptions, so claim exception related
 arguments now to avoid warnings about unused arguments.

rdar://11120518

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

12 years ago[driver] -mkernel implies -fno-common, so claim the arg to avoid an unused
Chad Rosier [Mon, 26 Mar 2012 21:35:40 +0000 (21:35 +0000)]
[driver] -mkernel implies -fno-common, so claim the arg to avoid an unused
argument warning.
Part of rdar://11120518

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

12 years ago[driver] -mkernel implies -fno-builtin, so claim the arg to avoid an unused
Chad Rosier [Mon, 26 Mar 2012 21:29:17 +0000 (21:29 +0000)]
[driver] -mkernel implies -fno-builtin, so claim the arg to avoid an unused
argument warning.
Part of rdar://11120518

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

12 years agoForward-declared enumerations are now complete, except for an interaction
Richard Smith [Mon, 26 Mar 2012 20:31:41 +0000 (20:31 +0000)]
Forward-declared enumerations are now complete, except for an interaction
between unscoped enumerations and class template member specializations,
whose behavior is currently under discussion in CWG (and for which there
is a preference to not implement the currently-standardized wording).

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

12 years agoAdd a special-case diagnostic for one of the more obnoxious special cases of
Richard Smith [Mon, 26 Mar 2012 20:28:16 +0000 (20:28 +0000)]
Add a special-case diagnostic for one of the more obnoxious special cases of
unscoped enumeration members: an enumerator name which is visible in the
out-of-class definition of a member of a templated class might not actually
exist in the instantiation of that class, if the enumeration is also lexically
defined outside the class definition and is explicitly specialized.

Depending on the result of a CWG discussion, we may have a different resolution
for a class of problems in this area, but this fixes the immediate issue of a
crash-on-invalid / accepts-invalid (depending on +Asserts). Thanks to Johannes
Schaub for digging into the standard wording to find how this case is currently
specified to behave.

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

12 years ago[tests] Fix test failure in release mode.
Daniel Dunbar [Mon, 26 Mar 2012 20:18:16 +0000 (20:18 +0000)]
[tests] Fix test failure in release mode.

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

12 years agoSimplify code, no functionality change.
Benjamin Kramer [Mon, 26 Mar 2012 20:12:15 +0000 (20:12 +0000)]
Simplify code, no functionality change.

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

12 years agoRevert r153443 "objective-c modern translator: extern "C" exported", it fails in...
Daniel Dunbar [Mon, 26 Mar 2012 18:48:59 +0000 (18:48 +0000)]
Revert r153443 "objective-c modern translator: extern "C" exported", it fails in testing.

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

12 years ago[analyzer] Malloc: Allow a pointer to escape through OSAtomicEnqueue.
Anna Zaks [Mon, 26 Mar 2012 18:18:39 +0000 (18:18 +0000)]
[analyzer] Malloc: Allow a pointer to escape through OSAtomicEnqueue.

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

12 years agoTest case for r153348.
Akira Hatanaka [Mon, 26 Mar 2012 17:37:20 +0000 (17:37 +0000)]
Test case for r153348.

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

12 years agoadd tbaa metadata to vtable pointer loads/stores
Kostya Serebryany [Mon, 26 Mar 2012 17:03:51 +0000 (17:03 +0000)]
add tbaa metadata to vtable pointer loads/stores

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

12 years agoMove CodeCompletionBuilder's chunk adding methods out of line.
Benjamin Kramer [Mon, 26 Mar 2012 16:57:36 +0000 (16:57 +0000)]
Move CodeCompletionBuilder's chunk adding methods out of line.

This makes sense because chunk's ctor is also out of line and simplifies considerably
when inlined with a constant parameter. Shrinks clang on i386-linux-Release+Asserts by 65k.

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

12 years agoWhen diagnosing an invalid out-of-line redeclaration, don't permit
Douglas Gregor [Mon, 26 Mar 2012 16:54:18 +0000 (16:54 +0000)]
When diagnosing an invalid out-of-line redeclaration, don't permit
typo correction to introduce a nested-name-specifier; we aren't
prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>.

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

12 years agoobjective-c modern translator: extern "C" exported
Fariborz Jahanian [Mon, 26 Mar 2012 16:29:49 +0000 (16:29 +0000)]
objective-c modern translator: extern "C" exported
symbols. // rdar://11103982

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

12 years agoCanonicalize the declaration we write to a PCH file for an
Douglas Gregor [Mon, 26 Mar 2012 15:52:37 +0000 (15:52 +0000)]
Canonicalize the declaration we write to a PCH file for an
InjectedClassNameType; otherwise, it won't be properly wired to the
original (canonical) declaration when it is deserialized. Fixes
<rdar://problem/11112464>.

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

12 years agoDriver: Factor string vector push_back into a helper class and optimize it.
Benjamin Kramer [Mon, 26 Mar 2012 15:39:31 +0000 (15:39 +0000)]
Driver: Factor string vector push_back into a helper class and optimize it.

Due to lack of move semantics we would create a temporary std::string from the
string literal, copy it into the vector and discard the temporary. This leads
to massive code bloat, optimizing it saves 50k on i386-linux-Release+Asserts.

While there add a two-element overload for push_back, simplifying code a bit.

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

12 years agoThreadSafetyReporter: Manage diagnostics in a std::list.
Benjamin Kramer [Mon, 26 Mar 2012 14:05:40 +0000 (14:05 +0000)]
ThreadSafetyReporter: Manage diagnostics in a std::list.

std::list is expensive, but so is std::sorting a SmallVector of SmallVectors of
heavyweight PartialDiagnostics.

Saves ~30k in a i386-linux-Release+Asserts clang build.

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

12 years agoHandle instantiations of redeclarations of forward-declared enumerations within
Richard Smith [Mon, 26 Mar 2012 04:58:10 +0000 (04:58 +0000)]
Handle instantiations of redeclarations of forward-declared enumerations within
templated functions. Build a redeclaration chain, and only instantiate the
definition of the enum when visiting the defining declaration.

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

12 years agoDelay checking of dependent underlying types for redeclarations of member
Richard Smith [Mon, 26 Mar 2012 04:08:46 +0000 (04:08 +0000)]
Delay checking of dependent underlying types for redeclarations of member
enumerations in templates until the template is instantiated.

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

12 years agoSince this change is generating a considerable amount of discussion (and possibly...
Aaron Ballman [Sun, 25 Mar 2012 22:46:17 +0000 (22:46 +0000)]
Since this change is generating a considerable amount of discussion (and possibly even a regression for known bad versions), I'm reverting it.

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

12 years agoNo longer hard coding paths to the MinGW include directories; using a regular express...
Aaron Ballman [Sun, 25 Mar 2012 15:47:41 +0000 (15:47 +0000)]
No longer hard coding paths to the MinGW include directories; using a regular expression instead.

Patch thanks to Nikola Smiljanic

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

12 years agoclang/lib/Analysis/CFG.cpp: Get rid of early insertion of placeholder to the map.
NAKAMURA Takumi [Sun, 25 Mar 2012 06:30:37 +0000 (06:30 +0000)]
clang/lib/Analysis/CFG.cpp: Get rid of early insertion of placeholder to the map.

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

12 years agoclang/lib/Analysis/CFG.cpp: Fix memory leak since r153297.
NAKAMURA Takumi [Sun, 25 Mar 2012 06:30:32 +0000 (06:30 +0000)]
clang/lib/Analysis/CFG.cpp: Fix memory leak since r153297.

evaluateAsBooleanConditionNoCache(S) might update the map and invalidate the iterator.

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

12 years agotest/Driver/cpath.c: Escape a few args that contain %{pathsep}.
NAKAMURA Takumi [Sun, 25 Mar 2012 03:42:26 +0000 (03:42 +0000)]
test/Driver/cpath.c: Escape a few args that contain %{pathsep}.

On msys bash, with %pathsep==os.pathsep==';', I can see lines like below in this script;

    env DIR=X:/foo%{pathsep}X:/bar

Then it is expanded to;

    env DIR=X:/foo;X:/bar

It should be with quote;

    env "DIR=X:/foo;X:/bar"

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

12 years agoSimplify some users of DenseMap::erase.
Benjamin Kramer [Sat, 24 Mar 2012 18:22:12 +0000 (18:22 +0000)]
Simplify some users of DenseMap::erase.

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