| #
04775f84 |
| 26-Jun-2010 |
Anders Carlsson <[email protected]> |
Change EmitReferenceBindingToExpr to take a decl instead of a boolean.
llvm-svn: 106949
|
| #
280e61f1 |
| 21-Jun-2010 |
Anders Carlsson <[email protected]> |
Fix an Obj-C++ miscompile when calling an Obj-C method that returns a C++ reference.
llvm-svn: 106477
|
| #
64cda8b5 |
| 17-Jun-2010 |
Fariborz Jahanian <[email protected]> |
objective-C++ IRGen: property reference as an lvalue when performing a derived-to-base conversion. Fixes radar 7501812. Added an executable test to llvm-test suite.
llvm-svn: 106247
|
| #
9240f3da |
| 17-Jun-2010 |
Fariborz Jahanian <[email protected]> |
Objective-c++ IRGen. Support for @selector expression as an lvalue. Fixes PR7390.
llvm-svn: 106235
|
| #
8509824c |
| 15-Jun-2010 |
Chandler Carruth <[email protected]> |
Move CodeGenOptions.h *back* into Frontend. This should have been done when the dependency edge was reversed such that CodeGen depends on Frontend.
llvm-svn: 106065
|
| #
c0964b60 |
| 22-May-2010 |
Anders Carlsson <[email protected]> |
Re-land the fix for PR7139.
llvm-svn: 104446
|
| #
aae38d66 |
| 22-May-2010 |
Douglas Gregor <[email protected]> |
Improve our handling of reference binding for subobjects of temporaries. There are actually several interrelated fixes here:
- When converting an object to a base class, it's only an lvalue cast
Improve our handling of reference binding for subobjects of temporaries. There are actually several interrelated fixes here:
- When converting an object to a base class, it's only an lvalue cast when the original object was an lvalue and we aren't casting pointer-to-derived to pointer-to-base. Previously, we were misclassifying derived-to-base casts of class rvalues as lvalues, causing various oddities (including problems with reference binding not extending the lifetimes of some temporaries).
- Teach the code for emitting a reference binding how to look through no-op casts and parentheses directly, since Expr::IgnoreParenNoOpCasts is just plain wrong for this. Also, make sure that we properly look through multiple levels of indirection from the temporary object, but destroy the actual temporary object; this fixes the reference-binding issue mentioned above.
- Teach Objective-C message sends to bind the result as a temporary when needed. This is actually John's change, but it triggered the reference-binding problem above, so it's included here. Now John can actually test his return-slot improvements.
llvm-svn: 104434
show more ...
|
| #
c866eb5b |
| 21-May-2010 |
Anders Carlsson <[email protected]> |
Unbreak self-host.
llvm-svn: 104390
|
| #
da1641cd |
| 21-May-2010 |
Anders Carlsson <[email protected]> |
Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle setting null data member pointers correctly. Fixes PR7139.
llvm-svn: 104387
|
| #
c4094935 |
| 21-May-2010 |
John McCall <[email protected]> |
When emitting an lvalue for an anonymous struct or union member during class initialization, drill down through an arbitrary number of anonymous records.
llvm-svn: 104310
|
| #
7c38f153 |
| 20-May-2010 |
Douglas Gregor <[email protected]> |
Rework our handling of binding a reference to a temporary subobject. Previously, we could only properly bind to a base class subobject while extending the lifetime of the complete object (of a derive
Rework our handling of binding a reference to a temporary subobject. Previously, we could only properly bind to a base class subobject while extending the lifetime of the complete object (of a derived type); for non-static data member subobjects, we could memcpy (!) the result and bind to that, which is rather broken.
Now, we pull apart the expression that we're binding to, to figure out which subobject we're accessing, then construct the temporary object (adding a destruction if needed) and, finally, dig out the subobject we actually meant to access.
This fixes yet another instance where we were memcpy'ing rather than doing the right thing. However, note the FIXME in references.cpp: there's more work to be done for binding to subobjects, since the AST is incorrectly modeling some member accesses in base classes as lvalues when they are really rvalues.
llvm-svn: 104219
show more ...
|
| #
8b07ec25 |
| 15-May-2010 |
John McCall <[email protected]> |
Substantially alter the design of the Objective C type AST by introducing ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list
Substantially alter the design of the Objective C type AST by introducing ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list of protocols. An ObjCObjectPointerType is therefore just a pointer which always points to one of these types (possibly sugared). ObjCInterfaceType is now just a kind of ObjCObjectType which happens to not carry any protocols.
Alter a rather large number of use sites to use ObjCObjectType instead of ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather than hashing them in a FoldingSet. Remove some number of methods that are no longer used, at least after this patch.
By simplifying ObjCObjectPointerType, we are now able to easily remove and apply pointers to Objective-C types, which is crucial for a certain kind of ObjC++ metaprogramming common in WebKit.
llvm-svn: 103870
show more ...
|
| #
2d2623c7 |
| 11-May-2010 |
Fariborz Jahanian <[email protected]> |
Minor refactoring of my last patch.
llvm-svn: 103475
|
| #
43a40f93 |
| 10-May-2010 |
Fariborz Jahanian <[email protected]> |
Objective-C++ Code gen. Handle code gen. for property reference dot-syntax notation in a varierty of cases. Fixes radar 7964490.
llvm-svn: 103440
|
| #
f8a71f08 |
| 02-May-2010 |
Anders Carlsson <[email protected]> |
Add the same 'ForVirtualBase' parameter to EmitCXXDestructorCall.
llvm-svn: 102882
|
|
Revision tags: llvmorg-2.7.0 |
|
| #
8a64c1c9 |
| 24-Apr-2010 |
Anders Carlsson <[email protected]> |
Change CodeGenFunction::GetAddressOfDerivedClass to take a BasePath.
llvm-svn: 102273
|
| #
c6eaea70 |
| 24-Apr-2010 |
Anders Carlsson <[email protected]> |
Convert more call sites over to the new GetAddressOfBaseClass.
llvm-svn: 102272
|
| #
914af218 |
| 23-Apr-2010 |
Douglas Gregor <[email protected]> |
Handle compound assignment expressions (i += j) as lvalues, which is permitted in C++ but not in C. Fixes PR6900. Clang can now handle all of Boost.Lambda's regression tests.
llvm-svn: 102170
|
| #
2e6567ae |
| 22-Apr-2010 |
John McCall <[email protected]> |
Call PerformCopyInitialization to properly initialize the exception temporary in a throw expression. Use EmitAnyExprToMem to emit the throw expression, which magically elides the final copy-construc
Call PerformCopyInitialization to properly initialize the exception temporary in a throw expression. Use EmitAnyExprToMem to emit the throw expression, which magically elides the final copy-constructor call (which raises a new strict-compliance bug, but baby steps). Give __cxa_throw a destructor pointer if the exception type has a non-trivial destructor.
llvm-svn: 102039
show more ...
|
| #
2188696d |
| 21-Apr-2010 |
John McCall <[email protected]> |
Miscellaneous codegen cleanups. Mostly, don't create new basic blocks just to save the current insertion state! This change significantly simplifies the IR CFG in exceptions code.
llvm-svn: 101996
|
| #
4d55b2d0 |
| 19-Apr-2010 |
Fariborz Jahanian <[email protected]> |
Some renaming of methods, fixes typo (related to PR6769).
llvm-svn: 101794
|
| #
3fef72f0 |
| 18-Apr-2010 |
Fariborz Jahanian <[email protected]> |
Local static variables must be available module-wise as they are accessible in static methods in a class local to the same function. Fixes PR6769.
llvm-svn: 101756
|
| #
8345a70c |
| 17-Apr-2010 |
Anders Carlsson <[email protected]> |
Fix an assert when assigning a boolean value to a bitfield of type _Bool.
llvm-svn: 101678
|
| #
67aba79b |
| 15-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: (Reapply 101222, with fixes) Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself. - Sadly, this doesn't seem
IRgen: (Reapply 101222, with fixes) Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself. - Sadly, this doesn't seem to give any .ll size win so far. It is possible to make this routine significantly smarter & avoid various shifting, masking, and zext/sext, but I'm not really convinced it is worth it. It is tricky, and this is really instcombine's job.
- No intended functionality change; the test case is just to increase coverage & serves as a demo file, it worked before this commit.
The new fixes from r101222 are:
1. The shift to the target position needs to occur after the value is extended to the correct size. This broke Clang bootstrap, among other things no doubt.
2. Swap the order of arguments to OR, to get a tad more constant folding.
llvm-svn: 101339
show more ...
|
| #
91ea6ac3 |
| 14-Apr-2010 |
Daniel Dunbar <[email protected]> |
Speculatively revert "IRgen: Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.", I think it might be breaking boo
Speculatively revert "IRgen: Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.", I think it might be breaking bootstrap.
llvm-svn: 101235
show more ...
|