| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
whether a callee to be inlined is a leaf.
llvm-svn: 66588
|
| |
|
|
|
|
|
| |
another instcombine pass if we weren't going to make
one without debug info.
llvm-svn: 66576
|
| |
|
|
| |
llvm-svn: 66554
|
| |
|
|
|
|
|
| |
Also fixed a punctuation error in the header comment.
This fixes PR3775.
llvm-svn: 66542
|
| |
|
|
|
|
| |
correctness). Do so even if the callee has dynamic alloca and the caller doesn't.
llvm-svn: 66539
|
| |
|
|
| |
llvm-svn: 66490
|
| |
|
|
|
|
|
| |
if needed. This simplifies the code a little, and is needed for an
upcoming refactoring.
llvm-svn: 66479
|
| |
|
|
| |
llvm-svn: 66471
|
| |
|
|
|
|
| |
where memory access types are needed.
llvm-svn: 66470
|
| |
|
|
| |
llvm-svn: 66469
|
| |
|
|
| |
llvm-svn: 66467
|
| |
|
|
|
|
| |
Use VoidTy instead, to be properly conservative.
llvm-svn: 66463
|
| |
|
|
|
|
| |
of an instruction into a helper function.
llvm-svn: 66460
|
| |
|
|
| |
llvm-svn: 66454
|
| |
|
|
|
|
| |
have to be done twice.
llvm-svn: 66449
|
| |
|
|
| |
llvm-svn: 66446
|
| |
|
|
|
|
| |
before it does any processing.
llvm-svn: 66443
|
| |
|
|
|
|
|
| |
be needed now that these intrinsics are marked
as not accessing memory.
llvm-svn: 66420
|
| |
|
|
|
|
| |
hopefully no functionality change.
llvm-svn: 66398
|
| |
|
|
| |
llvm-svn: 66384
|
| |
|
|
| |
llvm-svn: 66381
|
| |
|
|
| |
llvm-svn: 66369
|
| |
|
|
|
|
| |
a vector type instead of into an integer type.
llvm-svn: 66368
|
| |
|
|
|
|
|
| |
memcpy/memmove'd into or out of. This fixes a serious
perf issue that Nate ran into.
llvm-svn: 66366
|
| |
|
|
|
|
| |
instead of a Constant*, which is what the clients of it really want.
llvm-svn: 66364
|
| |
|
|
| |
llvm-svn: 66362
|
| |
|
|
|
|
|
| |
parent between MemCpyInst and MemMoveInst, simplify some code to
use it.
llvm-svn: 66361
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"boolify" pointers, generating really awful code because getting the pointer
value requires a load itself. Before:
_foo:
movb $1, _X.b
ret
_get:
xorl %ecx, %ecx
movb _X.b, %al
testb %al, %al
movl $_Y, %eax
cmove %ecx, %eax
ret
With the xform disabled:
_foo:
movl $_Y, _X
ret
_get:
movl _X, %eax
ret
llvm-svn: 66351
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.
llvm-svn: 66339
|
| |
|
|
|
|
| |
an optimization.
llvm-svn: 66288
|
| |
|
|
|
|
| |
Lennart Augustsson!
llvm-svn: 66272
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
to find a tiny mouse hole to squeeze through, it struck
me that globals without a name can be considered internal
since they can't be referenced from outside the current
module. This patch makes GlobalOpt give them internal
linkage. Also done for aliases even though they always
have names, since in my opinion anonymous aliases should
be allowed for consistency with global variables and
functions. So if that happens one day, this code is ready!
llvm-svn: 66267
|
| |
|
|
|
|
| |
debug info.
llvm-svn: 66262
|
| |
|
|
|
|
| |
intrinsics.
llvm-svn: 66255
|
| |
|
|
| |
llvm-svn: 66252
|
| |
|
|
|
|
|
| |
their main routines. This makes the tools print their argc/argv
commands if they crash.
llvm-svn: 66248
|
| |
|
|
| |
llvm-svn: 66245
|
| |
|
|
| |
llvm-svn: 66244
|
| |
|
|
|
|
| |
This is needed so debug info doesn't change codegen.
llvm-svn: 66235
|
| |
|
|
| |
llvm-svn: 66233
|
| |
|
|
|
|
| |
We are still not out of woods yet.
llvm-svn: 66232
|
| |
|
|
| |
llvm-svn: 66227
|
| |
|
|
|
|
| |
debug intrinsics correctly.
llvm-svn: 66225
|
| |
|
|
| |
llvm-svn: 66224
|
| |
|
|
| |
llvm-svn: 66223
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If non constant local GV named A is used by a constant local GV named B (e.g. llvm.dbg.variable) and B is not used by anyone else then eliminate A as well as B.
In other words, debug info should not interfere in removal of unused GV.
--This life, and those below, will be ignored--
M test/Transforms/GlobalOpt/2009-03-03-dbg.ll
M lib/Transforms/IPO/GlobalOpt.cpp
llvm-svn: 66167
|
| |
|
|
| |
llvm-svn: 66140
|
| |
|
|
|
|
|
| |
codegen. I convinced myself it was OK to skip all
pointer bitcasts here too.
llvm-svn: 66122
|
| |
|
|
| |
llvm-svn: 66115
|
| |
|
|
|
|
| |
had 2 uses instead of 1.
llvm-svn: 66112
|