- May 22, 2010
-
-
Anders Carlsson authored
llvm-svn: 104390
-
- May 21, 2010
-
-
Anders Carlsson authored
Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle setting null data member pointers correctly. Fixes PR7139. llvm-svn: 104387
-
Douglas Gregor authored
emitted the increment expression. Fixes PR7189. If someone knows how to write a useful test for this, I'd be grateful. llvm-svn: 104335
-
Douglas Gregor authored
not make copies non-POD arguments or arguments passed by reference: just copy the pointers directly. This eliminates another source of the dreaded memcpy-of-non-PODs. Fixes PR7188. llvm-svn: 104327
-
Chandler Carruth authored
llvm-svn: 104314
-
John McCall authored
'self' variable arising from uses of the 'super' keyword. Also reorganize some code so that BlockInfo (now CGBlockInfo) can be opaque outside of CGBlocks.cpp. Fixes rdar://problem/8010633. llvm-svn: 104312
-
John McCall authored
class initialization, drill down through an arbitrary number of anonymous records. llvm-svn: 104310
-
- May 20, 2010
-
-
Fariborz Jahanian authored
in Objective-C++ mode. llvm-svn: 104281
-
Fariborz Jahanian authored
be turned into a setter call (fixes radar 8008649). llvm-svn: 104235
-
Douglas Gregor authored
llvm-svn: 104230
-
Douglas Gregor authored
llvm-svn: 104229
-
Douglas Gregor authored
particular issue was the cause of the Boost.Interprocess failures, and in general will lead to horrendous, hard-to-diagnose miscompiles. The assertion itself has survives self-host and a full Boost build, so we are close to eradicating this problem in C++. Note that the assertion is *not* turned on for Objective-C++, where we still have problems with introducing memcpy's of non-POD class types. That part of the assertion will go away as soon as we fix the known issues in Objective-C++. llvm-svn: 104227
-
David Chisnall authored
Fix my inability to spell 'continue' and a case where message sends returning non-pointer-sized things were generating invalid IR inside @try blocks. llvm-svn: 104222
-
Douglas Gregor authored
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
-
Douglas Gregor authored
class type (that uses a return slot), pass the return slot to the callee directly rather than allocating new storage and trying to copy the object. This appears to have been the cause of the remaining two Boost.Interprocess failures. llvm-svn: 104215
-
John McCall authored
(the codegen works here, too, but that's annoying to test without execution) llvm-svn: 104202
-
- May 19, 2010
-
-
Benjamin Kramer authored
llvm-svn: 104118
-
- May 18, 2010
-
-
Douglas Gregor authored
llvm-svn: 104026
-
Anders Carlsson authored
Correctly initialize bases with member pointers. This should fix PR6441 but that test case is a bit weird and I'd like to investigate further before closing that bug. llvm-svn: 104025
-
Anders Carlsson authored
llvm-svn: 104013
-
Anders Carlsson authored
Start laying out bases as individual fields. We still use ugly i8 arrays but this is a step in the right direction. llvm-svn: 104012
-
Anders Carlsson authored
llvm-svn: 104011
-
- May 17, 2010
-
-
John McCall authored
out. The remaining ones are okay. llvm-svn: 103973
-
Chandler Carruth authored
llvm-svn: 103972
-
John McCall authored
Fixes rdar://problem/7992749 llvm-svn: 103965
-
Daniel Dunbar authored
llvm-svn: 103945
-
Daniel Dunbar authored
- Check bases as part of isEmptyRecord(). - C++ record fields are never empty in the Itanium ABI. llvm-svn: 103944
-
Douglas Gregor authored
function does not return. Thanks to Eli for pointing out this corner case. llvm-svn: 103941
-
David Chisnall authored
Pick the correct personality function based on the language. This prevents link failures when C/ObjC code uses __attribute__((cleanup())) (previously this was inserting references to two libstc++ symbols; the personality function and the __terminate() function). This is still probably wrong for Objective-C++ and adds a couple of lines in CGException that should probably be in the CGObjCRuntime subclass. The personality function is now only looked up in one place in CGException though, so this should be easier to fix in the future. llvm-svn: 103938
-
- May 16, 2010
-
-
Douglas Gregor authored
__cxa_guard_abort along the exceptional edge into (in effect) a nested "try" that rethrows after aborting. Fixes PR7144 and the remaining Boost.ProgramOptions failures, along with the regressions that r103880 caused. The crucial difference between this and r103880 is that we now follow LLVM's little dance with the llvm.eh.exception and llvm.eh.selector calls, then use _Unwind_Resume_or_Rethrow to rethrow. llvm-svn: 103892
-
Douglas Gregor authored
because it's causing strange linker errors. Unfixes PR7144. llvm-svn: 103890
-
Fariborz Jahanian authored
llvm-svn: 103889
-
Fariborz Jahanian authored
in Objective-c++ mode. Fixes radar 7986354. llvm-svn: 103887
-
- May 15, 2010
-
-
Douglas Gregor authored
__cxa_guard_abort along the exceptional edge into (in effect) a nested "try" that rethrows after aborting. Fixes PR7144 and the remaining Boost.ProgramOptions failures. llvm-svn: 103880
-
John McCall authored
llvm-svn: 103875
-
Douglas Gregor authored
destroy the variable along the exceptional edge; it's only during normal execution that we avoid destroying this variable. llvm-svn: 103872
-
John McCall authored
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
-
Douglas Gregor authored
return statements. We perform NRVO only when all of the return statements in the function return the same variable. Fixes some link failures in Boost.Interprocess (which is relying on NRVO), and probably improves performance for some C++ applications. llvm-svn: 103867
-
Douglas Gregor authored
return value optimization. Sema marks return statements with their NRVO candidates (which may or may not end up using the NRVO), then, at the end of a function body, computes and marks those variables that can be allocated into the return slot. I've checked this locally with some debugging statements (not committed), but there won't be any tests until CodeGen comes along. llvm-svn: 103865
-
Douglas Gregor authored
"return" statement and mark the corresponding CXXConstructExpr as elidable. Teach CodeGen that eliding a temporary is different from eliding an object construction. This is just a baby step toward NRVO. llvm-svn: 103849
-