summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExprAgg.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Support CodeGen for __extension__ operator on aggregates.Eli Friedman2009-01-271-0/+1
| | | | llvm-svn: 63101
* Rename Expr::isConstantExpr to Expr::isConstantInitializer; this more Eli Friedman2009-01-251-1/+1
| | | | | | | | accurately states what the function is trying to do and how it is different from Expr::isEvaluatable. Also get rid of a parameter that is both unused and inaccurate. llvm-svn: 62951
* add codegen support to union castsNuno Lopes2009-01-151-1/+14
| | | | | | init of static vars still not working. I'll get back to it tomorrow or so llvm-svn: 62278
* Prevent a segfault for vaarg expressions on unsupported architectures.Sebastian Redl2009-01-091-2/+4
| | | | llvm-svn: 62008
* Unifies the name-lookup mechanisms used in various parts of the ASTDouglas Gregor2008-12-111-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and separates lexical name lookup from qualified name lookup. In particular: * Make DeclContext the central data structure for storing and looking up declarations within existing declarations, e.g., members of structs/unions/classes, enumerators in C++0x enums, members of C++ namespaces, and (later) members of Objective-C interfaces/implementations. DeclContext uses a lazily-constructed data structure optimized for fast lookup (array for small contexts, hash table for larger contexts). * Implement C++ qualified name lookup in terms of lookup into DeclContext. * Implement C++ unqualified name lookup in terms of qualified+unqualified name lookup (since unqualified lookup is not purely lexical in C++!) * Limit the use of the chains of declarations stored in IdentifierInfo to those names declared lexically. * Eliminate CXXFieldDecl, collapsing its behavior into FieldDecl. (FieldDecl is now a ScopedDecl). * Make RecordDecl into a DeclContext and eliminates its Members/NumMembers fields (since one can just iterate through the DeclContext to get the fields). llvm-svn: 60878
* Disabling this code due to regression on test/CodeGen/bitfield.c. See Eli Friedman2008-12-021-1/+5
| | | | | | PR3152. llvm-svn: 60389
* Fix for PR2969: generate a memcpy from a constant for constant Eli Friedman2008-11-301-8/+17
| | | | | | | | initializers. llvm-gcc appears to be more aggressive, but incorrect, for constructs like "const int a[] = {1,2,3};"; that said, current optimizers will do the appropriate optimizations when safe. llvm-svn: 60270
* Implemented ir-gen for 'implicit' properties using the new AST nodes.Fariborz Jahanian2008-11-221-0/+9
| | | | llvm-svn: 59886
* New AST node to access "implicit" setter/getter using property dor syntax.Fariborz Jahanian2008-11-221-0/+13
| | | | | | | Issuing diagnostics when assigning to read-only properties. This is work in progress. llvm-svn: 59874
* reapply the (corrected) patch to use the new llvm intrinsics for ↵Chris Lattner2008-11-211-2/+4
| | | | | | memcpy/memmove etc. llvm-svn: 59824
* temporarily revert Sangiv's patch.Chris Lattner2008-11-211-1/+1
| | | | llvm-svn: 59821
* mem[cpy,set,move] intrinsics are now overloaded.Sanjiv Gupta2008-11-211-1/+1
| | | | llvm-svn: 59806
* Normalize many BasicBlock names.Daniel Dunbar2008-11-131-3/+3
| | | | | | | | | | - Use dotted notation for blocks related to a particular statement type. - Use .end for landing pads. No functionality change in NDEBUG mode. :) llvm-svn: 59210
* Add CodeGenFunction::EmitBranch.Daniel Dunbar2008-11-111-4/+2
| | | | | | | - Emits an unconditional branch, with extra logic to avoid generating spurious branches out of dummy blocks. llvm-svn: 59037
* Centralize basic block creation in CodeGenFunction::createBasicBlock.Daniel Dunbar2008-11-111-3/+3
| | | | | | - No functionality change. llvm-svn: 59017
* Implement lowering of va_arg in clang directly. (This is 32-bit X86 only for ↵Anders Carlsson2008-11-041-2/+6
| | | | | | now). llvm-svn: 58681
* Move IRBuilder type definition to common file.Daniel Dunbar2008-11-011-1/+1
| | | | | | - No functionality change. llvm-svn: 58546
OpenPOWER on IntegriCloud