summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGClass.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Track whether an AggValueSlot is potentially aliased, and do notJohn McCall2011-08-251-3/+6
| | | | | | | | | | emit call results into potentially aliased slots. This allows us to properly mark indirect return slots as noalias, at the cost of requiring an extra memcpy when assigning an aggregate call result into a l-value. It also brings us into compliance with the x86-64 ABI. llvm-svn: 138599
* Use stronger typing for the flags on AggValueSlot and requireJohn McCall2011-08-251-5/+11
| | | | | | | creators to tell us whether something needs GC barriers. No functionality change. llvm-svn: 138581
* Cleanup; no functionality change.Eli Friedman2011-08-091-4/+2
| | | | llvm-svn: 137126
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-231-2/+2
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* de-constify llvm::Type, patch by David Blaikie!Chris Lattner2011-07-181-13/+13
| | | | llvm-svn: 135370
* Arrays are permitted to be zero-length in some situations.John McCall2011-07-131-1/+27
| | | | llvm-svn: 135036
* Convert the standard default-construction loops to use phis andJohn McCall2011-07-131-72/+73
| | | | | | partial destruction. llvm-svn: 135033
* Aggressive dead code elimination.John McCall2011-07-131-72/+0
| | | | llvm-svn: 135029
* Generalize Cleanup::Emit's "isForEH" parameter into a setJohn McCall2011-07-121-7/+7
| | | | | | of flags. No functionality change. llvm-svn: 134997
* Switch field destruction over to use the new destroyer-based APIJohn McCall2011-07-121-68/+28
| | | | | | and kill a lot of redundant code. llvm-svn: 134988
* A number of array-related IR-gen cleanups.John McCall2011-07-091-0/+11
| | | | | | | | | | | | - Emit default-initialization of arrays that were partially initialized with initializer lists with a loop, rather than emitting the default initializer N times; - support destroying VLAs of non-trivial type, although this is not yet exposed to users; and - support the partial destruction of arrays initialized with initializer lists when an initializer throws an exception. llvm-svn: 134784
* LValue carries a type now, so simplify the main EmitLoad/Store APIsJohn McCall2011-06-251-1/+1
| | | | | | by removing the redundant type parameter. llvm-svn: 133860
* Restore correct use of GC barriers.John McCall2011-06-161-6/+3
| | | | llvm-svn: 133144
* Automatic Reference Counting.John McCall2011-06-151-37/+56
| | | | | | | | | | Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. llvm-svn: 133103
* Implement support for C++11 in-class initialization of non-static data members.Richard Smith2011-06-111-0/+1
| | | | llvm-svn: 132878
* Fix another regression from the "skip vtable pointer initialization"Anders Carlsson2011-05-161-1/+1
| | | | | | | optimization. Make sure to require a vtable when trying to get the address of a VTT, otherwise we would never end up emitting the VTT. llvm-svn: 131400
* Re-enable the fix for PR9181 now that all the edge cases are handled.Anders Carlsson2011-05-151-18/+70
| | | | llvm-svn: 131385
* Disable the optimization until the bug noticed by Sean Hunt has been fixed.Anders Carlsson2011-05-151-0/+4
| | | | llvm-svn: 131372
* When emitting the destructor for a class with a vtable, if we can determineAnders Carlsson2011-05-141-1/+34
| | | | | | | | | | that the destructor body is trivial and that all member variables also have either trivial destructors or trivial destructor bodies, we don't need to initialize the vtable pointers since no virtual member functions will be called on the destructor. Fixes PR9181. llvm-svn: 131368
* Move code to emit the callee of an CXXOperatorCallExpr out into a separate ↵Anders Carlsson2011-05-081-0/+133
| | | | | | function in CGClass.cpp llvm-svn: 131075
* Ensure that destructors are properly inovked when an exception leavesAlexis Hunt2011-05-031-1/+27
| | | | | | | | | | the body of a delegating constructor call. This means that the delegating constructor implementation should be complete and correct, though there are some rough edges (diagnostic quality with the cycle detection and using a deleted destructor). llvm-svn: 130803
* Fix delegating constructors stylistic issues.Alexis Hunt2011-05-031-4/+5
| | | | | | Material bugfixes to come this afternoon. llvm-svn: 130782
* Simplify code a bit by using CallArgList::add. No intended functionality ↵Eli Friedman2011-05-021-6/+4
| | | | | | change. llvm-svn: 130699
* Fully implement delegating constructors!Alexis Hunt2011-05-011-1/+23
| | | | | | | | | | As far as I know, this implementation is complete but might be missing a few optimizations. Exceptions and virtual bases are handled correctly. Because I'm an optimist, the web page has appropriately been updated. If I'm wrong, feel free to downgrade its support categories. llvm-svn: 130642
* When block-capturing a variable with a non-trivial destructor,John McCall2011-04-281-0/+1
| | | | | | | | | | make sure to mark the destructor. This normally isn't required, because the destructor should have been marked as part of the declaration of the local, but it's necessary when the variable is a parameter because it's the call sites that are responsible for those destructors. llvm-svn: 130372
* Replace a couple of Builder.CreateICmpEQ with Builder.CreateIsNull. No ↵Anders Carlsson2011-04-111-6/+2
| | | | | | functionality change. llvm-svn: 129261
* [Reapply r128776, modified so that it does not break debug info.]Ken Dyck2011-04-071-2/+3
| | | | | | | Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to CharUnits. No change in functionality intended. llvm-svn: 129072
* Revert r128770, r128771, r128773 and r128776 for now. It breaks debug info.Devang Patel2011-04-041-3/+2
| | | | llvm-svn: 128842
* Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() toKen Dyck2011-04-021-2/+3
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128776
* Remove PHINode::reserveOperandSpace(). Instead, add a parameter toJay Foad2011-03-301-4/+2
| | | | | | PHINode::Create() giving the (known or expected) number of operands. llvm-svn: 128538
* Convert the BaseOffset member of BaseSubobject to CharUnits from bits. NoKen Dyck2011-03-241-11/+8
| | | | | | change in functionality intended. llvm-svn: 128190
* Convert OffsetFromNearestVBast parameter of InitializeVTablePointer(s) toKen Dyck2011-03-231-12/+13
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128129
* Convert NonVirtual parameter of ApplyNonVirtualAndVirtualOffset() toKen Dyck2011-03-231-8/+11
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128126
* Convert Offset variable in GetAddressOfDirectBaseInCompleteClass() toKen Dyck2011-03-221-5/+5
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128060
* Change return value of ComputeNonVirtualBaseClassOffset() to CharUnits. NoKen Dyck2011-03-221-13/+13
| | | | | | change in functionality intended. llvm-svn: 128050
* Use a slightly more semantic interface for emitting call arguments.John McCall2011-03-111-10/+4
| | | | llvm-svn: 127494
* Use the "undergoes default argument promotion" bit on parameters toJohn McCall2011-03-091-5/+4
| | | | | | | | | | simplify the logic of initializing function parameters so that we don't need both a variable declaration and a type in FunctionArgList. This also means that we need to propagate the CGFunctionInfo down in a lot of places rather than recalculating it from the FAL. There's more we can do to eliminate redundancy here, and I've left FIXMEs behind to do it. llvm-svn: 127314
* Get rid of the areExceptionsEnabled() getter from LangOptions.Anders Carlsson2011-02-281-2/+2
| | | | llvm-svn: 126598
* A constructor call should force class's debug info even if ↵Devang Patel2011-02-221-0/+11
| | | | | | -flimit-debug-info is enabled. llvm-svn: 126246
* Add a LangOptions::areExceptionsEnabled and start using it.Anders Carlsson2011-02-201-2/+3
| | | | llvm-svn: 126062
* Reorganize CodeGen{Function,Module} to eliminate the unfortunateJohn McCall2011-02-081-3/+0
| | | | | | | | Block{Function,Module} base class. Minor other refactorings. Fixed a few address-space bugs while I was there. llvm-svn: 125085
* Clean up of -fapple-kext abi code. No change otherwise.Fariborz Jahanian2011-02-031-1/+2
| | | | llvm-svn: 124807
* -fapple-kext, elimination of all direct calls to virtual dtors.Fariborz Jahanian2011-02-021-0/+4
| | | | llvm-svn: 124757
* -fapple-kext support for indirect call to virtuals dtors - wip.Fariborz Jahanian2011-02-011-1/+6
| | | | llvm-svn: 124701
* Make emitting a VTT a two-step process, much like emitting a VTable. You ↵Anders Carlsson2011-01-291-1/+1
| | | | | | first get the address of the VTT, and then pass it to EmitVTTDefinition. llvm-svn: 124539
* When doing a derived-to-base class through a virtual class, we don't have to ↵Anders Carlsson2011-01-291-2/+11
| | | | | | get the vbase offset from the vtable if the derived class is marked final. llvm-svn: 124523
* Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,Alexis Hunt2011-01-081-6/+6
| | | | | | | more accurate, and makes it make sense for it to hold a delegating constructor call. llvm-svn: 123084
* More anonymous struct/union redesign. This one deals with anonymous field ↵Francois Pichet2010-12-041-6/+6
| | | | | | | | | | | | | | | | used in a constructor initializer list: struct X { X() : au_i1(123) {} union { int au_i1; float au_f1; }; }; clang will now deal with au_i1 explicitly as an IndirectFieldDecl. llvm-svn: 120900
* Block API patch to do copy ctor of copied-in cxx objects inFariborz Jahanian2010-11-131-0/+58
| | | | | | | | copy helper function and dtor of copied cxx objects in dispose helper functions. __block variables TBD next. llvm-svn: 119011
* Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵Anders Carlsson2010-10-311-7/+9
| | | | | | getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881
OpenPOWER on IntegriCloud