| #
d62306a4 |
| 10-Nov-2011 |
Richard Smith <[email protected]> |
Constant expression evaluation: support for evaluation of structs and unions of literal types, as well as derived-to-base casts for lvalues and derived-to-virtual-base casts.
llvm-svn: 144265
|
|
Revision tags: llvmorg-3.0.0-rc3 |
|
| #
f3e9e43d |
| 07-Nov-2011 |
Richard Smith <[email protected]> |
Constant expression evaluation: support for arrays.
llvm-svn: 143922
|
| #
ffc8ca2d |
| 07-Nov-2011 |
John McCall <[email protected]> |
Rip out CK_GetObjCProperty.
llvm-svn: 143910
|
|
Revision tags: llvmorg-3.0.0-rc2 |
|
| #
fcec630a |
| 01-Nov-2011 |
Eli Friedman <[email protected]> |
Fix the representation of wide strings in the AST and IR so that it uses the native representation of integers for the elements. This fixes a bunch of nastiness involving treating wide strings as a
Fix the representation of wide strings in the AST and IR so that it uses the native representation of integers for the elements. This fixes a bunch of nastiness involving treating wide strings as a series of bytes.
Patch by Seth Cantrell.
llvm-svn: 143417
show more ...
|
| #
7b553f1b |
| 29-Oct-2011 |
Richard Smith <[email protected]> |
Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will implicitly perform an lvalue-to-rvalue conversion if used on an lvalue expression. Also improve the documentation of Expr
Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will implicitly perform an lvalue-to-rvalue conversion if used on an lvalue expression. Also improve the documentation of Expr::Evaluate* to indicate which of them will accept expressions with side-effects.
llvm-svn: 143263
show more ...
|
| #
9190e19b |
| 24-Oct-2011 |
Eli Friedman <[email protected]> |
Don't try to emit CK_LValueBitCast casts as constants. PR9558.
llvm-svn: 142863
|
|
Revision tags: llvmorg-3.0.0-rc1 |
|
| #
f0c267e6 |
| 14-Oct-2011 |
Anton Korobeynikov <[email protected]> |
Provide half floating point support as a storage only type. Lack of half FP was a regression compared to llvm-gcc.
llvm-svn: 142016
|
| #
fde961db |
| 14-Oct-2011 |
Eli Friedman <[email protected]> |
PR11124: Don't overwrite memory outside of a base class when performing zero-initialization before running its constructor.
llvm-svn: 141933
|
| #
caf3390d |
| 10-Oct-2011 |
Richard Smith <[email protected]> |
Constant expression evaluation refactoring: - Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions, and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
Constant expression evaluation refactoring: - Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions, and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert behaviour. - Factor out evaluation of bitfield bit widths. - Fix a few places which would evaluate an expression twice: once to determine whether it is a constant expression, then again to get the value.
llvm-svn: 141561
show more ...
|
| #
aa347f93 |
| 23-Sep-2011 |
David Blaikie <[email protected]> |
Removing a bunch of dead returns/breaks after llvm_unreachables.
llvm-svn: 140407
|
| #
83d382b1 |
| 23-Sep-2011 |
David Blaikie <[email protected]> |
Switch assert(0/false) llvm_unreachable.
llvm-svn: 140367
|
| #
6b9c41ea |
| 19-Sep-2011 |
Eli Friedman <[email protected]> |
Add list initialization for complex numbers in C. Essentially, this allows "_Complex float x = {1.0f, 2.0f};". See changes to docs/LanguageExtensions.html for a longer description.
<rdar://problem
Add list initialization for complex numbers in C. Essentially, this allows "_Complex float x = {1.0f, 2.0f};". See changes to docs/LanguageExtensions.html for a longer description.
<rdar://problem/9397672>.
llvm-svn: 140090
show more ...
|
| #
2d637d2e |
| 10-Sep-2011 |
John McCall <[email protected]> |
Rename the ARC cast kinds to start with "ARC".
llvm-svn: 139466
|
| #
cd78e805 |
| 10-Sep-2011 |
John McCall <[email protected]> |
When converting a block pointer to an Objective-C pointer type, extend the lifetime of the block by copying it to the heap, or else we'll get a dangling reference because the code working with the no
When converting a block pointer to an Objective-C pointer type, extend the lifetime of the block by copying it to the heap, or else we'll get a dangling reference because the code working with the non-block-typed object will not know it needs to copy.
There is some danger here, e.g. with assigning a block literal to an unsafe variable, but, well, it's an unsafe variable.
llvm-svn: 139451
show more ...
|
| #
9320b87c |
| 09-Sep-2011 |
John McCall <[email protected]> |
Give conversions of block pointers to ObjC pointers a different cast kind than conversions of C pointers to ObjC pointers. In order to ensure that we've caught every case, add asserts to CastExpr th
Give conversions of block pointers to ObjC pointers a different cast kind than conversions of C pointers to ObjC pointers. In order to ensure that we've caught every case, add asserts to CastExpr that strictly determine which cast kind is used for which kind of bit cast.
llvm-svn: 139352
show more ...
|
| #
e8bbc121 |
| 02-Sep-2011 |
Douglas Gregor <[email protected]> |
Extend the ASTContext constructor to delay the initialization of builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, ra
Extend the ASTContext constructor to delay the initialization of builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, rather than doing so after the fact. No actual functionality change (yet).
llvm-svn: 138985
show more ...
|
| #
22653bac |
| 30-Aug-2011 |
Sebastian Redl <[email protected]> |
Declare and define implicit move constructor and assignment operator.
This makes the code duplication of implicit special member handling even worse, but the cleanup will have to come later. For now
Declare and define implicit move constructor and assignment operator.
This makes the code duplication of implicit special member handling even worse, but the cleanup will have to come later. For now, this works. Follow-up with tests for explicit defaulting and enabling the __has_feature flag to come.
llvm-svn: 138821
show more ...
|
| #
750a5916 |
| 23-Aug-2011 |
Eli Friedman <[email protected]> |
Cleanup to use helper.
llvm-svn: 138369
|
| #
0e62c1cc |
| 23-Jul-2011 |
Chris Lattner <[email protected]> |
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports them into the clang namespace.
llvm-svn: 135852
|
| #
ed8db7d9 |
| 21-Jul-2011 |
Jay Foad <[email protected]> |
Convert ConstantExpr::getGetElementPtr and ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
|
| #
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 ...
|
| #
7c57be3e |
| 11-Jul-2011 |
Jay Foad <[email protected]> |
De-constify Types in StructType::get() and TargetData::getIntPtrType().
llvm-svn: 134893
|
| #
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 ...
|
| #
fe31481f |
| 21-Jun-2011 |
Douglas Gregor <[email protected]> |
Introduce a new AST node describing reference binding to temporaries.
MaterializeTemporaryExpr captures a reference binding to a temporary value, making explicit that the temporary value (a prvalue)
Introduce a new AST node describing reference binding to temporaries.
MaterializeTemporaryExpr captures a reference binding to a temporary value, making explicit that the temporary value (a prvalue) needs to be materialized into memory so that its address can be used. The intended AST invariant here is that a reference will always bind to a glvalue, and MaterializeTemporaryExpr will be used to convert prvalues into glvalues for that binding to happen. For example, given
const int& r = 1.0;
The initializer of "r" will be a MaterializeTemporaryExpr whose subexpression is an implicit conversion from the double literal "1.0" to an integer value.
IR generation benefits most from this new node, since it was previously guessing (badly) when to materialize temporaries for the purposes of reference binding. There are likely more refactoring and cleanups we could perform there, but the introduction of MaterializeTemporaryExpr fixes PR9565, a case where IR generation would effectively bind a const reference directly to a bitfield in a struct. Addresses <rdar://problem/9552231>.
llvm-svn: 133521
show more ...
|