| #
dd68bd0a |
| 14-Feb-2011 |
Chris Lattner <[email protected]> |
revert my ConstantVector patch, it seems to have made the llvm-gcc builders unhappy.
llvm-svn: 125505
|
| #
2d9a7672 |
| 14-Feb-2011 |
Chris Lattner <[email protected]> |
update for ConstantVector::get API change.
llvm-svn: 125488
|
| #
3968cd0f |
| 11-Feb-2011 |
Rafael Espindola <[email protected]> |
For consistency, use llvm::raw_ostream in the rest of the mangle api.
llvm-svn: 125360
|
| #
ad7c5c16 |
| 08-Feb-2011 |
John McCall <[email protected]> |
Reorganize CodeGen{Function,Module} to eliminate the unfortunate Block{Function,Module} base class. Minor other refactorings.
Fixed a few address-space bugs while I was there.
llvm-svn: 125085
|
| #
351762cd |
| 07-Feb-2011 |
John McCall <[email protected]> |
A few more tweaks to the blocks AST representation: - BlockDeclRefExprs always store VarDecls - BDREs no longer store copy expressions - BlockDecls now store a list of captured varia
A few more tweaks to the blocks AST representation: - BlockDeclRefExprs always store VarDecls - BDREs no longer store copy expressions - BlockDecls now store a list of captured variables, information about how they're captured, and a copy expression if necessary With that in hand, change IR generation to use the captures data in blocks instead of walking the block independently.
Additionally, optimize block layout by emitting fields in descending alignment order, with a heuristic for filling in words when alignment of the end of the block header is insufficient for the most aligned field.
llvm-svn: 125005
show more ...
|
| #
f3a8860e |
| 03-Feb-2011 |
John McCall <[email protected]> |
More capturing of 'this': implicit member expressions. Getting that right for anonymous struct/union members led to me discovering some seemingly broken code in that area of Sema, which I fixed, pa
More capturing of 'this': implicit member expressions. Getting that right for anonymous struct/union members led to me discovering some seemingly broken code in that area of Sema, which I fixed, partly by changing the representation of member pointer constants so that IndirectFieldDecls aren't expanded. This led to assorted cleanups with member pointers in CodeGen, and while I was doing that I saw some random other things to clean up.
llvm-svn: 124785
show more ...
|
| #
21d3fca9 |
| 27-Jan-2011 |
Douglas Gregor <[email protected]> |
When producing IR for a lvalue-to-rvalue cast *as an lvalue*, only non-class prvalues actually require the realization of a temporary. For everything else, we already have an lvalue (or class prvalue
When producing IR for a lvalue-to-rvalue cast *as an lvalue*, only non-class prvalues actually require the realization of a temporary. For everything else, we already have an lvalue (or class prvalue) in the subexpression.
Note: we're missing some move elision in this case. I'll tackle that next. llvm-svn: 124453
show more ...
|
| #
2f2fa728 |
| 26-Jan-2011 |
Fariborz Jahanian <[email protected]> |
Fixes an IRgen bug where __block variable is referenced in the block-literal initializer of that variable. // rdar://8893785
llvm-svn: 124332
|
| #
0a6bf2eb |
| 26-Jan-2011 |
John McCall <[email protected]> |
Un-nest the meat of this function.
llvm-svn: 124310
|
| #
ce1de617 |
| 26-Jan-2011 |
John McCall <[email protected]> |
Better framework for conditional cleanups; untested as yet. I'm separately committing this because it incidentally changes some block orderings and minor IR issues, like using a phi instead of an un
Better framework for conditional cleanups; untested as yet. I'm separately committing this because it incidentally changes some block orderings and minor IR issues, like using a phi instead of an unnecessary alloca.
llvm-svn: 124277
show more ...
|
| #
9c399a29 |
| 22-Jan-2011 |
Douglas Gregor <[email protected]> |
Send code generation for xvalues down the same path as lvalues
llvm-svn: 124023
|
| #
705ba07e |
| 19-Jan-2011 |
Ken Dyck <[email protected]> |
Replace calls to getTypeSize() and getTypeAlign() with their 'InChars' counterparts where char units are needed.
llvm-svn: 123805
|
| #
8dfa5f17 |
| 18-Jan-2011 |
Jeffrey Yasskin <[email protected]> |
Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and -Wint-to-pointer-cast.
llvm-svn: 123719
|
| #
5d413781 |
| 06-Dec-2010 |
John McCall <[email protected]> |
Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoretical reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
|
| #
d0a30016 |
| 06-Dec-2010 |
John McCall <[email protected]> |
__block variables require us to evaluate the RHS of an assignment before the LHS, or else the pointer might be invalid. This is kindof dumb, but go ahead and make sure we're doing that for l-value s
__block variables require us to evaluate the RHS of an assignment before the LHS, or else the pointer might be invalid. This is kindof dumb, but go ahead and make sure we're doing that for l-value scalar assignment, which fixes a miscompile of obj-c++.dg/block-seq.mm.
Leave a FIXME for how to solve this problem for agg __blocks.
llvm-svn: 120992
show more ...
|
| #
a2342eb8 |
| 05-Dec-2010 |
John McCall <[email protected]> |
Fix a bug in the emission of __real/__imag l-values on scalar operands. Fix a bug in the emission of complex compound assignment l-values. Introduce a method to emit an expression whose value isn't r
Fix a bug in the emission of __real/__imag l-values on scalar operands. Fix a bug in the emission of complex compound assignment l-values. Introduce a method to emit an expression whose value isn't relevant. Make that method evaluate its operand as an l-value if it is one. Fixes our volatile compliance in C++.
llvm-svn: 120931
show more ...
|
| #
d583da04 |
| 04-Dec-2010 |
Francois Pichet <[email protected]> |
More anonymous struct/union redesign. This one deals with anonymous field used in a constructor initializer list:
struct X { X() : au_i1(123) {} union { int au_i1; float au_f1; }; };
More anonymous struct/union redesign. This one deals with anonymous field 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
show more ...
|
| #
e26a872b |
| 04-Dec-2010 |
John McCall <[email protected]> |
Remove some defensive calls to EmitLoadOfPropertyRefLValue that shouldn't be required, and then fix up some missing loads on overloaded-operator paths which that exposed.
llvm-svn: 120896
|
| #
34376a68 |
| 04-Dec-2010 |
John McCall <[email protected]> |
Although we currently have explicit lvalue-to-rvalue conversions, they're not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE
Although we currently have explicit lvalue-to-rvalue conversions, they're not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler.
In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator.
This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter.
Ted Kremenek kindly contributed the analyzer workarounds in this patch.
llvm-svn: 120890
show more ...
|
| #
0692a32a |
| 04-Dec-2010 |
John McCall <[email protected]> |
Test case for the l-value base only being evaluated once.
Also, move the l-value emission code into CGObjC.cpp and teach it, for completeness, to store away self for a super send.
Also, inline the
Test case for the l-value base only being evaluated once.
Also, move the l-value emission code into CGObjC.cpp and teach it, for completeness, to store away self for a super send.
Also, inline the super cases for property gets and sets and make them use the correct result type for implicit getter/setter calls.
llvm-svn: 120887
show more ...
|
| #
f3eb96fc |
| 04-Dec-2010 |
John McCall <[email protected]> |
Kill the KVC l-value kind and calculate the base expression when emitting the l-value.
llvm-svn: 120884
|
| #
b7bd14fa |
| 02-Dec-2010 |
John McCall <[email protected]> |
Simplify the ASTs by consolidating ObjCImplicitGetterSetterExpr and ObjCPropertyRefExpr into the latter.
llvm-svn: 120643
|
| #
f3735e01 |
| 01-Dec-2010 |
John McCall <[email protected]> |
Restore the lvalue-to-rvalue conversion patch with a minimal fix.
llvm-svn: 120555
|
| #
4f22c9de |
| 30-Nov-2010 |
John McCall <[email protected]> |
L-value to r-value conversion is not ready for prime-time.
llvm-svn: 120433
|
| #
824fd1dc |
| 30-Nov-2010 |
John McCall <[email protected]> |
Introduce an r-value to l-value cast kind. I'm not promising anything about the reliability of this yet.
llvm-svn: 120422
|