aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2011-07-01[ARC] When casting from a pointer to an objective-c object with known ↵Argyrios Kyrtzidis
ownership, if the cast type has no ownership specified, implicitly "transfer" the ownership of the cast'ed type to the cast type: id x; (NSString**)&x; // Casting as (__strong NSString**). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134275 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01-Remove Sema::ActOnCastOfParenListExpr and move most of its functionality toArgyrios Kyrtzidis
newly introduced Sema::BuildVectorLiteral. -Make Sema::ActOnCastExpr handle a vector initializer both when the cast'ed expression is a ParenListExpr and when it is a ParenExpr. -Ultimately make Sema::ActOnParenOrParenListExpr independent of what the cast type was. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134274 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01[ARC] When casting from a pointer to an objective-c object with known ↵Argyrios Kyrtzidis
ownership, if the cast type has no ownership specified, implicitly "transfer" the ownership of the cast'ed type to the cast type: id x; static_cast<NSString**>(&x); // Casting as (__strong NSString**). This currently only works for C++ named casts, C casts to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134273 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Break Sema::GetTypeForDeclarator in 2 functions, one for DeclSpec processing ↵Argyrios Kyrtzidis
and another for the rest. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134272 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Introduce Declarator::ObjCCatchContext, this will result in correct error ↵Argyrios Kyrtzidis
for 'auto' in obj-c catch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134271 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Emit guard variables for any weak global that has a run-timeDouglas Gregor
initializer. Previously, we only used guard variables for weak static data members. Fixes <rdar://problem/9692249>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134266 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01When adding boolean keywords for typo correction, add either "bool" orDouglas Gregor
"_Bool" (depending on dialect), but not both, since they have the same edit distance from "Bool". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134263 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Don't zero-initialize default-initialized local variables that haveDouglas Gregor
trivial default constructors. This generated-code regression was caused by r131796, which had simplified the handling of default initialization in Sema. Fixes <rdar://problem/9694300>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134260 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01For code such as:Richard Trieu
int f(int x) { if (int foo = f(bar)) {} return 0; } Clang produces the following error messages: paren_imbalance.cc:2:19: error: use of undeclared identifier 'bar' if (int foo = f(bar)) {} ^ paren_imbalance.cc:2:26: error: expected ')' if (int foo = f(bar)) {} ^ paren_imbalance.cc:2:6: note: to match this '(' if (int foo = f(bar)) {} ^ The second error is incorrect. This patch will stop Clang from producing an error on parenthesis imbalance during error recovery when there isn't one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134258 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Fix for PR7410. Allow functions in a derived class that improperly overwrite ↵Richard Trieu
a virtual function in the base class to be inserted into the derived class function list to prevent extra errors every time the derived class is used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134251 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Fix AST representations of alias-declarations which define tag types. Inside ↵Richard Smith
classes, the tag types need to have an associated access specifier, and inside function definitions, they need to be included in the declarations of the DeclStmt. These issues manifested as assertions during template instantiation, and also in a WIP constexpr patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134250 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01When we create a precompiled preamble, don't copy theDouglas Gregor
CompilerInvocation on the stack, because other objects (e.g., the CompilerInstance) maintain an intrusive reference-counted pointer to the CompilerInvocation. This doesn't matter in the normal case, because we take back the CompilerInvocation. However, during crash recovery, this leads to us trying to free an object on the stack, and hilarity ensues. Fixes <rdar://problem/9652540>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134245 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Just mangle substituted template parameter types as unresolved types.John McCall
This is kindof questionable but seems to do more-or-less the right thing. This is not a particularly friendly part of the ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134227 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Introduce the notion of instantiation dependence into Clang's AST. ADouglas Gregor
type/expression/template argument/etc. is instantiation-dependent if it somehow involves a template parameter, even if it doesn't meet the requirements for the more common kinds of dependence (dependent type, type-dependent expression, value-dependent expression). When we see an instantiation-dependent type, we know we always need to perform substitution into that instantiation-dependent type. This keeps us from short-circuiting evaluation in places where we shouldn't, and lets us properly implement C++0x [temp.type]p2. In theory, this would also allow us to properly mangle instantiation-dependent-but-not-dependent decltype types per the Itanium C++ ABI, but we aren't quite there because we still mangle based on the canonical type in cases like, e.g., template<unsigned> struct A { }; template<typename T> void f(A<sizeof(sizeof(decltype(T() + T())))>) { } template void f<int>(A<sizeof(sizeof(int))>); and therefore get the wrong answer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134225 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Change the mangling of enclosing template template parametersJohn McCall
that serve as the base template name of an unresolved-name to be mangled as a substitution. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134213 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30No, actually, we do need to be able to mangle substituted template names.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134195 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Fix off-by-one error in StringLiteral::getLocationOfByte.Hans Wennborg
This fixes PR10223. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134183 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Perform lvalue-to-rvalue conversions on both operands of ->*John McCall
and the RHS of .*. Noticed by Enea Zaffanella! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134170 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Replace an unreachable error path with an assertPeter Collingbourne
(SourceManager::createFileID cannot return an invalid file ID). Also update a comment to reflect this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134168 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Add support for weakly imported classes (GNU runtime).David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134140 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Fixed enum constant evaluation assertions.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134139 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Improve the wording of the warning when returning a value fromChandler Carruth
a constructor or destructor. Patch by Hans Wennborg. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134138 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Preserve that a TemplateName was arrived at by substitutingJohn McCall
for a template template parameter. Uses to follow. I've also made the uniquing of SubstTemplateTemplateParmPacks use a ContextualFoldingSet as a minor space efficiency. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134137 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Fix an obvious typo in an attribute's diagnostics.Chandler Carruth
Patch by Caitlin Sadowski. Unfortunately, this attribute doesn't seem to have a single test. It is only mentioned in comments in one test, and as a string literal in a copy of some Clang code checked in as a test for the Indexer. =[ It dates from 2009 r74280 as part of OpenCL 1.0. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134136 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30createTargetMachine now takes a CPU string.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134128 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-30Document and check tighter assumptions about the TemplateName of aJohn McCall
TemplateSpecializationType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134120 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Introduce a caching mechanism for macro expanded tokens.Argyrios Kyrtzidis
Previously macro expanded tokens were added to Preprocessor's bump allocator and never released, even after the TokenLexer that were lexing them was finished, thus they were wasting memory. A very "useful" boost library was causing clang to eat 1 GB just for the expanded macro tokens. Introduce a special cache that works like a stack; a TokenLexer can add the macro expanded tokens in the cache, and when it finishes, the tokens are removed from the end of the cache. Now consumed memory by expanded tokens for that library is ~ 1.5 MB. Part of rdar://9327049. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134105 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Introduce Preprocessor::getTotalMemory() and use it in CIndex.cpp, no ↵Argyrios Kyrtzidis
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Check for deprecated/unavailable/etc attributes on fields that areDouglas Gregor
initialized via initializer lists. Fixes <rdar://problem/9694686>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134099 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29When redeclaring a local extern in the same scope, make sure that weDouglas Gregor
replace the existing declaration appropriately. Patch by Jordy Rose, fixes PR10013 / <rdar://problem/9584157>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134097 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29objc-arc: fix a IRGen crash when checking forFariborz Jahanian
accessibility of an initializer which is a compound statement. // rdar://9694706 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134091 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Use existing -fcatch-undefined-behavior option,Fariborz Jahanian
replacing -freset-local-blocks. // rdar://9227352 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134082 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Use preferred 64-bit alignment for i64 & f64 for Thumb targets. Radar 9695134.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134070 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Add ARC support for the GNUstep runtime.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134065 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29We don't pass classes with a copy-constructor or destructor byval, so the ↵Eli Friedman
address takes up an integer register (if one is available). Make sure the x86-64 ABI implementation takes that into account properly. The fixed implementation is compatible with the implementation both gcc and llvm-gcc use. rdar://9686430 . (This is the issue that was reported in the thread "[LLVMdev] Segfault calling LLVM libs from a clang-compiled executable".) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134059 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29SubtargetFeature.h has been moved to MC.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134050 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Under a compiler flag, -freset-local-blocks,Fariborz Jahanian
wipe out stack blocks when they go out of scope. // rdar://9227352 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134045 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Revert r133024, "[format strings] correctly suggest correct type for '%@'Daniel Dunbar
specifiers. Fixes <rdar://problem/9607158>." because it causes false positives on some code that uses CF toll free bridging. - I'll let Doug or Ted figure out the right fix here, possibly just to accept any pointer type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134041 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Fix non-determinism in selecting between equal-length names which referChandler Carruth
to the same declaration when correcting typos. This is done by essentially sorting the corrections as they're added. Original patch by Kaelyn Uhrain, but modified for style and correctness by accounting for more than just the textual spelling. This still is a bit of a WIP hack to make this deterministic. Kaelyn (and myself) are working on a more principled solution going forward. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134038 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Fix an invalid use of ::back() on an newly emptied vector. Also tightenChandler Carruth
up several places where we never expect to have NULL pointers to assert early. This fixes a valgrind error within CorrectTypo, but not the non-determinism. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134032 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Driver/Darwin: -force_load can be specified multiple times.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134025 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Split out logic for valid clobbers and valid inline asm registers.Eric Christopher
Fixes rdar://9281377 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134016 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Eliminate most uses of ShallowCollectObjCIvars which requiresFariborz Jahanian
a vector for collection. Use iterators where needed instead. // rdar://6817577 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134015 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Be more thorough about mangling unresolved types.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134011 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Dynamically allocate the StringMaps used in typo correction so that weDouglas Gregor
don't rely on the existence of a copy constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134009 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Add support for C++ namespace-aware typo correction, e.g., correctingDouglas Gregor
vector<int> to std::vector<int> Patch by Kaelyn Uhrain, with minor tweaks + PCH support from me. Fixes PR5776/<rdar://problem/8652971>. Thanks Kaelyn! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134007 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Fix PR9279 - Macro expansion stack trace seriously broken with ↵Chris Lattner
function-style macros, by not recursively printing notes for other 'instantiated from' notes. This is a one line fix here: + // Don't print recursive instantiation notes from an instantiation note. + Loc = SM.getSpellingLoc(Loc); While here, fix the testcase to be more precise (it got filecheck'ized brutally), and fix EmitCaretDiagnostic to be private and to not pass down the unused 'Level' argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133993 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Introduce Declarator::CXXNewContext and remove 'AutoAllowedInTypeName' parameterArgyrios Kyrtzidis
from Sema::GetTypeForDeclarator. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133987 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Centralize all checks for a C++ tag definition inside a typename inArgyrios Kyrtzidis
Sema::GetTypeForDeclarator and remove its 'OwnedDecl' out parameter. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133986 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Centralize the check for a tag definition in a Declarator::PrototypeContext ↵Argyrios Kyrtzidis
inside GetTypeForDeclarator. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133985 91177308-0d34-0410-b5e6-96231b3b80d8