summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
* Sema/Obj-C: Narrow type, and simplify.Daniel Dunbar2010-04-021-14/+6
| | | | llvm-svn: 100210
* Revert r100193 since it causes failures in objc in clangMon P Wang2010-04-026-89/+44
| | | | llvm-svn: 100200
* Sema/Obj-C: Simplify -- eliminate dead casts & provable asserts, and narrow ↵Daniel Dunbar2010-04-021-7/+5
| | | | | | type. llvm-svn: 100197
* Rework our handling of copy construction of temporaries, which was aDouglas Gregor2010-04-024-105/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | poor (and wrong) approximation of the actual rules governing when to build a copy and when it can be elided. The correct implementation is actually simpler than the approximation. When we only enumerate constructors as part of initialization (e.g., for direct initialization or when we're copying from a class type or one of its derived classes), we don't create a copy. When we enumerate all conversion functions, we do create a copy. Before, we created some extra copies and missed some others. The new test copy-initialization.cpp shows a case where we missed creating a (required, non-elidable) copy as part of a user-defined conversion, which resulted in a miscompile. This commit also fixes PR6757, where the missing copy made us reject well-formed code in the ternary operator. This commit also cleans up our handling of copy elision in the case where we create an extra copy of a temporary object, which became necessary now that we produce the right copies. The code that seeks to find the temporary object being copied has moved into Expr::getTemporaryObject(); it used to have two different not-quite-the-same implementations, one in Sema and one in CodeGen. Note that we still do not attempt to perform the named return value optimization, so we miss copy elisions for return values and throw expressions. llvm-svn: 100196
* Reapply patch for adding support for address spaces and added a isVolatile ↵Mon P Wang2010-04-026-44/+89
| | | | | | field to memcpy, memmove, and memset. llvm-svn: 100193
* CG/NeXT: Assert some invariants on an ivar's containing decl context that I ↵Daniel Dunbar2010-04-021-0/+13
| | | | | | am about to refactor based on, following some testing. llvm-svn: 100188
* If a constructor is a dependent context, just set the base and member ↵Anders Carlsson2010-04-021-107/+77
| | | | | | initializers as they are written. Fixes a bug where we wouldn't show initialization order warnings when instantiating. llvm-svn: 100180
* Diagnose multiple base and member initializers in class templates.Anders Carlsson2010-04-021-46/+40
| | | | llvm-svn: 100179
* More cleanup.Anders Carlsson2010-04-022-16/+8
| | | | llvm-svn: 100175
* Constify.Anders Carlsson2010-04-021-5/+5
| | | | llvm-svn: 100174
* Minor cleanup.Anders Carlsson2010-04-021-68/+79
| | | | llvm-svn: 100173
* Correct the calculation of access to more closely model the wording inJohn McCall2010-04-021-123/+206
| | | | | | the standard. llvm-svn: 100155
* Minor cleanup with the ternary operatorDouglas Gregor2010-04-011-2/+2
| | | | llvm-svn: 100144
* Relax the typesafty rules of block pointers types whichFariborz Jahanian2010-04-011-2/+3
| | | | | | take'id' or return 'id' in their type. Fixes radar 7814131. llvm-svn: 100129
* Overhaul checking of non-type template arguments that should refer toDouglas Gregor2010-04-013-172/+249
| | | | | | | | | | | an object or function. Our previous checking was too lax, and ended up allowing missing or extraneous address-of operators, among other evils. The new checking provides better diagnostics and adheres more closely to the standard. Fixes PR6563 and PR6749. llvm-svn: 100125
* Driver: Add support for a CLANGXX_IS_PRODUCTION build variable, which enableDaniel Dunbar2010-04-012-3/+5
| | | | | | Clang++ support, even in "Production" mode (for testing purposes). llvm-svn: 100119
* Fix -Asserts warning, and protect against missing case.Daniel Dunbar2010-04-011-2/+3
| | | | llvm-svn: 100115
* Use the element type to compute the array size when the base region is a ↵Zhongxing Xu2010-04-011-3/+6
| | | | | | | | VarRegion. Patch by Jordy Rose. llvm-svn: 100099
* Initial support for visiting CXXMemberCallExpr.Zhongxing Xu2010-04-011-5/+88
| | | | llvm-svn: 100098
* adjust to IRBuilder change and use faster DebugLoc apis.Chris Lattner2010-04-012-21/+11
| | | | llvm-svn: 100093
* Improve C++ constructor handling.Zhongxing Xu2010-04-012-2/+5
| | | | llvm-svn: 100080
* Fix typo.Eric Christopher2010-04-011-1/+1
| | | | llvm-svn: 100079
* First start at wmmintrin.h file with Intel AES-NI instructions.Eric Christopher2010-04-011-0/+67
| | | | llvm-svn: 100077
* Fix a bug (PR 6699) in RegionStore::RemoveDeadBindings() whereTed Kremenek2010-04-011-32/+31
| | | | | | array values with a non-zero offset would get prematurely pruned from the store. llvm-svn: 100067
* Improve diagnostics when an elaborated-type-specifer containing aDouglas Gregor2010-03-313-4/+6
| | | | | | | | | | | | | | | | nested-name-specifier (e.g., "class T::foo") fails to find a tag member in the scope nominated by the nested-name-specifier. Previously, we gave a bland error: 'Nested' does not name a tag member in the specified scope which didn't actually say where we were looking, which was rather horrible when the nested-name-specifier was instantiated. Now, we give something a bit better: error: no class named 'Nested' in 'NoDepBase<T>' llvm-svn: 100060
* Change the representation of dependent elaborated-type-specifiersDouglas Gregor2010-03-314-14/+106
| | | | | | | | | | | | | | (such as "class T::foo") from an ElaboratedType of a TypenameType to a DependentNameType, which more accurately models the underlying concept. Improve template instantiation for DependentNameType nodes that represent nested-name-specifiers, by performing tag name lookup and checking the resulting tag appropriately. Fixes PR5681. There is still much testing and cleanup to do in this area. llvm-svn: 100054
* Issue better syntax error when objc's messagingFariborz Jahanian2010-03-311-2/+5
| | | | | | ares are not separated by ':' (radar 7030268). llvm-svn: 100040
* Extend DependentNameType with a keyword enum that specifies whetherDouglas Gregor2010-03-317-32/+63
| | | | | | | this was parsed as a typename-specifier, elaborated-type-specifier (including the kind), or just a dependent qualified type name. llvm-svn: 100039
* Re-bind non-dependent CXXTemporaryObjectExpr nodes as temporaries whenChandler Carruth2010-03-311-1/+1
| | | | | | | instantiating a template, which ensures the destructor is called. This fixes PR6671. llvm-svn: 100029
* Patch implements gcc's -Wno-protocol option to suppress warningFariborz Jahanian2010-03-312-11/+19
| | | | | | | on unimplemented methods in protocols adopted by a class. (radar 7056600). llvm-svn: 100028
* Remove the AST statistics tracking I added yesterday; it didn't pan out.Douglas Gregor2010-03-314-28/+0
| | | | llvm-svn: 100027
* Reinstate my CodeModificationHint -> FixItHint renaming patch, withoutDouglas Gregor2010-03-3127-168/+142
| | | | | | the C-only "optimization". llvm-svn: 100022
* Rename TypenameType to DependentNameType in anticipation of someDouglas Gregor2010-03-3112-54/+54
| | | | | | refactoring work in this area. llvm-svn: 100019
* Revert r100008, which inexplicably breaks the clang-i686-darwin10 builderDouglas Gregor2010-03-3127-142/+168
| | | | llvm-svn: 100018
* Rename CodeModificationHint to FixItHint, since we've been using theDouglas Gregor2010-03-3127-168/+142
| | | | | | | term "fix-it" everywhere and even *I* get tired of long names sometimes. No functionality change. llvm-svn: 100008
* Minor include pruning.Benjamin Kramer2010-03-318-7/+1
| | | | llvm-svn: 100007
* use the new optimized debug info metadata accessors. InChris Lattner2010-03-312-4/+4
| | | | | | | | addition to the inherent win, this eliminates the pointless cost of going through the name -> mdkind stringmap that we were paying. llvm-svn: 99983
* Support __attribute__((unused)) on types. This suddenly started firingJohn McCall2010-03-312-3/+20
| | | | | | a lot for me on selfhosts, I dunno why. llvm-svn: 99981
* Fix PR6327: restore invariants when there's a parse error in an initializer.John McCall2010-03-312-0/+36
| | | | llvm-svn: 99980
* Regularize support for naming conversion functions in using decls.John McCall2010-03-315-32/+71
| | | | llvm-svn: 99979
* IRGen: Move the auxiliary data structures tracking AST -> LLVM mappings out ↵Daniel Dunbar2010-03-317-76/+75
| | | | | | | | of CodeGenTypes, to per-record CGRecordLayout structures. - I did a cursory check that this was perf neutral, FWIW. llvm-svn: 99978
* CGRecordLayoutBuilder: Switch unions to use same mechanism for tracking ↵Daniel Dunbar2010-03-311-3/+4
| | | | | | | | field and bit-field info as structs. - Anders, please check. llvm-svn: 99977
* Add a few asserts to be on the safe side.Argyrios Kyrtzidis2010-03-311-0/+13
| | | | llvm-svn: 99973
* Don't skip past the '}' if an expression has error and is not followed by ';'.Argyrios Kyrtzidis2010-03-311-3/+5
| | | | llvm-svn: 99972
* Drastically simplify the computation of linkage for typeinfo by usingDouglas Gregor2010-03-311-75/+12
| | | | | | | | the existing (and already well-tested) linkage computation for types, with minor tweaks for dynamic classes and (pointers to) incomplete types. Fixes PR6597. llvm-svn: 99968
* IRGen: Hide CGRecordLayoutBuilder class, because I can.Daniel Dunbar2010-03-315-181/+145
| | | | llvm-svn: 99967
* Remove silly temporary comment.John McCall2010-03-301-2/+0
| | | | llvm-svn: 99964
* Introduce a new kind of derived-to-base cast which bypasses the need forJohn McCall2010-03-305-4/+12
| | | | | | | null checks, and make sure we elide null checks when accessing base class members. llvm-svn: 99963
* Recognize __attribute__((NSObject)) directly appliedFariborz Jahanian2010-03-302-7/+11
| | | | | | on retain properties. (radar 7809468). llvm-svn: 99951
* Revert Mon Ping's 99930 due to broken llvm-gcc buildbots.Bob Wilson2010-03-306-89/+48
| | | | llvm-svn: 99949
OpenPOWER on IntegriCloud