]> granicus.if.org Git - clang/log
clang
12 years ago[libclang] Introduce clang_Cursor_getObjCSelectorIndex() function.
Argyrios Kyrtzidis [Fri, 30 Mar 2012 22:15:48 +0000 (22:15 +0000)]
[libclang] Introduce clang_Cursor_getObjCSelectorIndex() function.

After getting a cursor with clang_getCursor for a particular source location,
allows querying the cursor in order to find out if the location points to a
selector identifier in an objc method or message expression, and which selector index it is.

rdar://11158946

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

12 years agoFix a pair of invalidation bugs when emitting protocol definitions
John McCall [Fri, 30 Mar 2012 21:29:05 +0000 (21:29 +0000)]
Fix a pair of invalidation bugs when emitting protocol definitions
in the fragile and non-fragile Mac ObjC runtimes.  No useful test
case.  Fixes rdar://problem/11072576.

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

12 years agoMake sure we unique static-local decls across multiple emissions of
John McCall [Fri, 30 Mar 2012 21:00:39 +0000 (21:00 +0000)]
Make sure we unique static-local decls across multiple emissions of
the function body, but do so in a way that doesn't make any assumptions
about the static local actually having a proper, unique mangling,
since apparently we don't do that correctly at all.

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

12 years ago[libclang] Introduce clang_Cursor_getSpellingNameRange().
Argyrios Kyrtzidis [Fri, 30 Mar 2012 20:58:35 +0000 (20:58 +0000)]
[libclang] Introduce clang_Cursor_getSpellingNameRange().

It retrieves a source range for a piece that forms the cursors spelling name.
Most of the times there is only one range for the complete spelling but for
objc methods and objc message expressions, there are multiple pieces for each
selector identifier.

Part of rdar://11113120

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

12 years agoPR10217: Provide diagnostics explaining why an implicitly-deleted special
Richard Smith [Fri, 30 Mar 2012 20:53:28 +0000 (20:53 +0000)]
PR10217: Provide diagnostics explaining why an implicitly-deleted special
member function is deleted.

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

12 years agoRevert r153723, and its follow-ups r153728 and r153733.
Chandler Carruth [Fri, 30 Mar 2012 19:44:53 +0000 (19:44 +0000)]
Revert r153723, and its follow-ups r153728 and r153733.

These patches cause us to miscompile and/or reject code with static
function-local variables in an extern-C context. Previously, we were
papering over this as long as the variables are within the same
translation unit, and had not seen any failures in the wild. We still
need a proper fix, which involves mangling static locals inside of an
extern-C block (as GCC already does), but this patch causes pretty
widespread regressions. Firefox, and many other applications no longer
build.

Lots of test cases have been posted to the list in response to this
commit, so there should be no problem reproducing the issues.

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

12 years ago[driver] Create a new L_Group for language options and add the -std= option to
Chad Rosier [Fri, 30 Mar 2012 17:33:35 +0000 (17:33 +0000)]
[driver] Create a new L_Group for language options and add the -std= option to
said group.  Also classify the group as a CompileOnly_Group so that this option
does not cause an unused argument warning when used with a link command.
rdar://11153013

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

12 years agomodern objective-c translator: writing numeric
Fariborz Jahanian [Fri, 30 Mar 2012 16:49:36 +0000 (16:49 +0000)]
modern objective-c translator: writing numeric
literals. // rdar://10803676

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

12 years agoIf we encounter a friend class template for which we cannot resolve
Douglas Gregor [Fri, 30 Mar 2012 16:20:47 +0000 (16:20 +0000)]
If we encounter a friend class template for which we cannot resolve
the nested-name-specifier (e.g., because it is dependent), do not
error even though we can't represent it in the AST at this point.

This is a horrible, horrible hack. The actual feature we still need to
implement (for C++98!) is covered by PR12292. However, we used to
silently accept this code, so when we recently started rejecting it we
caused some regressions (e.g., <rdar://problem/11147355>). This hack
brings us back to the passable-but-not-good state we had previously.

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

12 years agoDo the static-locals thing properly in the face of unions and
John McCall [Fri, 30 Mar 2012 07:09:50 +0000 (07:09 +0000)]
Do the static-locals thing properly in the face of unions and
other things which might mess with the variable's type.

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

12 years agoCorrectly check argument types for some vector macros in smmintrin.h. Put parentheses...
Craig Topper [Fri, 30 Mar 2012 07:01:17 +0000 (07:01 +0000)]
Correctly check argument types for some vector macros in smmintrin.h. Put parentheses around uses of vector macro arguments.

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

12 years ago[analyzer]Malloc,RetainRelease: Allow pointer to escape via NSMapInsert.
Anna Zaks [Fri, 30 Mar 2012 05:48:16 +0000 (05:48 +0000)]
[analyzer]Malloc,RetainRelease: Allow pointer to escape via NSMapInsert.

Fixes a false positive (radar://11152419). The current solution of
adding the info into 3 places is quite ugly. Pending a generic pointer
escapes callback.

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

12 years ago[analyzer] Do not inline functions which previously reached max block
Anna Zaks [Fri, 30 Mar 2012 05:48:10 +0000 (05:48 +0000)]
[analyzer] Do not inline functions which previously reached max block
count.

This is an optimization for "retry without inlining" option. Here, if we
failed to inline a function due to reaching the basic block max count,
we are going to store this information and not try to inline it
again in the translation unit. This can be viewed as a function summary.

On sqlite, with this optimization, we are 30% faster then before and
cover 10% more basic blocks (partially because the number of times we
reach timeout is decreased by 20%).

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

12 years agoHandle placeholder expressions in an ObjC for-collection loop.
John McCall [Fri, 30 Mar 2012 05:43:39 +0000 (05:43 +0000)]
Handle placeholder expressions in an ObjC for-collection loop.
The way we handle this implicitly removes the ability to use
property l-values in this position, but that's really okay.

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

12 years agoItaniumCXXABI.cpp: Don't use nullptr. Clang source tree should be pre-c++11-compatible.
NAKAMURA Takumi [Fri, 30 Mar 2012 05:43:21 +0000 (05:43 +0000)]
ItaniumCXXABI.cpp: Don't use nullptr. Clang source tree should be pre-c++11-compatible.

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

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