Chris Lattner
219e9af693
more cleanups for MemoryDependenceAnalysis::removeInstruction,
...
no functionality change.
llvm-svn: 60219
2008-11-28 22:28:27 +00:00
Chris Lattner
7b984beb45
random cleanups, no functionality change.
...
llvm-svn: 60218
2008-11-28 22:04:47 +00:00
Chris Lattner
ef04ddf87c
Run verifyRemoved from removeInstruction when -debug is specified.
...
This shows the root problem behind PR3141.
llvm-svn: 60216
2008-11-28 21:45:17 +00:00
Chris Lattner
cc3a3c0c98
rename "ping" to "verifyRemoved". I don't know why 'ping' what chosen,
...
but it doesn't make any sense at all.
Also make the method const, private, and fit in 80 cols while we're at it.
llvm-svn: 60215
2008-11-28 21:42:09 +00:00
Chris Lattner
d7ea2954a7
simplify some code, remove escaped newline.
...
llvm-svn: 60213
2008-11-28 21:29:52 +00:00
Chris Lattner
ad6c575105
remove mysterious escaped newlines.
...
llvm-svn: 60211
2008-11-28 21:16:44 +00:00
Chris Lattner
a854ab3760
don't call MergeBasicBlockIntoOnlyPred on a block whose only
...
predecessor is itself. This doesn't make sense, and this is
a dead infinite loop anyway.
llvm-svn: 60210
2008-11-28 19:54:49 +00:00
Duncan Sands
850748f5de
Add include files needed when building with
...
gcc 4.4 (due to use of sprintf).
llvm-svn: 60209
2008-11-28 10:20:03 +00:00
Duncan Sands
7fd4ea5847
Fix build with gcc-4.4: it doesn't like PICStyle
...
being both a namespace and a variable name.
llvm-svn: 60208
2008-11-28 09:29:37 +00:00
Chris Lattner
1b70ed5140
rewrite RecursivelyDeleteTriviallyDeadInstructions to use a more efficient
...
formulation that doesn't require set lookups or scanning a set.
llvm-svn: 60203
2008-11-28 01:20:46 +00:00
Chris Lattner
b9af105cff
remove some weirdness that came from the LSR code that has
...
nothing to do with dead instruction elimination. No tests in
dejagnu depend on this, so I don't know what it was needed for.
llvm-svn: 60202
2008-11-28 00:58:15 +00:00
Chris Lattner
69e0a27f94
rewrite a big chunk of how DSE does recursive dead operand
...
elimination to use more modern infrastructure. Also do a bunch
of small cleanups.
llvm-svn: 60201
2008-11-28 00:27:14 +00:00
Chris Lattner
4486266c9d
delete ErasePossiblyDeadInstructionTree, replacing uses of it with
...
RecursivelyDeleteTriviallyDeadInstructions.
llvm-svn: 60196
2008-11-27 23:25:44 +00:00
Chris Lattner
8231357a92
Simplify LoopStrengthReduce::DeleteTriviallyDeadInstructions by
...
making it use RecursivelyDeleteTriviallyDeadInstructions to do
the heavy lifting.
llvm-svn: 60195
2008-11-27 23:23:35 +00:00
Chris Lattner
53ebef9cbb
enhance RecursivelyDeleteTriviallyDeadInstructions to make
...
PHIs dead if they are single-value.
llvm-svn: 60194
2008-11-27 23:18:11 +00:00
Chris Lattner
8b382de4e0
Enhance RecursivelyDeleteTriviallyDeadInstructions to optionally
...
return a list of deleted instructions.
llvm-svn: 60193
2008-11-27 23:14:34 +00:00
Chris Lattner
b2bd29b39b
use continue to reduce indentation
...
llvm-svn: 60192
2008-11-27 23:00:20 +00:00
Chris Lattner
b374a0158a
remove doConstantPropagation and dceInstruction, they are just
...
wrappers around the interesting code and use an obscure iterator
abstraction that dates back many many years.
Move EraseDeadInstructions to Transforms/Utils and name it
RecursivelyDeleteTriviallyDeadInstructions.
llvm-svn: 60191
2008-11-27 22:57:53 +00:00
Chris Lattner
740eb92968
simplify code.
...
llvm-svn: 60190
2008-11-27 22:56:14 +00:00
Chris Lattner
d3f7621acd
simplify this logic.
...
llvm-svn: 60189
2008-11-27 22:46:09 +00:00
Nick Lewycky
f5d5d6026f
Also update the README.
...
llvm-svn: 60188
2008-11-27 22:41:45 +00:00
Nick Lewycky
40db216722
Chris prefers icmp/select over udiv!
...
llvm-svn: 60187
2008-11-27 22:41:10 +00:00
Nick Lewycky
0064d6236e
Add a synthetic missed optimization.
...
llvm-svn: 60186
2008-11-27 22:12:22 +00:00
Nick Lewycky
882443585d
Add a couple of missed optimizations on integer vectors. Multiply and divide
...
by 1, as well as multiply by -1.
llvm-svn: 60182
2008-11-27 20:21:08 +00:00
Chris Lattner
8c052366b3
defensive patch: if CGP is merging a block with the entry block, make sure
...
it ends up being the entry block.
llvm-svn: 60180
2008-11-27 19:29:14 +00:00
Chris Lattner
73b251b3bf
Fix PR3138: if we merge the entry block into another block, make sure to
...
move the other block back up into the entry position!
llvm-svn: 60179
2008-11-27 19:25:19 +00:00
Nick Lewycky
847a671436
Silence a warning.
...
Despite changing the order of evaluation, this doesn't actually change the
meaning of the statement.
llvm-svn: 60177
2008-11-27 17:29:52 +00:00
Nuno Lopes
1e97b6c181
fix build on some machines. thanks buildbot
...
llvm-svn: 60175
2008-11-27 16:42:44 +00:00
Nuno Lopes
e3f6758e3c
fix my previous commit r60064: compare strings instead of pointers
...
llvm-svn: 60174
2008-11-27 16:37:02 +00:00
Chris Lattner
2959f6224e
switch InstCombine::visitLoadInst to use
...
FindAvailableLoadedValue
llvm-svn: 60169
2008-11-27 08:56:30 +00:00
Chris Lattner
dd755c74d6
improve const correctness.
...
llvm-svn: 60168
2008-11-27 08:39:18 +00:00
Chris Lattner
0bd942ecb5
enhance FindAvailableLoadedValue to make use of AliasAnalysis
...
if it has it.
llvm-svn: 60167
2008-11-27 08:18:12 +00:00
Chris Lattner
577096bcaa
move FindAvailableLoadedValue from JumpThreading to Transforms/Utils.
...
llvm-svn: 60166
2008-11-27 08:10:05 +00:00
Bill Wendling
cbebccf936
Get rid of bogus "control may reach end of non-void function ‘...’ being
...
inlined" message.
llvm-svn: 60165
2008-11-27 08:00:12 +00:00
Chris Lattner
cab07ddaeb
simplify this code a bit.
...
llvm-svn: 60164
2008-11-27 07:54:38 +00:00
Chris Lattner
e1ed3a2962
Use the new MergeBasicBlockIntoOnlyPred function.
...
llvm-svn: 60163
2008-11-27 07:54:12 +00:00
Chris Lattner
bb86dff3fe
move MergeBasicBlockIntoOnlyPred to Transforms/Utils.
...
llvm-svn: 60162
2008-11-27 07:43:12 +00:00
Chris Lattner
98f62336b7
rename ThreadBlock to ProcessBlock, since it does other things than
...
just simple threading.
llvm-svn: 60157
2008-11-27 07:20:04 +00:00
Bill Wendling
4a6eedb51d
Comment out code that isn't entirely correct.
...
llvm-svn: 60156
2008-11-27 07:18:35 +00:00
Sanjiv Gupta
0638ca3697
Removing redundant semicolons. No functionality change.
...
llvm-svn: 60149
2008-11-27 05:58:04 +00:00
Chris Lattner
532458b89f
Make jump threading substantially more powerful, in the following ways:
...
1. Make it fold blocks separated by an unconditional branch. This enables
jump threading to see a broader scope.
2. Make jump threading able to eliminate locally redundant loads when they
feed the branch condition of a block. This frequently occurs due to
reg2mem running.
3. Make jump threading able to eliminate *partially redundant* loads when
they feed the branch condition of a block. This is common in code with
lots of loads and stores like C++ code and 255.vortex.
This implements thread-loads.ll and rdar://6402033.
Per the fixme's, several pieces of this should be moved into Transforms/Utils.
llvm-svn: 60148
2008-11-27 05:07:53 +00:00
Evan Cheng
7db1955286
Eliminate a compile time warning.
...
llvm-svn: 60145
2008-11-27 02:29:25 +00:00
Evan Cheng
ee5e950c25
Avoid inserting noop's in the middle of a loop.
...
llvm-svn: 60141
2008-11-27 01:16:00 +00:00
Evan Cheng
f18016728c
On x86 favors folding short immediate into some arithmetic operations (e.g. add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size.
...
e.g.
movl 4(%esp), %eax
addl $4, %eax
is 2 bytes shorter than
movl $4, %eax
addl 4(%esp), %eax
llvm-svn: 60139
2008-11-27 00:49:46 +00:00
Dale Johannesen
0d6dd4bdb9
Add a missing case in visitADD.
...
llvm-svn: 60137
2008-11-27 00:43:21 +00:00
Bill Wendling
c60a07dbf2
Generate something sensible for an [SU]ADDO op when the overflow/carry flag is
...
the conditional for the BRCOND statement. For instance, it will generate:
addl %eax, %ecx
jo LOF
instead of
addl %eax, %ecx
; About 10 instructions to compare the signs of LHS, RHS, and sum.
jl LOF
llvm-svn: 60123
2008-11-26 22:37:40 +00:00
Chris Lattner
d01522d33a
Turn on my codegen prepare heuristic by default. It doesn't affect
...
performance in most cases on the Grawp tester, but does speed some
things up (like shootout/hash by 15%). This also doesn't impact
compile time in a noticable way on the Grawp tester.
It also, of course, gets the testcase it was designed for right :)
llvm-svn: 60120
2008-11-26 22:16:44 +00:00
Evan Cheng
c18e38d19f
Cosmetic.
...
llvm-svn: 60110
2008-11-26 18:00:00 +00:00
Sanjiv Gupta
91da4472f4
Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.
...
llvm-svn: 60102
2008-11-26 11:19:00 +00:00
Sanjiv Gupta
1fa97cc7dd
Emit declaration for globals and externs.
...
Custom lower AND, OR, XOR bitwise operations.
llvm-svn: 60098
2008-11-26 10:53:50 +00:00