Owen Anderson
5b8d39569b
Add support for extractvalue and insertvalue instructions in GVN.
...
llvm-svn: 52472
2008-06-18 21:59:00 +00:00
Owen Anderson
3f78e260c1
Add local PRE to GVN. This only operates in cases where it would not increase code size, namely when the instantiated expression
...
would only need to be created in one predecessor.
llvm-svn: 52471
2008-06-18 21:41:49 +00:00
Bill Wendling
adf865a112
Refactor the way to get a string containing the features of the target.
...
llvm-svn: 52470
2008-06-18 21:39:02 +00:00
Argyrios Kyrtzidis
5ef6b9b977
Fix the source line debug information for the Windows platform.
...
According to DWARF-2 specification, the line information is provided through an offset in the .debug_line section.
Replace the label reference that is used with a section offset.
llvm-svn: 52468
2008-06-18 19:27:37 +00:00
Dan Gohman
db0beeefb1
Fix a missing comma spotted by Bram Geron.
...
llvm-svn: 52467
2008-06-18 18:42:13 +00:00
Chris Lattner
f9d9f0ec4c
Fix the regressions on sext-misc.ll my patch yesterday caused.
...
llvm-svn: 52466
2008-06-18 18:11:55 +00:00
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