| #
f30bc001 |
| 02-Sep-2011 |
Fariborz Jahanian <[email protected]> |
blocks: Support capturing complex variable in block. // rdar://10033896
llvm-svn: 139020
|
| #
2192fe50 |
| 18-Jul-2011 |
Chris Lattner <[email protected]> |
de-constify llvm::Type, patch by David Blaikie!
llvm-svn: 135370
|
| #
7c454bb8 |
| 15-Jul-2011 |
John McCall <[email protected]> |
Create a new expression node, SubstNonTypeTemplateParmExpr, to represent a fully-substituted non-type template parameter. This should improve source fidelity, as well as being generically useful for
Create a new expression node, SubstNonTypeTemplateParmExpr, to represent a fully-substituted non-type template parameter. This should improve source fidelity, as well as being generically useful for diagnostics and such.
llvm-svn: 135243
show more ...
|
| #
4db5c3c8 |
| 07-Jul-2011 |
John McCall <[email protected]> |
In ARC, reclaim all return values of retainable type, not just those where we have an immediate need of a retained value.
As an exception, don't do this when the call is made as the immediate operan
In ARC, reclaim all return values of retainable type, not just those where we have an immediate need of a retained value.
As an exception, don't do this when the call is made as the immediate operand of a __bridge retain. This is more in the way of a workaround than an actual guarantee, so it's acceptable to be brittle here.
rdar://problem/9504800
llvm-svn: 134605
show more ...
|
| #
5836852e |
| 25-Jun-2011 |
Eli Friedman <[email protected]> |
Cleanup cast IRGen a bit; no intended functionality change.
llvm-svn: 133864
|
| #
91147596 |
| 15-Apr-2011 |
Peter Collingbourne <[email protected]> |
C1X: implement generic selections
As an extension, generic selection support has been added for all supported languages. The syntax is the same as for C1X.
llvm-svn: 129554
|
|
Revision tags: llvmorg-2.9.0 |
|
| #
20c0f02c |
| 30-Mar-2011 |
Jay Foad <[email protected]> |
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128538
|
|
Revision tags: llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1 |
|
| #
e6be5e1c |
| 17-Feb-2011 |
John McCall <[email protected]> |
Remove the "conditional save" hashtables from IR generation.
llvm-svn: 125761
|
| #
c07a0c7e |
| 17-Feb-2011 |
John McCall <[email protected]> |
Change the representation of GNU ?: expressions to use a different expression class and to bind the shared value using OpaqueValueExpr. This fixes an unnoticed problem with deserialization of these
Change the representation of GNU ?: expressions to use a different expression class and to bind the shared value using OpaqueValueExpr. This fixes an unnoticed problem with deserialization of these expressions where the deserialized form would lose the vital pointer-equality trait; or rather, it fixes it because this patch also does the right thing for deserializing OVEs.
Change OVEs to not be a "temporary object" in the sense that copy elision is permitted.
This new representation is not totally unawkward to work with, but I think that's really part and parcel with the semantics we're modelling here. In particular, it's much easier to fix things like the copy elision bug and to make the CFG look right.
I've tried to update the analyzer to deal with this in at least some obvious cases, and I think we get a much better CFG out, but the printing of OpaqueValueExprs probably needs some work.
llvm-svn: 125744
show more ...
|
| #
1bf5846a |
| 16-Feb-2011 |
John McCall <[email protected]> |
Save a copy expression for non-trivial copy constructions of catch variables.
llvm-svn: 125661
|
| #
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 ...
|
| #
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
|
| #
294c2db4 |
| 13-Jan-2011 |
John McCall <[email protected]> |
Ensure an insertion point at the end of a statement-expression. Fixes PR8967.
llvm-svn: 123360
|
| #
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 ...
|
| #
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 ...
|
| #
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
|
| #
4f29b49d |
| 16-Nov-2010 |
John McCall <[email protected]> |
Support compound complex operations as l-values in C++. Add a test case based on CodeGen/volatile-1.c which tests the current C++ semantics, and note the many, many places we fall short of them.
ll
Support compound complex operations as l-values in C++. Add a test case based on CodeGen/volatile-1.c which tests the current C++ semantics, and note the many, many places we fall short of them.
llvm-svn: 119402
show more ...
|
| #
07bb1966 |
| 16-Nov-2010 |
John McCall <[email protected]> |
Simplify some complex emission and implement correct semantics for assignment to volatiles in C. This in effect reverts some of mjs's work in and around r72572. Basically, the C++ standard is quite
Simplify some complex emission and implement correct semantics for assignment to volatiles in C. This in effect reverts some of mjs's work in and around r72572. Basically, the C++ standard is quite clear, except that it lies about volatile behavior approximating C's, whereas the C standard is almost actively misleading.
llvm-svn: 119344
show more ...
|
| #
fa8edb11 |
| 16-Nov-2010 |
John McCall <[email protected]> |
Teach complex compound assignment IR-generation that the RHS of a compound assignment is always already in the computation type.
llvm-svn: 119330
|
| #
83fe49d1 |
| 14-Nov-2010 |
John McCall <[email protected]> |
Always emit full loads from volatile complex l-values. Return the result of a complex assignment with the original values, not by performing a load from the l-value; this is the correct semantics in
Always emit full loads from volatile complex l-values. Return the result of a complex assignment with the original values, not by performing a load from the l-value; this is the correct semantics in C, although not in C++.
llvm-svn: 119037
show more ...
|
| #
d7646254 |
| 14-Nov-2010 |
John McCall <[email protected]> |
Add a few more complex-related cast kinds that arise due to arbitrary implicit conversions; the last batch was specific to promotions. I think this is the full set we need. I do think dividing the
Add a few more complex-related cast kinds that arise due to arbitrary implicit conversions; the last batch was specific to promotions. I think this is the full set we need. I do think dividing the cast kinds into floating and integral is probably a good idea.
Annotate a *lot* more C casts with useful cast kinds.
llvm-svn: 119036
show more ...
|