Owen Anderson
e680ac8dcb
Revert r52459, which was causing an infinite loop or massive slowdown on MultiSource/Applications/SPASS, and possibly others as well.
...
Please reapply once this is fixed.
llvm-svn: 52465
2008-06-18 17:32:16 +00:00
Dan Gohman
606a60ad68
Move SCEVExpander::visitAddExpr out-of-line.
...
llvm-svn: 52464
2008-06-18 16:37:11 +00:00
Dan Gohman
82f9df016e
Move LSR's private isZero function to a public SCEV member
...
function, and make use of it in several places.
llvm-svn: 52463
2008-06-18 16:23:07 +00:00
Gabor Greif
14dc959397
fix validator warning
...
llvm-svn: 52461
2008-06-18 14:05:31 +00:00
Gabor Greif
41d941a446
prettify, no semantic changes
...
llvm-svn: 52460
2008-06-18 13:44:57 +00:00
Matthijs Kooijman
b7e2818227
Rewrite the DeadArgumentElimination pass, to use a more explicit tracking of
...
dependencies between return values and/or arguments. Also make the handling of
arguments and return values the same.
The pass now looks properly inside returned structs, but only at the first
level (ie, not inside nested structs).
Also add a testcase for testing various variations of (multiple) dead rerturn
values.
llvm-svn: 52459
2008-06-18 11:12:53 +00:00
Matthijs Kooijman
8177832230
Reapply r52397 (make IPConstProp promote returned arguments), but fixed this
...
time. Sorry for the trouble!
This time, also add a testcase, which I should have done in the first place...
llvm-svn: 52455
2008-06-18 08:30:37 +00:00
Evan Cheng
0570953e28
XOR32rr, etc. are not AsCheapAsMove, but MOV32ri, etc. are.
...
llvm-svn: 52454
2008-06-18 08:13:07 +00:00
Matthijs Kooijman
bb59138fa6
Reapply r52396, it was unrelated to the breakage (that was caused by r52397, my
...
commit after this).
llvm-svn: 52453
2008-06-18 08:09:27 +00:00
Evan Cheng
ad0a4a31f8
Complete support for two-address pass rematerialization. Now *almost* always a win.
...
llvm-svn: 52452
2008-06-18 07:49:14 +00:00
Evan Cheng
e447be0532
Add MachineRegisterInfo::use_empty.
...
llvm-svn: 52451
2008-06-18 07:47:55 +00:00
Evan Cheng
cba32609d2
Cosmetic.
...
llvm-svn: 52450
2008-06-18 07:47:28 +00:00
Bill Wendling
c7a2b72a42
If compiling for PPC on an i386 box, the LTO wouldn't get the altivec (and
...
other) feature information. The workaround is inelegant and could be cleaned up
if this information were available some other way (say, in the IR).
llvm-svn: 52447
2008-06-18 06:35:30 +00:00
Chris Lattner
93da79f7a1
implement some simple bswap optimizations, rdar://5992453
...
llvm-svn: 52442
2008-06-18 04:33:20 +00:00
Chris Lattner
2a22e66e47
temporarily revert this testcase since its patch was reverted.
...
llvm-svn: 52441
2008-06-18 04:03:23 +00:00
Chris Lattner
7e403da191
make truncate/sext elimination capable of changing phi's. This
...
implements rdar://6013816 and the testcase in Transforms/InstCombine/sext-misc.ll.
llvm-svn: 52440
2008-06-18 04:00:49 +00:00
Evan Cheng
deb754898b
Unbreak DECLARE isel in pic mode.
...
llvm-svn: 52439
2008-06-18 02:48:27 +00:00
Devang Patel
8f157a3670
Preserve dominance frontier while trivially unswitching loop.
...
llvm-svn: 52438
2008-06-18 02:16:38 +00:00
Devang Patel
960d6ae6d1
Check empty dominance frontier.
...
llvm-svn: 52437
2008-06-18 02:12:09 +00:00
Dan Gohman
c190d65454
Auto-upgrade code for multiple-value return statements. This code
...
isn't actually called yet.
llvm-svn: 52435
2008-06-17 23:38:43 +00:00
Dan Gohman
d9d529d7ed
In InsertValueInst's copy ctor, actually copy the operands.
...
llvm-svn: 52434
2008-06-17 23:25:49 +00:00
Owen Anderson
c1ac0c1c41
We don't want to find dependencies within the same block in this case. It leads to incorrect results because
...
we're detecting something at or after the call we're querying on.
llvm-svn: 52433
2008-06-17 22:27:06 +00:00
Dan Gohman
24d9c8400f
Implement the ExtractValueInst::getIndexedType that accepts one
...
index value.
llvm-svn: 52432
2008-06-17 21:07:55 +00:00
Evan Cheng
10ead77866
Live-through live interval is [mbb start, mbb end+1].
...
llvm-svn: 52431
2008-06-17 20:13:36 +00:00
Evan Cheng
3dc2cfe366
When extending a liveinterval by commuting, don't throw away the live ranges that are not affected.
...
llvm-svn: 52430
2008-06-17 20:11:16 +00:00
Ted Kremenek
a9f1f1db52
Consistently set "Buckets[NumBuckets] = reinterpret_cast<void*>(-1)" throughout FoldingSet.cpp.
...
llvm-svn: 52425
2008-06-17 19:12:43 +00:00
Owen Anderson
79605db969
Add an insertBefore method for attaching previously unattached instructions,
...
such as those created by clone(), to a basic block.
llvm-svn: 52424
2008-06-17 18:29:27 +00:00
Owen Anderson
609a53ac86
Fix use of placement new to actually use an address.
...
llvm-svn: 52423
2008-06-17 18:07:43 +00:00
Evan Cheng
acd28b95da
It's not safe to remove SUBREG_TO_REG that looks like identity copies, e.g. movl %eax, %eax on x86-64 actually does a zero-extend.
...
llvm-svn: 52421
2008-06-17 17:59:16 +00:00
Anton Korobeynikov
6a779ad6fa
Add one more 'magic' define :)
...
llvm-svn: 52420
2008-06-17 17:57:43 +00:00
Anton Korobeynikov
cdfbb1eae5
Unbreak non-PPC builds
...
llvm-svn: 52419
2008-06-17 17:38:31 +00:00
Anton Korobeynikov
5b04f6d658
Provide generic hooks for icache invalidation. Add PPC implementation.
...
Patch by Gary Benson!
llvm-svn: 52418
2008-06-17 17:30:05 +00:00
Chris Lattner
4be2e72cc5
revert recent patch which is causing widespread breakage.
...
llvm-svn: 52415
2008-06-17 17:06:43 +00:00
Evan Cheng
d43a533365
Don't forget to initialize SymbolSearchingDisabled.
...
llvm-svn: 52414
2008-06-17 16:49:02 +00:00
Duncan Sands
ec220a7c48
Fix typo that changed the logic to something wrong.
...
Spotted by Nick Lewycky.
llvm-svn: 52411
2008-06-17 15:55:30 +00:00
Duncan Sands
ae9d876e69
Split type expansion into ExpandInteger and ExpandFloat
...
rather than bundling them together. Rename FloatToInt
to PromoteFloat (better, if not perfect). Reorganize
files by types rather than by operations.
llvm-svn: 52408
2008-06-17 14:27:01 +00:00
Matthijs Kooijman
44440c3722
Forgot to commit the ValueTracking header file along with r52396.
...
llvm-svn: 52401
2008-06-17 13:54:33 +00:00
Matthijs Kooijman
dd32cb58b5
Learn IPConstProp to propagate arguments that are directly returned. Strictly
...
speaking these are not constant values. However, when a function always returns
one of its arguments, then from the point of view of each caller the return
value is constant (or at least a known value) and can be replaced.
llvm-svn: 52397
2008-06-17 12:20:24 +00:00
Matthijs Kooijman
f0adaf34a1
Learn IPConstProp to look at individual return values and propagate them
...
individually.
Also learn IPConstProp how returning first class aggregates work, in addition
to old style multiple return instructions.
Modify the return-constants testscase to confirm this behaviour.
llvm-svn: 52396
2008-06-17 12:02:52 +00:00
Matthijs Kooijman
2fba6e78d6
80 column fixes.
...
llvm-svn: 52391
2008-06-17 08:26:32 +00:00
Matthijs Kooijman
dd18157e57
Use a SmallVector instead of an array, since auto_ptr doesn't handle arrays
...
properly.
llvm-svn: 52390
2008-06-17 08:24:37 +00:00
Chris Lattner
f461cca6b7
add a new -enable-value-prop flag for llcbeta, that enables propagation
...
of value info (sign/zero ext info) from one MBB to another. This doesn't
handle much right now because of two limitations:
1) only handles zext/sext, not random bit propagation (no assert exists
for this)
2) doesn't handle phis.
llvm-svn: 52383
2008-06-17 06:09:18 +00:00
Duncan Sands
915b66e08b
Fix spelling.
...
llvm-svn: 52381
2008-06-17 03:24:13 +00:00
Evan Cheng
89e2e3292d
Rather than avoiding to wrap ISD::DECLARE GV operand in X86ISD::Wrapper, simply handle it at dagisel time with x86 specific isel code.
...
llvm-svn: 52377
2008-06-17 02:01:22 +00:00
Chris Lattner
468adb09d7
Add a missing ~ (dtor became ctor) which caused crashes on a bunch of stuff.
...
llvm-svn: 52374
2008-06-16 23:06:51 +00:00
Evan Cheng
8cfd1d39a1
Do not issue identity copies.
...
llvm-svn: 52373
2008-06-16 22:52:53 +00:00
Dan Gohman
c1fd5f170b
Refine the change in r52258 for avoiding use-before-def conditions
...
when changing the stride of a comparison so that it's slightly
more precise, by having it scan the instruction list to determine
if there is a use of the condition after the point where the
condition will be inserted.
llvm-svn: 52371
2008-06-16 22:34:15 +00:00
Chris Lattner
dd707dc82d
switch TypeHasCycleThroughItself from using an std::set to using a SmallPtrSet,
...
this speeds up the linking testcase in PR1860 by 44% (.379 -> 0.263)
llvm-svn: 52365
2008-06-16 21:20:58 +00:00
Chris Lattner
6782f56054
stop making PATypeHolder's so crazily.
...
llvm-svn: 52364
2008-06-16 21:17:12 +00:00
Evan Cheng
4e7b7b21a2
Horizontal-add instructions are not commutative.
...
llvm-svn: 52363
2008-06-16 21:16:24 +00:00