| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 100200
|
| |
|
|
| |
llvm-svn: 100199
|
| |
|
|
|
|
| |
type.
llvm-svn: 100197
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
field to memcpy, memmove, and memset.
llvm-svn: 100193
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
am about to refactor based on, following some testing.
llvm-svn: 100188
|
| |
|
|
| |
llvm-svn: 100187
|
| |
|
|
|
|
| |
it can't currently observe such changes automatically.
llvm-svn: 100186
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 100183
|
| |
|
|
|
|
| |
initializers as they are written. Fixes a bug where we wouldn't show initialization order warnings when instantiating.
llvm-svn: 100180
|
| |
|
|
| |
llvm-svn: 100179
|
| |
|
|
| |
llvm-svn: 100177
|
| |
|
|
| |
llvm-svn: 100176
|
| |
|
|
| |
llvm-svn: 100175
|
| |
|
|
| |
llvm-svn: 100174
|
| |
|
|
| |
llvm-svn: 100173
|
| |
|
|
|
|
|
| |
in particular, they end up aligning strings at 16-byte boundaries, and
there's no way for GlobalOpt to check OptForSize.
llvm-svn: 100172
|
| |
|
|
|
|
|
|
| |
adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted.
rdar://7819990
llvm-svn: 100170
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
folder to be tolerant of debug info following the
branch(es) at the end of a block.
llvm-svn: 100168
|
| |
|
|
| |
llvm-svn: 100167
|
| |
|
|
|
|
| |
unaligned loads into aligned loads.
llvm-svn: 100166
|
| |
|
|
| |
llvm-svn: 100165
|
| |
|
|
| |
llvm-svn: 100164
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
This fixes test/Transforms/GlobalOpt/gv-align.ll.
llvm-svn: 100161
|
| |
|
|
| |
llvm-svn: 100160
|
| |
|
|
| |
llvm-svn: 100159
|
| |
|
|
|
|
| |
This is more efficient than adding them to the worklist and then ignoring them.
llvm-svn: 100158
|
| |
|
|
|
|
| |
might interfere with merges to other branches (as Dan pointed out)
llvm-svn: 100157
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
the standard.
llvm-svn: 100155
|
| |
|
|
| |
llvm-svn: 100153
|
| |
|
|
| |
llvm-svn: 100148
|
| |
|
|
| |
llvm-svn: 100147
|
| |
|
|
| |
llvm-svn: 100146
|
| |
|
|
| |
llvm-svn: 100145
|
| |
|
|
| |
llvm-svn: 100144
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-print-before=<Pass Name>
Dump IR before running pass <Pass Name>.
-print-before-all
Dump IR before running each pass.
-print-after-all
Dump IR after running each pass.
These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.
To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.
llvm-svn: 100143
|
| |
|
|
| |
llvm-svn: 100137
|
| |
|
|
|
|
| |
label due to one or other reason.
llvm-svn: 100134
|
| |
|
|
|
|
| |
all together.
llvm-svn: 100133
|
| |
|
|
| |
llvm-svn: 100132
|
| |
|
|
| |
llvm-svn: 100131
|
| |
|
|
|
|
| |
one place. This removes the template function added in svn 94690.
llvm-svn: 100130
|
| |
|
|
|
|
| |
take'id' or return 'id' in their type. Fixes radar 7814131.
llvm-svn: 100129
|
| |
|
|
|
|
| |
blow out the stack for really big functions. Start by fixing an easy case.
llvm-svn: 100126
|
| |
|
|
|
|
|
|
|
|
|
| |
an object or function. Our previous checking was too lax, and ended up
allowing missing or extraneous address-of operators, among other
evils. The new checking provides better diagnostics and adheres more
closely to the standard.
Fixes PR6563 and PR6749.
llvm-svn: 100125
|