aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-07-27Add support for C++0x unicode string and character literals, from Craig Topper!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136210 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27[arcmt] Revert r135382, there's a different approach in r135764. rdar://9821111.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136209 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27[arcmt] More automatic transformations and safety improvements; rdar://9615812 :Argyrios Kyrtzidis
- Replace calling -zone with 'nil'. -zone is obsolete in ARC. - Allow removing retain/release on a static global var. - Fix assertion hit when scanning for name references outside a NSAutoreleasePool scope. - Automatically add bridged casts for results of objc method calls and when calling CFRetain, for example: NSString *s; CFStringRef ref = [s string]; -> CFStringRef ref = (__bridge CFStringRef)([s string]); ref = s.string; -> ref = (__bridge CFStringRef)(s.string); ref = [NSString new]; -> ref = (__bridge_retained CFStringRef)([NSString new]); ref = [s newString]; -> ref = (__bridge_retained CFStringRef)([s newString]); ref = [[NSString alloc] init]; -> ref = (__bridge_retained CFStringRef)([[NSString alloc] init]); ref = [[s string] retain]; -> ref = (__bridge_retained CFStringRef)([s string]); ref = CFRetain(s); -> ref = (__bridge_retained CFTypeRef)(s); ref = [s retain]; -> ref = (__bridge_retained CFStringRef)(s); - Emit migrator error when trying to cast to CF type the result of autorelease/release: for CFStringRef f3() { return (CFStringRef)[[[NSString alloc] init] autorelease]; } emits: t.m:12:10: error: [rewriter] it is not safe to cast to 'CFStringRef' the result of 'autorelease' message; a __bridge cast may result in a pointer to a destroyed object and a __bridge_retained may leak the object return (CFStringRef)[[[NSString alloc] init] autorelease]; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ t.m:12:3: note: [rewriter] remove the cast and change return type of function to 'NSString *' to have the object automatically autoreleased return (CFStringRef)[[[NSString alloc] init] autorelease]; ^ - Before changing attributes to weak/unsafe_unretained, check if the backing ivar is set to a +1 object, in which case use 'strong' instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136208 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27Easier debugging with Visual Studio Visualizers, from Nikola Smiljanic!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136207 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27Clean up the analysis of the collection operand to ObjCJohn McCall
for-in statements; specifically, make sure to close over any temporaries or cleanups it might require. In ARC, this has implications for the lifetime of the collection, so emit it with a retain and release it upon exit from the loop. rdar://problem/9817306 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136204 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27In Microsoft mode, if we are within a templated function and we can't ↵Francois Pichet
resolve Identifier during BuildCXXNestedNameSpecifier, then extend the SS with Identifier. This will have the effect of resolving Identifier during template instantiation. The goal is to be able to resolve a function call whose nested-name-specifier is located inside a dependent base class. class C { public: static void foo2() { } }; template <class T> class A { public: typedef C D; }; template <class T> class B : public A<T> { public: void foo() { D::foo2(); } }; Note that this won't work if the NestedNameSpecifier refers to a type. This fixes 1 error when parsing the MSVC 2010 standard headers file with clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136203 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Handle different sized wchar_t for windows.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136192 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26clang_getCXTUResourceUsage: report memory used by HeaderSearch.Ted Kremenek
This required converting the StringMaps to use a BumpPtrAllocator. I measured the compile time and saw no observable regression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136190 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26clang_getCXTUResourceUsage: Report memory used by data structures in ↵Ted Kremenek
SourceManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136189 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Use the correct definition for memset.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136188 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Make this darwin only to simplify the padding calculations per arch.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136185 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Re-fix r136172 so it isn't an error; apparently, some people are fond of ↵Eli Friedman
their undefined behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136183 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26This appears to be passing on all hosts.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136182 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26This patch implements as much of the narrowing conversion error specified byJeffrey Yasskin
[dcl.init.list] as is possible without generalized initializer lists or full constant expression support, and adds a c++0x-compat warning in C++98 mode. The FixIt currently uses a typedef's basename without qualification, which is likely to be incorrect on some code. If it's incorrect on too much code, we should write a function to get the string that refers to a type from a particular context. The warning is currently off by default. I'll fix LLVM and clang before turning it on. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136181 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Disable the optimization that skips emission of complete, non-virtualDouglas Gregor
destructors of abstract classes. It's undefined behavior to actually call the destructor (e.g., via delete), but the presence of code that calls this destructor doesn't make the program ill-formed. Fixes <rdar://problem/9819242>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136180 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Try a little hack to fix the memset duplication on windows.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136179 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Try harder to fix these for windows.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136177 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Generalize for various build bots.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136173 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Diagnose trying to delete a pointer to an abstract class with a non-virtual ↵Eli Friedman
destructor. PR10504. I'm not completely sure the standard allows us to reject this, but if it doesn't, it should. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136172 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Rewrite match line to be friendlier to misc buildbots.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136169 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Rewrite matching line to be friendlier to misc buildbots.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136168 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Attempt to rewrite the matching for this test to pacify the windowsEric Christopher
build bots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136166 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Remove unused diagnostic definition.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136165 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Rework the match here to silence release mode windows buildbots.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136164 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Attempt to generalize this test for release mode buildbots.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136163 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Try to generalize the match to quiet the windows build bot.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136162 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26A couple minor issues with Sema for delete:Eli Friedman
1. Attempting to delete an expression of incomplete class type should be an error, not a warning. 2. If someone tries to delete a pointer to an incomplete class type, make sure we actually emit the delete expression after we warn. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136161 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Use unsigned long long for uint64_t. Fixes part of the windows buildbot.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136160 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate most of the rest of test/FrontendC from llvm and migrateEric Christopher
most of them to FileCheck. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136159 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Adjust check for release mode.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136158 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26In ARC we emit an error when compiling:Argyrios Kyrtzidis
@interface Foo : NSObject @property (readonly) id myProp; @end @implementation Foo @synthesize myProp; @end t.m:9:13: error: ARC forbids synthesizing a property of an Objective-C object with unspecified storage attribute @synthesize myProp; ^ which is fine, we want the ownership of the synthesized ivar to be explicit. But we should _not_ emit an error for the following cases, because we can get the ownership either from the declared ivar or from the property type: @interface Foo : NSObject { __weak id _myProp1; id myProp2; } @property (readonly) id myProp1; @property (readonly) id myProp2; @property (readonly) __strong id myProp3; @end @implementation Foo @synthesize myProp1 = _myProp1; @synthesize myProp2; @synthesize myProp3; @end  rdar://9844006. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136155 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate:Eric Christopher
CodeGen/2003-08-21-WideString.c CodeGen/2003-10-02-UnionLValueError.c CodeGen/2004-02-20-Builtins.c CodeGen/2008-01-04-WideBitfield.c CodeGen/2002-07-14-MiscTests3.c CodeGen/2005-04-09-ComplexOps.c CodeGen/2008-12-23-AsmIntPointerTie.c CodeGen/2005-07-20-SqrtNoErrno.c CodeGen/2005-01-02-VAArgError-ICE.c CodeGen/2004-06-17-UnorderedCompares.c CodeGen/2002-06-25-FWriteInterfaceFailure.c CodeGen/2002-02-18-64bitConstant.c CodeGen/2002-05-24-Alloca.c CodeGen/2006-01-13-Includes.c CodeGen/2007-09-27-ComplexIntCompare.c CodeGen/2004-02-13-IllegalVararg.c CodeGen/2007-09-12-PragmaPack.c CodeGen/2002-08-02-UnionTest.c from test/FrontendC with changes to remove header file includes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136153 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Report more memory using in Preprocessor::getTotalMemory() and ↵Ted Kremenek
PreprocessingRecord::getTotalMemory(). Most of the memory was already reported; but now we report more memory from side data structures. Fixes <rdar://problem/9379717>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136150 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate CodeGen/2007-03-05-DataLayout.c from test/FrontendC with changesEric Christopher
to remove header file includes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136134 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate CodeGen/2005-02-20-AggregateSAVEEXPR.c from test/FrontendC withEric Christopher
changes to remove any #include lines. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136129 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate CodeGen/2009-09-24-SqrtErrno.c from test/FrontendC with changesEric Christopher
to avoid header inclusions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136128 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate CodeGen/2002-03-11-LargeCharInString.c from test/FrontendC andEric Christopher
modify to avoid any outside includes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136127 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Add CodeGen/2009-07-15-pad-wchar_t-array.c migrated from test/FrontendCEric Christopher
and modified to avoid includes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136126 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Migrate wchar-const.c with fixes and FileCheck from llvm/test/FrontendC.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136114 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Revert r136046 while fixing handling of e.g. &foo[index_one_past_size]Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136113 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26This patch extends the previous patch by starting to incorporate more ↵Jonathan D. Turner
functionality, like lookup-by-name and exporting lookup tables, into the module manager. Methods now have documentation. A few more functions have been switched over to the new iterator style and away from manual/explicit iteration. Ultimately we want to move away from name lookup here, as symlinks make filenames not a safe unique value, but we use it here as a stopgap before better measures are in place (namely instead using FileEntry* from a global FileManager). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136107 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Provide fixit for static use of objective-c typeFariborz Jahanian
in few more places and in each instance, fix up the type to the expected type. // rdar://9603056 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Eliminate a bunch of temporary strings.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136092 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Add new libclang API, clang_codeCompleteGetObjCSelector(), whichDouglas Gregor
provides the partial Objective-C selector used in a code completion. From Connor Wakamo! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136084 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26When we decide not to rebuild an instantiated C++ 'new' expressionDouglas Gregor
that allocates an array of objects with a non-trivial destructor, be sure to mark the destructor is "used". Fixes PR10480 / <rdar://problem/9834317>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136081 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Objective-C++ ARC: When performing template argument deduction for aDouglas Gregor
lifetime-qualified template parameter, ensure that the deduced template argument is a lifetime type. Fixes <rdar://problem/9828157>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136078 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26After further discussion it has been determined that alignof should report Chad Rosier
the preferred alignment. Thus, revert r135934, r135935, and r135940. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136062 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Cleanup the stray comments and variables I could dig out of Sema toChandler Carruth
refer to 'expansion' instead of 'instantiation'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136060 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Fix a stray instantiation comment in Parse.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136059 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26Clean up as many of the comments in Basic I can find to talk in terms ofChandler Carruth
'expansion' rather than 'instantiation' for macro source locations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136058 91177308-0d34-0410-b5e6-96231b3b80d8