summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* For C++ copied in objects, use copy constructors inFariborz Jahanian2010-06-042-7/+31
| | | | | | | | setting up block's descriptor. This is on going work to support c++ specific issues in setting up blocks various APIs. llvm-svn: 105469
* Remove now unused code.Anders Carlsson2010-06-041-235/+13
| | | | llvm-svn: 105448
* Use CXXRecordDecl::getFinalOverriders to get final overriders. This speeds ↵Anders Carlsson2010-06-041-1/+119
| | | | | | up vtable layout by moving away from the old final overrider computation code that had O(N^2) complexity in some cases. llvm-svn: 105447
* Don't intentionally try to ignore the value of a scalar expression when weEli Friedman2010-06-031-1/+1
| | | | | | actually care about it. Fixes PR7291. llvm-svn: 105404
* Don't try to explicitly zero out bit-fields.Anders Carlsson2010-06-031-0/+5
| | | | llvm-svn: 105391
* Block C++ code gen. Adds support for block reference argumentFariborz Jahanian2010-06-021-4/+14
| | | | | | | types. Executable test will be added to LLVM test suite. (radar 8041962). llvm-svn: 105347
* Don't try to emit the vtable for a class just because we're emitting aJohn McCall2010-06-022-17/+28
| | | | | | | | virtual function from it. Fixes PR7241. llvm-svn: 105345
* Don't substitute 'St' for 'std' when the namespace is nested inside another ↵Anders Carlsson2010-06-021-9/+9
| | | | | | namespace. llvm-svn: 105330
* When building RTTI descriptors for pointer types, we need to get the ↵Anders Carlsson2010-06-021-6/+14
| | | | | | unqualified array type and the qualifiers from it. llvm-svn: 105326
* Correctly mangle unsigned integer literals where the high bit is set.Anders Carlsson2010-06-021-2/+4
| | | | llvm-svn: 105312
* Correctly mangle variadic functions that don't have any other parameters.Anders Carlsson2010-06-021-1/+2
| | | | llvm-svn: 105311
* When mangling member function pointers, fake adding a substitution ↵Anders Carlsson2010-06-021-6/+25
| | | | | | corresponding to the function type. llvm-svn: 105310
* More cleanup.Anders Carlsson2010-06-011-14/+10
| | | | llvm-svn: 105301
* More cleanup.Anders Carlsson2010-06-011-35/+10
| | | | llvm-svn: 105299
* Cleanup.Anders Carlsson2010-06-011-8/+9
| | | | llvm-svn: 105296
* Make methods non-virtual again for now. I accidentally committed this inCharles Davis2010-05-311-23/+21
| | | | | | preparation for an alternate mangler. llvm-svn: 105224
* Silence GCC warning about an accessible non-virtual destructor in a class withChandler Carruth2010-05-311-0/+2
| | | | | | | | virtual methods. Please review cdavis, should these methods even be virtual? llvm-svn: 105218
* Remove unused parameter to FinalOverriders::PropagateOverrider.Anders Carlsson2010-05-301-5/+3
| | | | llvm-svn: 105171
* Convert DeclNodes to use TableGen.Alexis Hunt2010-05-302-2/+2
| | | | | | | | The macros required for DeclNodes use have changed to match the use of StmtNodes. The FooFirst enumerator constants have been named firstFoo to match usage elsewhere. llvm-svn: 105165
* Fix for PR7040: Don't try to compute the LLVM type for a function where itEli Friedman2010-05-307-66/+50
| | | | | | | | | | | isn't possible to compute. This patch is mostly refactoring; the key change is the addition of the code starting with the comment, "Check whether the function has a computable LLVM signature." The solution here is essentially the same as the way the vtable code handles such functions. llvm-svn: 105151
* Fix personality function name when using SjLj exceptions.Daniel Dunbar2010-05-281-2/+5
| | | | llvm-svn: 104999
* zero-cost exception API for NeXt runtime.Fariborz Jahanian2010-05-281-2/+14
| | | | | | | | rethrow inside @catch block must use objc_exception_rethrow API. Fixes radar 8037512. Test will be added to LLVM test suite. llvm-svn: 104964
* This cast is no longer needed; the FIXME is fixed.Dan Gohman2010-05-281-2/+0
| | | | llvm-svn: 104919
* This cast is no longer required.Dan Gohman2010-05-281-4/+0
| | | | llvm-svn: 104916
* Update __builtin_setjmp codegen to match llvmCore changes in r104900.Jim Grosbach2010-05-271-0/+8
| | | | llvm-svn: 104902
* When null-initializing bases with data member pointers, don't assert on ↵Anders Carlsson2010-05-271-2/+10
| | | | | | virtual bases. Just initialize them to null. llvm-svn: 104868
* Enable the implementation of __builtin_setjmp and __builtin_longjmp. Not allJohn McCall2010-05-271-15/+18
| | | | | | LLVM backends support these yet. llvm-svn: 104867
* Implement __builtin_init_dwarf_reg_size_table and __builtin_dwarf_sp_columnJohn McCall2010-05-271-39/+78
| | | | | | | for 32-bit MIPS processors. Hat-tip to rdivacky for providing gcc dumps on this. llvm-svn: 104816
* When deciding whether a deferred declaration has already been emitted,John McCall2010-05-271-3/+13
| | | | | | | aliases count as definitions regardless of whether their target has been emitted yet. Fixes PR 7142. llvm-svn: 104796
* AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.Daniel Dunbar2010-05-271-2/+3
| | | | llvm-svn: 104795
* Correctly pass aggregates by reference when emitting thunks.John McCall2010-05-264-34/+37
| | | | llvm-svn: 104778
* Patch to fix a irgen crash accessing an initialized local staticFariborz Jahanian2010-05-261-2/+3
| | | | | | variable in a local function. Fixes pr7101. llvm-svn: 104743
* Extract the ObjC and blocks manglers into their own class. No functionalityCharles Davis2010-05-262-60/+98
| | | | | | change. llvm-svn: 104715
* Be sure to use the standard substitutions when mangling the names ofDouglas Gregor2010-05-261-5/+11
| | | | | | vtables, VTTs, and construction vtables. Fixes PR7201. llvm-svn: 104675
* IRgen: Add a stub class for generating ABI-specific C++ code.Charles Davis2010-05-256-4/+110
| | | | | | | | This class only supports name mangling (which is apparently used during C/ObjC codegen). For now only the Itanium C++ ABI is supported. Patches to add a second C++ ABI are forthcoming. llvm-svn: 104630
* Fix compilation failureDouglas Gregor2010-05-251-2/+2
| | | | llvm-svn: 104613
* Improve name mangling for blocks and support mangling of static localDouglas Gregor2010-05-256-5/+67
| | | | | | | | | variables within blocks. We loosely follow GCC's mangling, but since these are always internal symbols the names don't really matter. I intend to revisit block mangling later, because GCC's mangling is rather verbose. <rdar://problem/8015719>. llvm-svn: 104610
* If a function definition has any sort of weak linkage, its static localJohn McCall2010-05-255-10/+16
| | | | | | | | | | | | variables should have that linkage. Otherwise, its static local variables should have internal linkage. To avoid computing this excessively, set a function's linkage before we emit code for it. Previously we were assigning weak linkage to the static variables of static inline functions in C++, with predictably terrible results. This fixes that and also gives better linkage than 'weak' when merging is required. llvm-svn: 104581
* Add a comment for r104472.Benjamin Kramer2010-05-231-0/+3
| | | | llvm-svn: 104473
* PR5863: Don't erase unreachable BBs which have an associated cleanup size.Benjamin Kramer2010-05-231-1/+1
| | | | | | | This works around a crash where malloc reused the memory of an erased BB for a new BB leaving old cleanup information pointing at the new block. llvm-svn: 104472
* Re-teach IR gen to perform GC moves on rvalues resulting from various ObjCJohn McCall2010-05-221-17/+54
| | | | | | | expressions. Essentially, GC breaks a certain form of the return-value optimization. llvm-svn: 104454
* Really fix PR7139. There was one boost test that we still failed, and my ↵Anders Carlsson2010-05-221-3/+19
| | | | | | first fix broke self-host. llvm-svn: 104447
* Re-land the fix for PR7139.Anders Carlsson2010-05-226-11/+28
| | | | llvm-svn: 104446
* Improve our handling of reference binding for subobjects ofDouglas Gregor2010-05-222-7/+27
| | | | | | | | | | | | | | | | | | | | | | | | | temporaries. There are actually several interrelated fixes here: - When converting an object to a base class, it's only an lvalue cast when the original object was an lvalue and we aren't casting pointer-to-derived to pointer-to-base. Previously, we were misclassifying derived-to-base casts of class rvalues as lvalues, causing various oddities (including problems with reference binding not extending the lifetimes of some temporaries). - Teach the code for emitting a reference binding how to look through no-op casts and parentheses directly, since Expr::IgnoreParenNoOpCasts is just plain wrong for this. Also, make sure that we properly look through multiple levels of indirection from the temporary object, but destroy the actual temporary object; this fixes the reference-binding issue mentioned above. - Teach Objective-C message sends to bind the result as a temporary when needed. This is actually John's change, but it triggered the reference-binding problem above, so it's included here. Now John can actually test his return-slot improvements. llvm-svn: 104434
* Push a return-value slot throughout ObjC message-send codegen. Will beJohn McCall2010-05-226-33/+66
| | | | | | | critical for ObjC++ correctness; hard to test independently of various required Sema changes, though. llvm-svn: 104422
* Unbreak self-host.Anders Carlsson2010-05-217-30/+13
| | | | llvm-svn: 104390
* Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle ↵Anders Carlsson2010-05-217-13/+30
| | | | | | setting null data member pointers correctly. Fixes PR7139. llvm-svn: 104387
* Don't remove the break/continue scope of a for loop until after we'veDouglas Gregor2010-05-211-4/+2
| | | | | | | | emitted the increment expression. Fixes PR7189. If someone knows how to write a useful test for this, I'd be grateful. llvm-svn: 104335
* When generating the call arguments in a thunk to call the thunkee, doDouglas Gregor2010-05-211-3/+9
| | | | | | | | not make copies non-POD arguments or arguments passed by reference: just copy the pointers directly. This eliminates another source of the dreaded memcpy-of-non-PODs. Fixes PR7188. llvm-svn: 104327
* Add braces to avoid an ambiguous else, fixing a GCC warning.Chandler Carruth2010-05-211-1/+2
| | | | llvm-svn: 104314
OpenPOWER on IntegriCloud