summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExprAgg.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Update for LLVM API change.Owen Anderson2009-07-241-2/+2
| | | | llvm-svn: 77012
* Preserve address space information through member accesses, e.g., Mon P Wang2009-07-221-1/+2
| | | | | | | __attribute__((address_space(1))) struct {int arr[ 3 ]; } *p1; ... = p1->arr[2]; // load from address space 1 llvm-svn: 76717
* Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methodsTed Kremenek2009-07-171-2/+2
| | | | | | | | | until Doug Gregor's Type smart pointer code lands (or more discussion occurs). These methods just call the new Type::getAs<XXX> methods, so we still have reduced implementation redundancy. Having explicit getAsXXXType() methods makes it easier to set breakpoints in the debugger. llvm-svn: 76193
* Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), ↵Ted Kremenek2009-07-171-2/+2
| | | | | | Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents. llvm-svn: 76139
* Update for LLVM API change, and contextify a bunch of related stuff.Owen Anderson2009-07-141-4/+4
| | | | llvm-svn: 75705
* Update for LLVM API change.Owen Anderson2009-07-131-1/+1
| | | | llvm-svn: 75446
* Implement code generation of ChooseExpr for aggregate types.Anders Carlsson2009-07-081-0/+5
| | | | llvm-svn: 75021
* Implemented memmove_collectable API for Next runtimeFariborz Jahanian2009-07-081-0/+12
| | | | | | | when struct variables with GC'able members are copied into. Will provide a test case later. llvm-svn: 74984
* De-ASTContext-ify DeclContext.Argyrios Kyrtzidis2009-06-301-4/+4
| | | | | | | Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating". Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit. llvm-svn: 74506
* Use PushConditionalTempDestruction/PopConditionalTempDestruction for the ↵Anders Carlsson2009-06-041-0/+4
| | | | | | ternary operator. llvm-svn: 72842
* PR4316: Fix IRGen for cast-to-union extension.Eli Friedman2009-06-031-6/+6
| | | | llvm-svn: 72803
* Emit destructors correctly for temporaries.Anders Carlsson2009-05-311-1/+1
| | | | llvm-svn: 72655
* Add lvalue irgen support for CXXBindTemporaryExpr.Anders Carlsson2009-05-301-1/+0
| | | | llvm-svn: 72649
* More temporary support.Anders Carlsson2009-05-301-4/+25
| | | | llvm-svn: 72648
* Remove VarDecl from CXXConstructExpr.Anders Carlsson2009-05-301-11/+3
| | | | llvm-svn: 72633
* Fixup the rest of the trivial cases of the codegen of volatile. IfMike Stump2009-05-291-1/+2
| | | | | | | any body can spot codegen bugs with volatile, or knows of any in the bug database, let me know. llvm-svn: 72572
* PR4281: Fix bogus CodeGen assertion. The issue is that Eli Friedman2009-05-281-8/+5
| | | | | | | getUnqualifiedType() doesn't strip off all qualifiers for non-canonical types. llvm-svn: 72552
* No write-barrier for initializations.Fariborz Jahanian2009-05-271-0/+2
| | | | llvm-svn: 72492
* IRgen support for calls to functions that return references to aggregate ↵Anders Carlsson2009-05-271-0/+5
| | | | | | exressions. llvm-svn: 72479
* Fix typo. I also fixed the hard to read case differences, so that noMike Stump2009-05-271-3/+3
| | | | | | one else is tempted to copy the style, incorrectly. llvm-svn: 72448
* Fixup codegen for volatile structs in the trivial cases (a a=a and a=a=a).Mike Stump2009-05-261-18/+21
| | | | llvm-svn: 72439
* Esnure that if we have a volatile structure as the destination, thatMike Stump2009-05-261-3/+6
| | | | | | we actually have a destination. llvm-svn: 72429
* Propagate volatile for implicit property refernces.Mike Stump2009-05-231-3/+2
| | | | llvm-svn: 72353
* Propagate volatile around for property references.Mike Stump2009-05-231-3/+2
| | | | llvm-svn: 72352
* Track volatile aggregate copies better. I'm hoping someone else will decideMike Stump2009-05-231-3/+6
| | | | | | how to get the backend to know that the operation is volatile. llvm-svn: 72348
* Fix thinko, and implement aggregate volatile reads.Mike Stump2009-05-231-4/+9
| | | | llvm-svn: 72347
* More volatile fixes. Can't testcase these yet as ultimately volatileMike Stump2009-05-231-2/+2
| | | | | | is still ignored. llvm-svn: 72344
* Collapse a few FIXMEs together and refactor to make fixing the code easier.Mike Stump2009-05-231-46/+31
| | | | llvm-svn: 72342
* One step to fixing up codegen for a=b, where a is a volatile struct.Mike Stump2009-05-231-1/+13
| | | | llvm-svn: 72315
* Fix typo.Mike Stump2009-05-231-1/+1
| | | | llvm-svn: 72308
* Have AggExprEmitter::VisitCXXConstructExpr make new variables if necessary. ↵Anders Carlsson2009-05-191-2/+17
| | | | | | Stub out VisitCXXExprWithTemporaries. llvm-svn: 72103
* Reflow some comments.Mike Stump2009-05-161-6/+5
| | | | llvm-svn: 71937
* Make codegen for constructors work again.Anders Carlsson2009-05-031-9/+4
| | | | llvm-svn: 70785
* fix PR4067: [Linux kernel] cannot aggregate codegen stmtexpr as lvalue Chris Lattner2009-04-251-2/+0
| | | | llvm-svn: 70067
* fix PR4026: Clang can't codegen __func__ without implicit castChris Lattner2009-04-211-6/+9
| | | | llvm-svn: 69747
* Implement basic code generation of constructor calls. We can now compile:Anders Carlsson2009-04-171-0/+14
| | | | | | | | | | | | struct S { S(int, int); }; void f() { S s(10, 10); } llvm-svn: 69330
* Minor work related to removing the assumption that value initialization Eli Friedman2009-04-131-0/+1
| | | | | | implies an all-zero bit pattern. llvm-svn: 68994
* Propagate the ASTContext to various AST traversal and lookup functions.Douglas Gregor2009-04-091-5/+7
| | | | | | No functionality change (really). llvm-svn: 68726
* Minor cleanup.Eli Friedman2009-03-281-11/+1
| | | | llvm-svn: 67896
* Remove dead code.Eli Friedman2009-03-221-41/+0
| | | | llvm-svn: 67477
* Add codegen support for aggregate BlockDeclRefExprs.Mike Stump2009-03-181-0/+3
| | | | llvm-svn: 67207
* brain thinking memcpy, fingers thinking memset :)Chris Lattner2009-02-281-2/+2
| | | | llvm-svn: 65701
* after going around in circles a few times, finally cave and emit structureChris Lattner2009-02-281-2/+11
| | | | | | | | copies with memcpy instead of memmove. This matches what GCC does and if it causes a problem with a particular libc we can always fix it with a target hook. llvm-svn: 65699
* rip out __builtin_overloadChris Lattner2009-02-181-15/+0
| | | | llvm-svn: 64961
* Use EmitVAListRef instead of EmitLValue directly to handle array decayDaniel Dunbar2009-02-111-1/+1
| | | | | | case on x86_64. llvm-svn: 64333
* Make CodeGen produce an error if we come across a non-constant initializer ↵Douglas Gregor2009-01-291-0/+8
| | | | | | list that involves the GNU array-range designator extension llvm-svn: 63327
* Introduce a new expression node, ImplicitValueInitExpr, thatDouglas Gregor2009-01-291-3/+3
| | | | | | | | | | | | | represents an implicit value-initialization of a subobject of a particular type. This replaces the (ab)use of CXXZeroValueInitExpr within initializer lists for the "holes" that occur due to the use of C99 designated initializers. The new test case is currently XFAIL'd, because CodeGen's ConstExprEmitter (in lib/CodeGen/CGExprConstant.cpp) needs to be taught to value-initialize when it sees ImplicitValueInitExprs. llvm-svn: 63317
* Clean up designated initialization of unions, so that CodeGen doesn'tDouglas Gregor2009-01-291-16/+33
| | | | | | have to try to guess which member is being initialized. llvm-svn: 63315
* Improvements to code-generation and semantic analysis of designatedDouglas Gregor2009-01-281-5/+10
| | | | | | | | | | | | initializers. - We now initialize unions properly when a member other than the first is named by a designated initializer. - We now provide proper semantic analysis and code generation for GNU array-range designators *except* that side effects will occur more than once. We warn about this. llvm-svn: 63253
* Code generation support for C99 designated initializers.Douglas Gregor2009-01-281-13/+5
| | | | | | | | | | | | | | | | | | | | The approach I've taken in this patch is relatively straightforward, although the code itself is non-trivial. Essentially, as we process an initializer list we build up a fully-explicit representation of the initializer list, where each of the subobject initializations occurs in order. Designators serve to "fill in" subobject initializations in a non-linear way. The fully-explicit representation makes initializer lists (both with and without designators) easy to grok for codegen and later semantic analyses. We keep the syntactic form of the initializer list linked into the AST for those clients interested in exactly what the user wrote. Known limitations: - Designating a member of a union that isn't the first member may result in bogus initialization (we warn about this) - GNU array-range designators are not supported (we warn about this) llvm-svn: 63242
OpenPOWER on IntegriCloud