| #
13ee4f48 |
| 10-Jul-2011 |
Chris Lattner <[email protected]> |
change EmitLValueForField to cast the returned lvalue to the right type, even when in the struct case. This was one root issue that was causing type mismatches throughout the compiler.
llvm-svn: 13
change EmitLValueForField to cast the returned lvalue to the right type, even when in the struct case. This was one root issue that was causing type mismatches throughout the compiler.
llvm-svn: 134862
show more ...
|
| #
1a5f8978 |
| 10-Jul-2011 |
Chris Lattner <[email protected]> |
when emitting pointer load from an lvalue or storing to an lvalue, do an explicit bitcast to whatever ConvertType produces. This will go with the next patch.
llvm-svn: 134860
|
| #
a5f58b05 |
| 09-Jul-2011 |
Chris Lattner <[email protected]> |
clang side to match the LLVM IR type system rewrite patch.
llvm-svn: 134831
|
| #
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 ...
|
| #
7c6c6cc4 |
| 07-Jul-2011 |
Nick Lewycky <[email protected]> |
Sort #includes.
llvm-svn: 134589
|
| #
d68b2d04 |
| 27-Jun-2011 |
John McCall <[email protected]> |
Fix PR10204 in a better way.
llvm-svn: 133943
|
| #
8aba2d80 |
| 27-Jun-2011 |
Nico Weber <[email protected]> |
Revert parts of r133860 to fix a crash. Add a test.
llvm-svn: 133931
|
| #
55e1fbc8 |
| 25-Jun-2011 |
John McCall <[email protected]> |
LValue carries a type now, so simplify the main EmitLoad/Store APIs by removing the redundant type parameter.
llvm-svn: 133860
|
| #
77527a8e |
| 25-Jun-2011 |
John McCall <[email protected]> |
Mark the multiply which occurs as part of performing pointer arithmetic on a VLA as 'nsw', per discussion with djg, and implement pointer arithmetic (other than array accesses) and pointer subtractio
Mark the multiply which occurs as part of performing pointer arithmetic on a VLA as 'nsw', per discussion with djg, and implement pointer arithmetic (other than array accesses) and pointer subtraction for VLA types.
llvm-svn: 133855
show more ...
|
| #
23c29fea |
| 24-Jun-2011 |
John McCall <[email protected]> |
Change the IR-generation of VLAs so that we capture bounds, not sizes; so that we use well-typed allocas; and so that we properly recurse through the full set of variably-modified types.
llvm-svn:
Change the IR-generation of VLAs so that we capture bounds, not sizes; so that we use well-typed allocas; and so that we properly recurse through the full set of variably-modified types.
llvm-svn: 133827
show more ...
|
| #
58df509f |
| 22-Jun-2011 |
Douglas Gregor <[email protected]> |
When binding a reference to an Automatic Reference Counting temporary, retain/release the temporary object appropriately. Previously, we would only perform the retain/release operations when the refe
When binding a reference to an Automatic Reference Counting temporary, retain/release the temporary object appropriately. Previously, we would only perform the retain/release operations when the reference would extend the lifetime of the temporary, but this does the wrong thing across calls.
llvm-svn: 133620
show more ...
|
| #
d410c08e |
| 21-Jun-2011 |
Douglas Gregor <[email protected]> |
A few tweaks to MaterializeTemporaryExpr suggested by John.
llvm-svn: 133528
|
| #
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 ...
|
| #
8a9cc4fe |
| 18-Jun-2011 |
Benjamin Kramer <[email protected]> |
Remove dead variables.
llvm-svn: 133346
|
| #
dd19c011 |
| 18-Jun-2011 |
Benjamin Kramer <[email protected]> |
80 cols.
llvm-svn: 133345
|
| #
1553b190 |
| 16-Jun-2011 |
John McCall <[email protected]> |
Restore correct use of GC barriers.
llvm-svn: 133144
|
| #
31168b07 |
| 15-Jun-2011 |
John McCall <[email protected]> |
Automatic Reference Counting.
Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation c
Automatic Reference Counting.
Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order.
llvm-svn: 133103
show more ...
|
| #
471a22fe |
| 15-Jun-2011 |
Eli Friedman <[email protected]> |
Use isAnyComplexType here so we don't pass complex numbers into the aggregate handling code; found by inspection.
llvm-svn: 133070
|
| #
a8cde3c0 |
| 22-May-2011 |
Chris Lattner <[email protected]> |
fix 80 col violation
llvm-svn: 131870
|
| #
6ab2fa8f |
| 20-May-2011 |
Douglas Gregor <[email protected]> |
Introduce Type::isSignedIntegerOrEnumerationType() and Type::isUnsignedIntegerOrEnumerationType(), which are like Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also consider the u
Introduce Type::isSignedIntegerOrEnumerationType() and Type::isUnsignedIntegerOrEnumerationType(), which are like Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also consider the underlying type of a C++0x scoped enumeration type.
Audited all callers to the existing functions, switching those that need to also handle scoped enumeration types (e.g., those that deal with constant values) over to the new functions. Fixes PR9923 / <rdar://problem/9447851>.
llvm-svn: 131735
show more ...
|
| #
1c60a0bc |
| 02-May-2011 |
Nick Lewycky <[email protected]> |
Remove dead variable, flagged by gcc's -Wunused-but-set-variable.
llvm-svn: 130674
|
| #
27337a88 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Convert AccessInfo::AccessAlignment to CharUnits. No change in functionality intended.
llvm-svn: 130087
|
| #
f76759c6 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Convert CGBitFieldInfo::FieldByteOffset to CharUnits. No change in functionality intended.
llvm-svn: 130085
|
| #
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
|
| #
2979fe01 |
| 12-Apr-2011 |
John McCall <[email protected]> |
After some discussion with Doug, we decided that it made a lot more sense for __unknown_anytype resolution to destructively modify the AST. So that's what it does now, which significantly simplifies
After some discussion with Doug, we decided that it made a lot more sense for __unknown_anytype resolution to destructively modify the AST. So that's what it does now, which significantly simplifies some of the implementation. Normal member calls work pretty cleanly now, and I added support for propagating unknown-ness through &.
llvm-svn: 129331
show more ...
|