summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGClass.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Initial implementation of IRGen for the lambda ↵Eli Friedman2012-02-161-1/+93
| | | | | | conversion-to-function-pointer operator. llvm-svn: 150660
* Start of IRGen for lambda conversion operators.Eli Friedman2012-02-161-0/+8
| | | | llvm-svn: 150649
* Implement IRGen of lambda expressions which capture arrays.Eli Friedman2012-02-141-28/+22
| | | | llvm-svn: 150452
* Refactor out new function EmitInitializerForField from ↵Eli Friedman2012-02-141-50/+69
| | | | | | EmitMemberInitializer. The new function will be used to initialize the fields of lambda expressions. llvm-svn: 150451
* simplify a bunch of code to use the well-known LLVM IR types computed by ↵Chris Lattner2012-02-071-3/+1
| | | | | | CodeGenModule. llvm-svn: 149943
* Fix comment.Eric Christopher2012-02-011-2/+2
| | | | llvm-svn: 149543
* Use function pointers, rather than references, to pass DestroyersPeter Collingbourne2012-01-261-2/+2
| | | | | | | around, in the process cleaning up the various gcc/msvc compiler workarounds. llvm-svn: 149036
* Switch LValue so that it exposes alignment in CharUnits. (No functional ↵Eli Friedman2011-12-031-1/+1
| | | | | | change.) llvm-svn: 145753
* Switch the Alignment argument on AggValueSlot over to CharUnits, per John's ↵Eli Friedman2011-12-031-3/+2
| | | | | | review comment. llvm-svn: 145741
* Track alignment in AggValueSlot. No functional change in this patch, but ↵Eli Friedman2011-12-031-15/+23
| | | | | | I'll be introducing uses of the specified alignment soon. llvm-svn: 145736
* Recommit:Eric Christopher2011-10-131-1/+1
| | | | | | | | | | | | | | | Start handling debug line and scope information better: Migrate most of the location setting within the larger API in CGDebugInfo and update a lot of callers. Remove the existing file/scope change machinery in UpdateLineDirectiveRegion and replace it with DILexicalBlockFile usage. Finishes off the rest of rdar://10246360 after fixing a few bugs that were exposed in gdb testsuite testing. llvm-svn: 141893
* Revert file/scope handling patches. gdb testing revealed a couple of bugs.Eric Christopher2011-10-121-1/+1
| | | | llvm-svn: 141796
* Removed extra line in comment.Jim Goodnow II2011-10-121-1/+0
| | | | llvm-svn: 141773
* Start handling debug line and scope information better:Eric Christopher2011-10-111-1/+1
| | | | | | | | | | | Migrate most of the location setting within the larger API in CGDebugInfo and update a lot of callers. Remove the existing file/scope change machinery in UpdateLineDirectiveRegion and replace it with DILexicalBlockFile usage. Finishes off the rest of rdar://10246360 llvm-svn: 141732
* Rename EmitStopPoint in CGDebugInfo to EmitLocation. "stop points" don'tEric Christopher2011-09-291-1/+1
| | | | | | exist anymore. llvm-svn: 140739
* Move all vtable layout data into new VTableLayout classPeter Collingbourne2011-09-261-1/+1
| | | | llvm-svn: 140506
* Move vtable component accessors to VTableContextPeter Collingbourne2011-09-261-1/+2
| | | | llvm-svn: 140504
* Create a VTableContext class and start moving CodeGenVTables methods to itPeter Collingbourne2011-09-261-1/+1
| | | | llvm-svn: 140502
* Only trigger the initialize-an-array-via-elementwise-copy/move codeDouglas Gregor2011-09-221-1/+2
| | | | | | | | generation when we're dealing with an implicitly-defined copy or move constructor. And, actually set the implicitly-defined bit for implicitly-defined constructors and destructors. Should fix self-host. llvm-svn: 140334
* Explicitly-defaulted copy/move constructors are not "implicit", butDouglas Gregor2011-09-221-2/+1
| | | | | | | they still need the logic to cope with array member initialization. Fixes PR10720. llvm-svn: 140302
* PR10304: Do not call destructors for data members from union destructors. ↵Richard Smith2011-09-181-0/+4
| | | | | | | | | Prior to C++11, this has no effect since any such destructors must be trivial, and in C++11 such destructors must not be called. llvm-svn: 139997
* Sorry, that assertion actually already exists.John McCall2011-09-151-2/+0
| | | | llvm-svn: 139770
* We don't generate null initializer expressions anymore, andJohn McCall2011-09-151-5/+3
| | | | | | we don't need to. llvm-svn: 139769
* Declare and define implicit move constructor and assignment operator.Sebastian Redl2011-08-301-4/+13
| | | | | | | | | This makes the code duplication of implicit special member handling even worse, but the cleanup will have to come later. For now, this works. Follow-up with tests for explicit defaulting and enabling the __has_feature flag to come. llvm-svn: 138821
* 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
OpenPOWER on IntegriCloud