aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2010-12-12Remove the final goto from this switch making it explict which overload set isChandler Carruth
added for binary operator&. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121628 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Fold away completely identical code with simple fallthrough.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121627 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Move and copy function calls around to remove the indirection through gotosChandler Carruth
from the switch statement. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121626 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Simplify the flow through the switch by explicitly listing the added overloadsChandler Carruth
for a few cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121625 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Fix 80-column violations and reflowing some code to facilitate those fixes.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121624 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Begin the refactoring of how builtin operators are added to the overloadChandler Carruth
candidate set. This breaks apart a huge switch + goto system into distinct methods on a class. It also places the current mess of tables and other static state used in the process within that class. This is still a work in progress. I did a few simplifications that jumped out at me as I went, but I plan to iterate on this a bit before it's truly clean. However, this is easily the most invasive chunk. I benchmarked it on all-std-headers.cpp and an internal testcase that has a major hotspot in overload resolution and saw no real performance impact. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121623 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-11Enhance my implementation of //rdar ://8747333 in r121597 to allowFariborz Jahanian
for declaration of property setter/getter in forward class extensions and also skip over propeties which are @dynamic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121617 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-11Improved complex constants evaluation.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121616 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Any property declared in a class extension might have userFariborz Jahanian
declared setter or getter in current class extension or one of the other class extensions. Mark them as synthesized as property will be synthesized when property with same name is seen in the @implementation. This prevents bogus warning about unimplemented methods to be issued for these methods. Fixes // rdar://8747333 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121597 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Add missing switch case for the quad-register version of the Neon vmul builtin.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121595 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Fix clang crashes on Neon vld[234]_dup intrinsics with 64-bit element types.Bob Wilson
The 64-bit element vectors need to be handled as a special case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121592 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Introduce ObjCMessageExpr::getReceiverRange() to get the source range of the ↵Argyrios Kyrtzidis
receiver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121517 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Keep the source location of the selector in ObjCMessageExpr.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121516 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Do not assert on shifts of Neon polynomial types.Bob Wilson
Most Neon shift intrinsics do not have variants for polynomial types, but vsri_n and vsli_n do support them, and we need to properly range-check the shift immediates for them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121509 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Silence a few more uninitialized-value warningsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121505 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Do not substitute template types if template has dependent contextPeter Collingbourne
We should not substitute template types if the template has a dependent context because the template argument stack is not yet fully formed. Instead, defer substitution until the template has a non-dependent context (i.e. instantiation of an outer template). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121491 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Fix a compiler warning.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121490 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Eliminate the branching in QualType::getTypePtr() by providing aDouglas Gregor
common base for ExtQuals and Type that stores the underlying type pointer. This results in a 2% performance win for -emit-llvm on a typical C file, with 1% memory growth in the AST. Note that there is an API change in this optimization: QualType::getTypePtr() can no longer be invoked on a NULL QualType. If the QualType might be NULL, use QualType::getTypePtrOrNull(). I've audited all uses of getTypePtr() in the code base and changed the appropriate uses over to getTypePtrOrNull(). A future optimization opportunity would be to distinguish between cast/dyn_cast and cast_or_null/dyn_cast_or_null; for the former, we could use getTypePtr() rather than getTypePtrOrNull(), to take another branch out of the cast/dyn_cast implementation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121489 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Added ParenType type node.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121488 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10It's kindof silly that ExtQuals has an ASTContext&, and we can use thatJohn McCall
space better. Remove this reference. To make that work, change some APIs (most importantly, getDesugaredType()) to take an ASTContext& if they need to return a QualType. Simultaneously, diminish the need to return a QualType by introducing some useful APIs on SplitQualType, which is just a std::pair<const Type *, Qualifiers>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121478 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Move the "volatile" bit into QualType's "fast" qualifier set,Douglas Gregor
increasing the required type alignment from 8 to 16. This provides a 2.5% speedup for -fsyntax-only on a token-cached Cocoa.h, while only increasing memory consumption in the ASTContext by 0.8%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121474 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Use TypeAlignment constant rather than fixed alignment of 8Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121473 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Add missing switch case to handle builtin for Neon vqnegq.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121468 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10LLVM's intrinsics for vpaddl and vpadal have 2 overloaded types.Bob Wilson
Clang was only specifying the overloaded result type. PR8483. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121464 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Treat visibility on an enclosing namespace as a non-explicit source ofJohn McCall
visibility. Fixes PR8713. I've disabled a test which was testing that you can #pragma pop visibility to get out of a namespace's visibility attribute. We should probably just diagnose that as an error unless it's instrumental to someone's system headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121459 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Bind the result of a property fetch to a temporary.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121452 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Neon compare absolute LLVM intrinsics are not overloaded. PR8484.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121447 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Fix another obscure corner layout case.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121436 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Don't crash when code-completing after "#include <". It would be farDouglas Gregor
better to actually produce a decent set of completions by checking the system include paths, but not today. Fixes PR8744. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121431 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Refactored/cleanedup ActOnFunctionDeclarator Fariborz Jahanian
and ActOnVariableDeclarator No functionality change. // rdar://8751949 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121427 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Eliminate duplicate code completions for properties.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121424 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Don't walk the translation unit context to produce protocol names whenDouglas Gregor
global code completions are disabled (e.g., because they are cached). Also, make sure that forward-declared protocols are visited when we look for all visible names within a declaration context. Previously, we would end up with duplicate completions for protocols. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121416 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Gather cached code completions after the first reparse, not after theDouglas Gregor
second reparse. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121413 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Use error_code instead of std::string* for MemoryBuffer.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121378 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09When an "inline" declaration was followed by a definition not markedDouglas Gregor
"inline", we weren't giving the definition weak linkage because the "inline" bit wasn't propagated. This was a longstanding FIXME that, somehow, hadn't triggered a bug in the wild. Fix this problem by tracking whether any declaration was marked "inline", and clean up the semantics of GNU's "extern inline" semantics calculation based on this change. Fixes <rdar://problem/8740363>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121373 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Fix PR8760: IndirectFieldDecl Type was not updated during template ↵Francois Pichet
instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121363 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Fix another unnecessary-struct-padding issue.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121352 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Before determining the effect the alignment of base struct will have in the ↵Argyrios Kyrtzidis
aligment of the sub-struct, take into account if the sub-struct is packed and its maximum field alignment. Fixes rdar://8745206 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121335 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Remove unused parameter. getContextDescriptor() and getOrCreateNameSpace().Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121333 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09Remove unused parameter.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121326 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09A typename specifier can end up referring to a unresolved usingDouglas Gregor
declaration that is a value in ill-formed code. Instead of crashing, treat this as a dependent typename specifier and suggest that the using add "typename" into the using declaration. Fixes <rdar://problem/8740998>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121322 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Start using DIBuilder. It provides cleaner interface.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121302 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Stop using builtins for the "_lane" variants of saturating multiply intrinsics.Bob Wilson
Remove the "splat" parameter from the EmitNeonCall function, since it is no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121300 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Remove the TypesCompatibleExprClass AST node. Merge its functionality into ↵Francois Pichet
BinaryTypeTraitExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121298 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Stop using clang builtins for Neon vabdl and vabal intrinsics.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121288 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Driver: M and MM should be grouped together, <rdar://problem/8744831>.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121284 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Stop using clang builtins for Neon vaba intrinsics.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121277 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Fix two thinkos and add a test for importing the AST of a categoryDouglas Gregor
implementation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121263 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Handle parameter attributes when tentative parsing for function/variable ↵Argyrios Kyrtzidis
disambiguation. Fixes rdar://8739801. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121228 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08Silence an unused variable warning.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121221 91177308-0d34-0410-b5e6-96231b3b80d8