- May 23, 2010
-
-
Benjamin Kramer authored
llvm-svn: 104473
-
Benjamin Kramer authored
This works around a crash where malloc reused the memory of an erased BB for a new BB leaving old cleanup information pointing at the new block. llvm-svn: 104472
-
John McCall authored
expressions. Essentially, GC breaks a certain form of the return-value optimization. llvm-svn: 104454
-
- May 22, 2010
-
-
Anders Carlsson authored
llvm-svn: 104447
-
Anders Carlsson authored
llvm-svn: 104446
-
Douglas Gregor authored
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
-
John McCall authored
critical for ObjC++ correctness; hard to test independently of various required Sema changes, though. llvm-svn: 104422
-
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
-