summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.h
Commit message (Collapse)AuthorAgeFilesLines
...
* C++: Add support for -fno-use-cxa-atexit.Daniel Dunbar2010-03-201-0/+14
| | | | | | | | - So much typing, so little gain... Also, rename the __cxx_global_initialization function just to match llvm-gcc. llvm-svn: 99039
* IRgen: Inline GenerateCXXGlobal[VarDecl]InitFunc into sole caller.Daniel Dunbar2010-03-201-8/+0
| | | | llvm-svn: 99038
* add framework for ARM builtins, Patch by Edmund Grimley Evans!Chris Lattner2010-03-031-0/+1
| | | | llvm-svn: 97656
* Add proper target hooks for __builtin_extract_return_address andJohn McCall2010-03-031-1/+5
| | | | | | | __builtin_frob_return_address. The implementations for both are still trivial in the default case. llvm-svn: 97638
* Unconditionally support block introspection data in a new field at the endBlaine Garst2010-02-231-1/+2
| | | | | | | | | | | | | | | of the block descriptor field. This field is the ObjC style @encode signature of the implementation function, and was to this point conditionally provided in the block literal data structure. That provisional support is removed. Additionally, eliminate unused enumerations for the block literal flags field. The first shipping ABI unconditionally set (1<<29) but this bit is unused by the runtime, so the second ABI will unconditionally have (1<<30) set so that the runtime can in fact distinguish whether the additional data is present or not. llvm-svn: 96989
* Perform two more constructor/destructor code-size optimizations:John McCall2010-02-231-0/+3
| | | | | | | | | | | | | | | | 1) emit base destructors as aliases to their unique base class destructors under some careful conditions. This is enabled for the same targets that can support complete-to-base aliases, i.e. not darwin. 2) Emit non-variadic complete constructors for classes with no virtual bases as calls to the base constructor. This is enabled on all targets and in theory can trigger in situations that the alias optimization can't (mostly involving virtual bases, mostly not yet supported). These are bundled together because I didn't think it worthwhile to split them, not because they really need to be. llvm-svn: 96842
* More refactoring around constructor/destructor code generation.John McCall2010-02-191-16/+13
| | | | | | | | | | | | Fix some bugs with function-try-blocks and simplify normal try-block code generation. This implementation excludes a deleting destructor's call to operator delete() from the function-try-block, which I believe is correct but which I can't find straightforward support for at a moment's glance. llvm-svn: 96670
* Extract out function-body code generation into its own method. No functionalityJohn McCall2010-02-181-9/+5
| | | | | | change. llvm-svn: 96564
* IRgen optimization: cache the value of 'this' and 'vtt' instead ofJohn McCall2010-02-161-2/+10
| | | | | | | | repeatedly reloading from an alloca. We still need to create the alloca for debug info purposes (although we currently create it in all cases because of some abstraction boundaries that're hard to break down). llvm-svn: 96403
* IRgen: Add CreateIRTemp, which creates a temporary alloca but with type ↵Daniel Dunbar2010-02-161-0/+7
| | | | | | converted "not-for-memory". Dunno a better name. llvm-svn: 96374
* When emitting complete destructors for classes with virtual bases, computeJohn McCall2010-02-161-2/+10
| | | | | | | | | | | | the offset to the virtual bases statically inside of relying on the virtual base offsets in the object's vtable(s). This is both more efficient and sound against the destructor's manipulation of the vtables. Also extract a few helper routines. Oh and we seem to pass all tests with an optimized clang now. llvm-svn: 96327
* IRgen: Add CreateMemTemp, for creating an temporary memory object for a ↵Daniel Dunbar2010-02-091-1/+6
| | | | | | | | | | particular type, and flood fill. - CreateMemTemp sets the alignment on the alloca correctly, which fixes a great many places in IRgen where we were doing the wrong thing. - This fixes many many more places than the test case, but my feeling is we need to audit alignment systematically so I'm not inclined to try hard to test the individual fixes in this patch. If this bothers you, patches welcome! PR6240. llvm-svn: 95648
* Use the right linkage for static variables inside C++ inline functions.Anders Carlsson2010-02-071-1/+2
| | | | llvm-svn: 95512
* IRgen: Factor out EmitAggExprToLValue.Daniel Dunbar2010-02-051-0/+4
| | | | llvm-svn: 95416
* Rename StartConditionalBranch/FinishConditionalBranch to ↵Anders Carlsson2010-02-041-4/+4
| | | | | | BeginConditionalBranch/EndConditionalBranch. llvm-svn: 95308
* Revert the new reference binding code; I came up with a way simpler solution ↵Anders Carlsson2010-02-031-4/+1
| | | | | | for the reference binding bug that is preventing self-hosting. llvm-svn: 95223
* Move pointer to data member emission to CodeGenModule and use it in ↵Anders Carlsson2010-02-021-2/+0
| | | | | | CGExprConstant. Fixes PR5674. llvm-svn: 95063
* Start creating CXXBindReferenceExpr nodes when binding complex types to ↵Anders Carlsson2010-01-311-0/+2
| | | | | | references. llvm-svn: 94964
* Some class related cleanup.Anders Carlsson2010-01-311-4/+3
| | | | llvm-svn: 94938
* Add a new EmitLValueForFieldInitialization that will be used for ↵Anders Carlsson2010-01-291-0/+8
| | | | | | initializing fields (and reference type fields in particular). llvm-svn: 94799
* Simplify EmitLValueForField - we can get whether the field is part of a ↵Anders Carlsson2010-01-291-1/+1
| | | | | | union or not from the FieldDecl (through its DeclContext). llvm-svn: 94798
* Use CharUnits for alignments in character units.Ken Dyck2010-01-261-1/+1
| | | | llvm-svn: 94571
* Fix a nasty bug where temporaries weren't marked as being conditional in ↵Anders Carlsson2010-01-241-0/+3
| | | | | | some cases. llvm-svn: 94341
* Roll out ASTContext::getTypeSizeInChars(), replacing instances ofKen Dyck2010-01-111-3/+4
| | | | | | | | | | "ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits ones as appropriate. Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType, fromQuantity(), and getQuantity() for clarity. llvm-svn: 93153
* refactor pre/postinc logic into CGF and require the caller to pass in theChris Lattner2010-01-091-1/+5
| | | | | | lvalue to poke, no functionality change. llvm-svn: 93075
* Fix for PR5967: Make const-marking for LLVM globals correct for cases requiringEli Friedman2010-01-081-1/+3
| | | | | | | run-time initialization, and emit run-time initializers aggresively to avoid ordering issues with deferred globals. llvm-svn: 92976
* Get rid of more dead code.Eli Friedman2010-01-031-4/+0
| | | | llvm-svn: 92439
* Move address points to CGVtableInfo, no functionality change.Anders Carlsson2010-01-021-1/+1
| | | | llvm-svn: 92420
* Correctly pass VTT parameters to constructors and destructors. The VTTs ↵Anders Carlsson2010-01-021-0/+5
| | | | | | aren't yet used in the ctors/dtors, but that will follow. llvm-svn: 92409
* Pass the return value slot to all call exprs.Anders Carlsson2009-12-241-4/+8
| | | | llvm-svn: 92145
* Fill in the return value slot in CGExprAgg::VisitCallExpr. This takes us ↵Anders Carlsson2009-12-241-1/+3
| | | | | | halfway towards fixing PR5824. llvm-svn: 92142
* Pass ReturnValueSlot to EmitCall. No functionality change yet.Anders Carlsson2009-12-241-0/+1
| | | | llvm-svn: 92138
* Add a ReturnValueSlot class. Change the argument order in EmitCall to match ↵Anders Carlsson2009-12-241-1/+1
| | | | | | the other overload better. llvm-svn: 92136
* Work in progress for setting the vtable pointers for all bases correctly inEli Friedman2009-12-181-0/+6
| | | | | | | the constructor. This doesn't handle cases requiring the VTT at the moment, and generates unnecessary stores, but I think it's essentially correct. llvm-svn: 91731
* Implement additional undefined checks for additional loads and stores. WIP.Mike Stump2009-12-161-0/+8
| | | | llvm-svn: 91498
* Switch codegen for -fcatch-undefined-bahavior over to __builtin_trapMike Stump2009-12-151-4/+4
| | | | | | instead of abort to improve codesize and codegen. llvm-svn: 91374
* Add support for detecting undefined shift behavior. WIP.Mike Stump2009-12-141-5/+5
| | | | llvm-svn: 91341
* Implement runtime checks for undefined behavior. WIP.Mike Stump2009-12-121-0/+6
| | | | | | | | | | | | | This implements a new flag -fcatch-undefined-behavior. The flag turns on additional runtime checks for: T a[I]; a[i] abort when i < 0 or i >= I. Future stuff includes shifts by >= bitwidth amounts. llvm-svn: 91198
* Get rid of static variable.Eli Friedman2009-12-101-1/+2
| | | | llvm-svn: 91041
* Ensure we only generate one terminate handler.Mike Stump2009-12-101-0/+3
| | | | llvm-svn: 90998
* Add terminate handler to cleanups on exceptional edges.Mike Stump2009-12-091-3/+2
| | | | llvm-svn: 90996
* Code gen for ObjCIsaExpr AST used as lvalue.Fariborz Jahanian2009-12-091-0/+1
| | | | | | (fixes radar 7457534). llvm-svn: 90995
* Break out code for reuse. WIP.Mike Stump2009-12-091-0/+2
| | | | llvm-svn: 90991
* Add cleanups for exceptional edges. WIP.Mike Stump2009-12-091-7/+48
| | | | llvm-svn: 90940
* Fix for PR5707: make sure implicit copy constructors initialize the vtableEli Friedman2009-12-081-0/+2
| | | | | | pointer. llvm-svn: 90840
* Add codegen support for exception specifications. WIP.Mike Stump2009-12-071-0/+6
| | | | llvm-svn: 90817
* implement rdar://7346691 by codegen'ing struct/array initializersChris Lattner2009-12-051-2/+11
| | | | | | to a memset or a memcpy from a global when possible. llvm-svn: 90658
* Add support for function try blocks.Mike Stump2009-12-041-0/+6
| | | | llvm-svn: 90622
* Make functions returning a struct indirectly evaluate the returned structEli Friedman2009-12-041-1/+1
| | | | | | | directly into the sret pointer. This is an optimization in C, but is required for correctness in C++ for classes with a non-trivial copy constructor. llvm-svn: 90526
* Minor cleanup.Eli Friedman2009-12-031-2/+2
| | | | llvm-svn: 90411
OpenPOWER on IntegriCloud