- May 27, 2010
-
-
Daniel Dunbar authored
llvm-svn: 104795
-
John McCall authored
llvm-svn: 104778
-
- May 26, 2010
-
-
Fariborz Jahanian authored
variable in a local function. Fixes pr7101. llvm-svn: 104743
-
Charles Davis authored
change. llvm-svn: 104715
-
Douglas Gregor authored
vtables, VTTs, and construction vtables. Fixes PR7201. llvm-svn: 104675
-
- May 25, 2010
-
-
Charles Davis authored
This class only supports name mangling (which is apparently used during C/ObjC codegen). For now only the Itanium C++ ABI is supported. Patches to add a second C++ ABI are forthcoming. llvm-svn: 104630
-
Douglas Gregor authored
llvm-svn: 104613
-
Douglas Gregor authored
variables within blocks. We loosely follow GCC's mangling, but since these are always internal symbols the names don't really matter. I intend to revisit block mangling later, because GCC's mangling is rather verbose. <rdar://problem/8015719>. llvm-svn: 104610
-
John McCall authored
variables should have that linkage. Otherwise, its static local variables should have internal linkage. To avoid computing this excessively, set a function's linkage before we emit code for it. Previously we were assigning weak linkage to the static variables of static inline functions in C++, with predictably terrible results. This fixes that and also gives better linkage than 'weak' when merging is required. llvm-svn: 104581
-
- 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
-