| #
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 ...
|
| #
f479f1b7 |
| 09-May-2011 |
Alexis Hunt <[email protected]> |
Rename "hasTrivialConstructor" to "hasTrivialDefaultConstructor" and modify the semantics slightly to accomodate default constructors (I hope).
llvm-svn: 131087
|
| #
52a8cca5 |
| 29-Apr-2011 |
Fariborz Jahanian <[email protected]> |
removes a meaningless comment.
llvm-svn: 130550
|
| #
99514b91 |
| 29-Apr-2011 |
Fariborz Jahanian <[email protected]> |
block variables on lhs need be ir-gen'ed after the rhs when its 'forwarding' pointer may be modified in rhs evaluation as result of call to Block_copy. // rdar://9309454
llvm-svn: 130545
|
| #
03535265 |
| 28-Apr-2011 |
Argyrios Kyrtzidis <[email protected]> |
Cut down unnecessary zero'ing when value-initializing arrays of C++ objects.
-C++ objects with user-declared constructor don't need zero'ing. -We can zero-initialize arrays of C++ objects in "bulk"
Cut down unnecessary zero'ing when value-initializing arrays of C++ objects.
-C++ objects with user-declared constructor don't need zero'ing. -We can zero-initialize arrays of C++ objects in "bulk" now, in which case don't zero-initialize each object again.
llvm-svn: 130453
show more ...
|
| #
9d3c5040 |
| 28-Apr-2011 |
Argyrios Kyrtzidis <[email protected]> |
Get the base element type even in multidimensional arrays.
llvm-svn: 130427
|
| #
e07425a5 |
| 28-Apr-2011 |
Argyrios Kyrtzidis <[email protected]> |
When value-initializing the elements of an array not not included in the initializer make sure that a non-trivial C++ constructor gets called.
Fixes rdar://9347552 & http://llvm.org/PR9801
llvm-svn
When value-initializing the elements of an array not not included in the initializer make sure that a non-trivial C++ constructor gets called.
Fixes rdar://9347552 & http://llvm.org/PR9801
llvm-svn: 130421
show more ...
|
| #
bb2c2400 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Convert size and alignment variables to CharUnits in EmitAggregateCopy(). No change in functionality intended.
llvm-svn: 130113
|
| #
239a3357 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Convert type size and alignment to CharUnits in CheckAggExprForMemSetUse(). No change in functionality intended.
llvm-svn: 130112
|
| #
df94cb7d |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Convert the return type of GetNumNonZeroBytesInInit() to CharUnits. No change in functionality intended.
llvm-svn: 130111
|
| #
3b4bd9a1 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Eliminate some literal 8s by converting size variables in EmitGCMove() and EmitFinalDestCopy() to CharUnits. No change in functionality intended.
llvm-svn: 130110
|
| #
a8094505 |
| 24-Apr-2011 |
Ken Dyck <[email protected]> |
Replace calls to ASTContext::getTypeInfo() with calls to ASTContext::getTypeSize() when only the size part is used. No change in functionality intended.
llvm-svn: 130109
|
| #
b2ed28ea |
| 21-Apr-2011 |
Argyrios Kyrtzidis <[email protected]> |
For
double data[20000000] = {0};
we would blow out the memory by creating 20M Exprs to fill out the initializer.
To fix this, if the initializer list initializes an array with more elements than t
For
double data[20000000] = {0};
we would blow out the memory by creating 20M Exprs to fill out the initializer.
To fix this, if the initializer list initializes an array with more elements than there are initializers in the list, have InitListExpr store a single 'ArrayFiller' expression that specifies an expression to be used for value initialization of the rest of the elements.
Fixes rdar://9275920.
llvm-svn: 129896
show more ...
|
| #
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
|
| #
58989b71 |
| 12-Apr-2011 |
John McCall <[email protected]> |
We can't emit an aggregate cast as its sub-expression in general just because the result is ignored. The particular example here is with property l-values, but there could be all sorts of lovely cas
We can't emit an aggregate cast as its sub-expression in general just because the result is ignored. The particular example here is with property l-values, but there could be all sorts of lovely casts that this isn't safe for. Sink the check into the one case that seems to actually be capable of honoring this.
llvm-svn: 129397
show more ...
|
| #
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 ...
|
| #
2d2e8707 |
| 11-Apr-2011 |
John McCall <[email protected]> |
More __unknown_anytype work.
llvm-svn: 129269
|
| #
8a01a751 |
| 11-Apr-2011 |
Anders Carlsson <[email protected]> |
Remove CK_DynamicToNull.
llvm-svn: 129265
|
| #
c6020066 |
| 10-Apr-2011 |
Anders Carlsson <[email protected]> |
As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind which represents a dynamic cast where we know that the result is always null.
For example:
struct A { virtual ~A(); }; stru
As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind which represents a dynamic cast where we know that the result is always null.
For example:
struct A { virtual ~A(); }; struct B final : A { }; struct C { };
bool f(B* b) { return dynamic_cast<C*>(b); }
llvm-svn: 129256
show more ...
|
| #
31996343 |
| 07-Apr-2011 |
John McCall <[email protected]> |
Basic, untested implementation for an "unknown any" type requested by LLDB. The idea is that you can create a VarDecl with an unknown type, or a FunctionDecl with an unknown return type, and it will
Basic, untested implementation for an "unknown any" type requested by LLDB. The idea is that you can create a VarDecl with an unknown type, or a FunctionDecl with an unknown return type, and it will still be valid to access that object as long as you explicitly cast it at every use. I'm still going back and forth about how I want to test this effectively, but I wanted to go ahead and provide a skeletal implementation for the LLDB folks' benefit and because it also improves some diagnostic goodness for placeholder expressions.
llvm-svn: 129065
show more ...
|
|
Revision tags: llvmorg-2.9.0 |
|
| #
7a26ba4d |
| 30-Mar-2011 |
Fariborz Jahanian <[email protected]> |
Fix IRGen issues related to using property-dot syntax for prperty reference types. // rdar://9208606.
llvm-svn: 128551
|
|
Revision tags: llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1 |
|
| #
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
|
| #
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
|
| #
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 ...
|