aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGExprScalar.cpp
AgeCommit message (Collapse)Author
2009-02-28First cut CodeGen support for __block variables.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65688 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-27Change the AST generated for offsetof a bit so that it looks like a Eli Friedman
normal expression, and change Evaluate and IRGen to evaluate it like a normal expression. This simplifies the code significantly, and fixes PR3396. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65622 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25CodeGen support for copied BlockDeclRefExprs.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65487 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24first wave of fixes for @encode sema support. This is part of PR3648.Chris Lattner
The big difference here is that (like string literal) @encode has array type, not pointer type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-22Cleanp code with some recent suggestions.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65285 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-21Add CodeGen support for the helper for BlockDeclRefExprs. The easierMike Stump
stuff is mostly done. Move BlockHasCopyDispose up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-19More codegen for blocks. The type of block literals should be better.Mike Stump
The size calculation is improved. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64994 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18rip out __builtin_overloadChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64961 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-14Generate the helper function for blocks. Now basic codegen isMike Stump
starting to work for blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-13fix rdar://6586493, a bug in codegen of the GNU Chris Lattner
missing-?:-true-value extension. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64505 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-13Condense all the blocks code into CGBlocks.cpp.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64457 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-12Initial codegen for block literals. This is a work in progress. I'veMike Stump
tried to put FIXMEs on the most important things to fix up. Lots left to do including more codegen, more documentation and cleaning code and style cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64390 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-11Use EmitVAListRef instead of EmitLValue directly to handle array decayDaniel Dunbar
case on x86_64. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64333 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-11Fix rdar://6518463, increment of a bool is always true, due toChris Lattner
subtle and non-obvious promotion rules. We already handle += and +1 correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-11finish off codegen support for sub of pointer to functions, Chris Lattner
finishing off rdar://6520707 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64295 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05Follow Eli's advice and store the VLA size with the native size_t type. ↵Anders Carlsson
Fixes PR3491. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63879 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-30Make sure to cast the VLA size of array to the type of size_t. Fixes PR3442.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29Make CodeGen produce an error if we come across a non-constant initializer ↵Douglas Gregor
list that involves the GNU array-range designator extension git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63327 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29Introduce a new expression node, ImplicitValueInitExpr, thatDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63317 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28Code generation support for C99 designated initializers.Douglas Gregor
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) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-24Fix for PR2910: implement CodeGen for non-constant offsetof.Eli Friedman
Note that there are still other issues in this area; see PR3396. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62942 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-24Refactor sizeof handling to use constant folding logic for constant Eli Friedman
sizeof expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62941 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-24remove a bunch of alignment handling code out of CGExprScalar, sinceChris Lattner
alignment must always be a constant. Just let the constant folder do it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62933 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-23Handle pointer arithmetic on function pointers.Daniel Dunbar
- <rdar://problem/6518844> Clang-generated bitcode crashes LLVM while compiling function pointer addition expression git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62857 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-20Slight cleanup, and fix for va_arg on architectures where va_list is a Eli Friedman
struct. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62585 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-18Vector codegen improvementsNate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62458 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-16Changed the API yet again.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62335 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-16Used a more suitable api to get to the type of a recordFariborz Jahanian
in code gen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62326 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-16Implemented code gen for sizeof(objc class interface).Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62289 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-11make ScalarExprEmitter::EmitCompare() emit the expression with the correct ↵Nuno Lopes
type instead of always zext it to an int this fixes codegen of simple exprs in C++ like 'if (x != 0)' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62060 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-09Emit more refined "unsupported" error for block expressions.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61993 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-21Add codegen support for __nullAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61314 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-21Implement alignof for vla types.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61305 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-21Make sure to emit the size expression for sizeof(type)Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61301 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-20Make VLAs usable, and make basic usage work correctly. Also, add a Eli Friedman
simple test that actually does VLA codegen. Note that despite the fact that the alloca isn't in the entry block, it should dominate all uses; this is guaranteed by the restrictions on goto into VLA scope in C99. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61291 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-13disable Anders' recent VLA patch, this fixes PR3209.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60989 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-12Implement allocation and sizeof VLAs. This is very basic for now.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60943 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-02Fix for PR3150: obvious copy-paste bug in Eli Friedman
ScalarExprEmitter::VisitBinLOr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60415 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-22Implemented ir-gen for 'implicit' properties using the new AST nodes.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59886 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Add spec ref to comment.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59622 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Fix redundant load of bit-fields on assignment (to get the updatedDaniel Dunbar
value). - Use extra argument to EmitStoreThroughLValue to provide place to write update bit-field value if caller requires it. - This fixes several FIXMEs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59615 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-16daniel prefers completed thoughts.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59404 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Normalize many BasicBlock names.Daniel Dunbar
- Use dotted notation for blocks related to a particular statement type. - Use .end for landing pads. No functionality change in NDEBUG mode. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Rename ?: operator blocks to cond.true and cond.false (I don't knowDaniel Dunbar
what "cond.?" means, and this avoids quoting). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59128 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Lower ?: into select when the selected values are cheap and side-effect-free.Chris Lattner
This cuts another 200 lines off expr.ll, forming 23 selects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59124 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12emit better codegen for ||/&&, shrinking expr.ll by another 240 lines.Chris Lattner
This happens for stuff like this: x = cond1 || cond2 || cond3 || cond4; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59123 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12use ConstantFoldsToSimpleInteger instead of code emission to doChris Lattner
constant folding. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59121 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Use EmitBranchOnBoolExpr in VisitConditionalOperator. ThisChris Lattner
shrinks code yet again by a bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59114 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Move EmitBranchOnBoolExpr and ConstantFoldsToSimpleInteger toChris Lattner
CodeGenFunction.cpp. Change VisitConditionalOperator to use constant fold instead of codegen'ing a constant conditional. Change ForStmt to use EmitBranchOnBoolExpr, this shrinks expr.c very slightly to 40239 lines. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59113 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Clean up some code to use isZero instead of calling getZExtValue.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59103 91177308-0d34-0410-b5e6-96231b3b80d8