- Apr 02, 2010
-
-
Mon P Wang authored
llvm-svn: 100200
-
Mon P Wang authored
llvm-svn: 100199
-
Daniel Dunbar authored
llvm-svn: 100197
-
Douglas Gregor authored
poor (and wrong) approximation of the actual rules governing when to build a copy and when it can be elided. The correct implementation is actually simpler than the approximation. When we only enumerate constructors as part of initialization (e.g., for direct initialization or when we're copying from a class type or one of its derived classes), we don't create a copy. When we enumerate all conversion functions, we do create a copy. Before, we created some extra copies and missed some others. The new test copy-initialization.cpp shows a case where we missed creating a (required, non-elidable) copy as part of a user-defined conversion, which resulted in a miscompile. This commit also fixes PR6757, where the missing copy made us reject well-formed code in the ternary operator. This commit also cleans up our handling of copy elision in the case where we create an extra copy of a temporary object, which became necessary now that we produce the right copies. The code that seeks to find the temporary object being copied has moved into Expr::getTemporaryObject(); it used to have two different not-quite-the-same implementations, one in Sema and one in CodeGen. Note that we still do not attempt to perform the named return value optimization, so we miss copy elisions for return values and throw expressions. llvm-svn: 100196
-
Mon P Wang authored
Reapply patch for adding support for address spaces and added a isVolatile field to memcpy, memmove, and memset. llvm-svn: 100193
-
Mon P Wang authored
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) llvm-svn: 100191
-
Daniel Dunbar authored
CG/NeXT: Assert some invariants on an ivar's containing decl context that I am about to refactor based on, following some testing. llvm-svn: 100188
-
Dan Gohman authored
llvm-svn: 100187
-
Dan Gohman authored
it can't currently observe such changes automatically. llvm-svn: 100186
-
Torok Edwin authored
Need to start from (char*)(Slab+1), and not from (char*)Slab+1. This fixes crashes in Win64 debug mode. Thanks to Nicolas Capens! llvm-svn: 100184
-
Duncan Sands authored
llvm-svn: 100183
-
Anders Carlsson authored
If a constructor is a dependent context, just set the base and member initializers as they are written. Fixes a bug where we wouldn't show initialization order warnings when instantiating. llvm-svn: 100180
-
Anders Carlsson authored
llvm-svn: 100179
-
Bob Wilson authored
llvm-svn: 100177
-
Eric Christopher authored
llvm-svn: 100176
-
Anders Carlsson authored
llvm-svn: 100175
-
Anders Carlsson authored
llvm-svn: 100174
-
Anders Carlsson authored
llvm-svn: 100173
-
Dan Gohman authored
in particular, they end up aligning strings at 16-byte boundaries, and there's no way for GlobalOpt to check OptForSize. llvm-svn: 100172
-
Evan Cheng authored
After trivial coalescing, the MI being visited may have become a copy. Avoid adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted. rdar://7819990 llvm-svn: 100170
-
Chandler Carruth authored
PartialDiagnostic objects, and hoisting the stream operator for QualType into Type.h with the operator for the normal DiagnosticBuilder. Also remove the no longer needed friend declaration for the DeclarationName stream operator. llvm-svn: 100169
-
Dale Johannesen authored
folder to be tolerant of debug info following the branch(es) at the end of a block. llvm-svn: 100168
-
Chandler Carruth authored
llvm-svn: 100167
-
Dan Gohman authored
unaligned loads into aligned loads. llvm-svn: 100166
-
Dan Gohman authored
llvm-svn: 100165
-
Bob Wilson authored
llvm-svn: 100164
-
Sean Callanan authored
on Mac OS X to use @rpath rather than an absolute path. Also allowed the version to be set using an environment variable. llvm-svn: 100163
-
Dan Gohman authored
This fixes test/Transforms/GlobalOpt/gv-align.ll. llvm-svn: 100161
-
Dan Gohman authored
llvm-svn: 100160
-
John McCall authored
llvm-svn: 100159
-
Bob Wilson authored
This is more efficient than adding them to the worklist and then ignoring them. llvm-svn: 100158
-
Gabor Greif authored
might interfere with merges to other branches (as Dan pointed out) llvm-svn: 100157
-
Dan Gohman authored
likely not a bitcode file at all, rather than being a bitcode file which is truncated. Check for this case and issue a more relevant error message. llvm-svn: 100156
-
John McCall authored
the standard. llvm-svn: 100155
-
Ted Kremenek authored
llvm-svn: 100153
-
Bob Wilson authored
llvm-svn: 100148
-
Bob Wilson authored
llvm-svn: 100147
-
Eric Christopher authored
llvm-svn: 100146
-
Devang Patel authored
llvm-svn: 100145
-
Douglas Gregor authored
llvm-svn: 100144
-