summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Add some API code for future work.Fariborz Jahanian2010-04-123-0/+37
| | | | llvm-svn: 101052
* IRgen: Add CGRecordLayout::dump, and dump (irgen) record layouts as part of ↵Daniel Dunbar2010-04-122-1/+47
| | | | | | -fdump-record-layouts. llvm-svn: 101051
* Have the CXXBaseOrMemberInitializer keep track of whether an initializer ↵Anders Carlsson2010-04-121-11/+1
| | | | | | initializes a virtual base or not. llvm-svn: 101004
* Fix another bug where we wouldn't generate secondary vtables for ↵Anders Carlsson2010-04-111-5/+9
| | | | | | construction vtables in some cases. llvm-svn: 100998
* More renames.Anders Carlsson2010-04-111-46/+46
| | | | llvm-svn: 100991
* Rename a function parameter.Anders Carlsson2010-04-111-6/+10
| | | | llvm-svn: 100990
* Clarify an assertion.Anders Carlsson2010-04-111-1/+2
| | | | llvm-svn: 100986
* Fix a bug where we were adding too many vcall offsets in some cases.Anders Carlsson2010-04-111-20/+7
| | | | llvm-svn: 100985
* Enable an assert and remove a now unnecessary assert.Anders Carlsson2010-04-101-12/+0
| | | | llvm-svn: 100953
* Fix a bug where we would add the same function twice in a vtable.Anders Carlsson2010-04-101-18/+20
| | | | llvm-svn: 100949
* revert 100942, pending discussion.Chris Lattner2010-04-101-1/+1
| | | | llvm-svn: 100946
* Rename VtableComponent and VtableBuilder.Anders Carlsson2010-04-101-90/+90
| | | | llvm-svn: 100945
* Fix for PR6811.David Chisnall2010-04-101-1/+1
| | | | llvm-svn: 100942
* fix PR6805: llvm.objectsize changed to take an i1 instead of an i32.Chris Lattner2010-04-101-8/+5
| | | | llvm-svn: 100938
* A bunch of string-related microoptimizations in Mangler.Benjamin Kramer2010-04-101-22/+22
| | | | llvm-svn: 100928
* Fix use after free. Incrementing an use_iterator after its user is erased is ↵Benjamin Kramer2010-04-101-3/+4
| | | | | | unsafe. llvm-svn: 100926
* Doug pointed out that we have a perfectly reasonable expression here toJohn McCall2010-04-101-2/+4
| | | | | | serve as a source of source locations for the can't-yet-mangle diagnostic. llvm-svn: 100924
* rely even less on CallInst internalsGabor Greif2010-04-101-7/+6
| | | | llvm-svn: 100919
* do not rely on CallInst interna, use CallSite to access argumentsGabor Greif2010-04-101-1/+3
| | | | llvm-svn: 100918
* Mangle some expressions with codegen implications but no mangling "overhead".John McCall2010-04-091-0/+12
| | | | llvm-svn: 100909
* Provide an extremely unsatisfactory diagnostic (instead of crashing) whenJohn McCall2010-04-093-4/+23
| | | | | | | mangling an unknown expression kind. Also conveniently tells the user what kind of expression they should add to the mangler! llvm-svn: 100907
* Provide manglings for bool and character literal expressions. These areJohn McCall2010-04-091-0/+13
| | | | | | | | just integer-literal expressions with special case implementations in the AST. Fixes rdar://problem/7825453. llvm-svn: 100905
* Rename CGVtable files to CGVTables.Anders Carlsson2010-04-085-5/+5
| | | | llvm-svn: 100778
* Clarify an assert.Anders Carlsson2010-04-081-0/+3
| | | | llvm-svn: 100776
* Unbreak the buildDouglas Gregor2010-04-081-1/+2
| | | | llvm-svn: 100775
* Eliminate excessive PCH deserialization caused by the search forDouglas Gregor2010-04-083-36/+12
| | | | | | | | | | | | | | | | | | | | | | __cxxabiv1::__fundamental_type_info in every translation unit. Previously, we would perform name lookup for __cxxabiv1::__fundamental_type_info at the end of IRGen for a each translation unit, to determine whether it was present. If so, we we produce type information for all of the fundamental types. However, this name lookup causes PCH deserialization of a significant part of the translation unit, which has a woeful impact on performance. With this change, we now look at each record type after we've generated its vtable to see if it is __cxxabiv1::__fundamental_type_info. If so, we generate type info for all of the fundamental types. This works because __cxxabiv1::__fundamental_type_info should always have a key function (typically the virtual destructor), that will be defined once in the support library. The fundamental type information will end up there. Fixes <rdar://problem/7840011>. llvm-svn: 100772
* IRgen: Move the bit-field access type into CGBitFieldInfo, and change ↵Daniel Dunbar2010-04-085-27/+39
| | | | | | bit-field LValues to just store the base address of object containing the bit-field. llvm-svn: 100745
* @llvm.sqrt isn't really close enough to C's sqrt to justify emitting callsJohn McCall2010-04-071-7/+6
| | | | | | | | to the intrinsic, even when math-errno is off. Fixes rdar://problem/7828230 by falling back on the library function. llvm-svn: 100613
* a ridiculous amount of propagation through the backend later, Chris Lattner2010-04-071-2/+9
| | | | | | | | | | | | | | | | have the code generate slap a srcloc metadata on inline asm nodes. This allows us to diagnose invalid inline asms with such nice diagnostics as: <inline asm>:1:2: error: unrecognized instruction abc incl %eax ^ asm.c:2:12: note: generated from here __asm__ ("abc incl %0" : "+r" (X)); ^ 2 diagnostics generated. llvm-svn: 100608
* fit in 80 colsChris Lattner2010-04-061-2/+3
| | | | llvm-svn: 100534
* IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.Daniel Dunbar2010-04-065-23/+22
| | | | llvm-svn: 100513
* Simplify.Daniel Dunbar2010-04-061-28/+11
| | | | llvm-svn: 100512
* Simplify.Daniel Dunbar2010-04-061-6/+2
| | | | llvm-svn: 100511
* IRgen: Move BitField LValues to just hold a reference to the CGBitFieldInfo.Daniel Dunbar2010-04-055-43/+52
| | | | | | | | | - Unfortunately, this requires some horrible code in CGObjCMac which always allocats a CGBitFieldInfo because we don't currently build a proper layout for Objective-C classes. It needs to be cleaned up, but I don't want the bit-field cleanups to be blocked on that. llvm-svn: 100474
* Emit debug info for objc getters and setters.Devang Patel2010-04-052-4/+7
| | | | llvm-svn: 100462
* IRgen: Lift BitFieldInfo to CGBitFieldInfo at namespace level.Daniel Dunbar2010-04-054-18/+16
| | | | llvm-svn: 100433
* Add a FIXME and reduce nesting.Daniel Dunbar2010-04-051-18/+16
| | | | llvm-svn: 100432
* Reapply patch for adding support for address spaces and added a isVolatile ↵Mon P Wang2010-04-046-48/+89
| | | | | | field to memcpy, memmove, and memset. llvm-svn: 100305
* Don't produce a vtable for a class if we have an explicit template ↵Rafael Espindola2010-04-031-2/+7
| | | | | | | | instantiation declaration and no key function. We will produce the vtable at the explicit template instantiation. Fixes PR6748 llvm-svn: 100266
* IRgen/NeXT: Remove my refactoring-enabling asserts, and add a FIXME.Daniel Dunbar2010-04-021-12/+3
| | | | llvm-svn: 100237
* IRgen/Obj-C: Eliminate FindIvarInterface, now that ivar's are in the right ↵Daniel Dunbar2010-04-021-43/+25
| | | | | | | | DeclContexts (-2 FIXMEs). We still have an annoying linear scan + hidden dependency on how Obj-C layout is done. - This is also an algorithmic improvement in IRgen for Obj-C, although it probably doesn't matter in practice. llvm-svn: 100228
* NewDebugLoc got renamed to DebugLoc.Chris Lattner2010-04-021-5/+5
| | | | llvm-svn: 100219
* Revert r100193 since it causes failures in objc in clangMon P Wang2010-04-026-89/+44
| | | | llvm-svn: 100200
* Rework our handling of copy construction of temporaries, which was aDouglas Gregor2010-04-021-17/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* adjust to IRBuilder change and use faster DebugLoc apis.Chris Lattner2010-04-012-21/+11
| | | | llvm-svn: 100093
* Extend DependentNameType with a keyword enum that specifies whetherDouglas Gregor2010-03-311-2/+3
| | | | | | | this was parsed as a typename-specifier, elaborated-type-specifier (including the kind), or just a dependent qualified type name. llvm-svn: 100039
* Rename TypenameType to DependentNameType in anticipation of someDouglas Gregor2010-03-311-2/+2
| | | | | | refactoring work in this area. llvm-svn: 100019
* Minor include pruning.Benjamin Kramer2010-03-318-7/+1
| | | | llvm-svn: 100007
OpenPOWER on IntegriCloud