Chris Lattner
ec06e9a670
When replacing a node in SimplifyDemandedBits, if the old node used any
...
single-use nodes, they will be dead soon. Make sure to remove them before
processing other nodes. This implements CodeGen/X86/shl_elim.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36244 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 03:05:22 +00:00
Chris Lattner
1e6cf8630f
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36243 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 03:04:37 +00:00
Chris Lattner
0a16a1f738
fix a pasto
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36242 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 03:01:40 +00:00
Evan Cheng
919184867c
New crasher test case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36241 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 02:35:10 +00:00
Evan Cheng
faf05bbaea
Don't populate TryAgainList when coalescing only physical registers with virtual registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36240 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 02:30:19 +00:00
Devang Patel
5a713cc72f
Cache DT[*SI] lookup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36239 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 01:19:55 +00:00
Chris Lattner
8dcd2f1a5b
don't access argument list of prototypes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36238 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:57:22 +00:00
Devang Patel
7cc6dcf6e0
Fix
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070416/047971.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36236 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:53:01 +00:00
Devang Patel
7d87c1476a
New test.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36235 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:51:43 +00:00
Chris Lattner
2f15254d77
what's an & between friends?
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:43:05 +00:00
Evan Cheng
3fefc182a0
Increment use count of new virtuals created during PHI elimination.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36233 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:36:11 +00:00
Chris Lattner
b1b2f0bc44
Be more careful when inserting reused instructions. This fixes CodeGen/Generic/2007-04-17-lsr-crash.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36231 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 23:43:50 +00:00
Chris Lattner
a00a5b95e7
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36230 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 23:43:31 +00:00
Evan Cheng
7be6368cac
Oops. Didn't mean to check in a quick hack.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36227 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 23:33:39 +00:00
Chris Lattner
8c7d2d56bf
Fix a bug in my previous patch, grabbing the shift amount width from the
...
wrong operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36223 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 22:53:02 +00:00
Chris Lattner
120fba91a3
dag combiner just got better at pruning bits. This fixes CodeGen/ARM/rev.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36222 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 22:39:58 +00:00
Chris Lattner
895c4ab564
Fold (x << c1)>> c2 into a single shift if the bits shifted out aren't used.
...
This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
srwi r2, r3, 1
extsh r3, r2
blr
on PPC, instead of:
_baz:
slwi r2, r3, 8
srwi r2, r2, 9
extsh r3, r2
blr
GCC produces:
_baz:
srwi r10,r4,24
insrwi r10,r3,24,0
srawi r9,r3,24
srawi r3,r10,9
extsh r3,r3
blr
This implements CodeGen/PowerPC/shl_elim.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36221 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 21:14:16 +00:00
Chris Lattner
e54ec7ab0f
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36220 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 21:12:26 +00:00
Duncan Sands
f24d87c733
Use // not ; since this is C.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36219 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:50:33 +00:00
Evan Cheng
20b0abc24f
Copy coalescing change to prevent a physical register from being pin to a
...
long live interval that has low usage density.
1. Change order of coalescing to join physical registers with virtual
registers first before virtual register intervals become too long.
2. Check size and usage density to determine if it's worthwhile to join.
3. If joining is aborted, assign virtual register live interval allocation
preference field to the physical register.
4. Register allocator should try to allocate to the preferred register
first (if available) to create identify moves that can be eliminated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36218 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:32:26 +00:00
Devang Patel
58ff012539
New test case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36217 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:29:12 +00:00
Evan Cheng
e52eef8e9a
Add a register allocation preference field; add a method to compute size of a live interval.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36216 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:25:11 +00:00
Evan Cheng
eff03db46d
Change getAllocatableSet() so it returns allocatable registers for a specific register class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36215 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:23:34 +00:00
Evan Cheng
38b7ca6651
Keep track of number of uses within the function per virtual register.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:22:11 +00:00
Anton Korobeynikov
e060b5385f
Add comment
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36213 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 19:34:00 +00:00
Chris Lattner
95a5e0507e
SIGN_EXTEND_INREG does not demand its top bits. Give SimplifyDemandedBits
...
a chance to hack on it. This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
slwi r2, r3, 8
srwi r2, r2, 9
extsh r3, r2
blr
instead of:
_baz:
srwi r2, r4, 24
rlwimi r2, r3, 8, 0, 23
srwi r2, r2, 9
extsh r3, r2
blr
This implements CodeGen/PowerPC/sign_ext_inreg1.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36212 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 19:03:21 +00:00
Chris Lattner
84e8315aaa
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36211 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 19:03:02 +00:00
Chris Lattner
47e756c11e
Commit an patch from Gabor Greif in Mar 2005. This eliminates the tail
...
pointer from ilist, storing it in the prev pointer of the first node in the
list instead.
This shrinks ilist from 8 to 4 bytes, BasicBlock from 40->36 bytes, Function
from 76->68 bytes, Module from 52->44 bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36210 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:41:42 +00:00
Chris Lattner
4cc12c9f57
make getnext/getprev accessors private.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36209 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:30:41 +00:00
Dan Gohman
747603e39e
Spell doFinalization right, so that it is a proper virtual override and
...
gets called.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36208 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:21:36 +00:00
Chris Lattner
881765af0a
make next/prev accessors private
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36207 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:16:39 +00:00
Chris Lattner
7a83aecc03
bool on darwin/ppc is 4 bytes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36206 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:15:04 +00:00
Chris Lattner
261cdfbe5e
remove use of BasicBlock::getNext
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36205 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:09:47 +00:00
Chris Lattner
97f89e688f
Instruction:: Next/Prev accessors are now private
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36204 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:03:55 +00:00
Chris Lattner
3c30d10b04
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36203 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:03:00 +00:00
Chris Lattner
e24c92a698
remove use of BasicBlock::getNext
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36202 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:54:12 +00:00
Chris Lattner
8e8f865227
Remove use of Instruction::getNext
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36201 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:52:45 +00:00
Chris Lattner
a0e1b0e98d
eliminate use of Instruction::getNext()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36200 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:51:03 +00:00
Chris Lattner
decb0ca18b
remove use of Instruction::getNext
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36199 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:47:54 +00:00
Chris Lattner
b8e237bb86
eliminate use of Instruction::getPrev(). Patch by Gabor Greif in 2005.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36198 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:38:28 +00:00
Chris Lattner
4d8c16f15a
eliminate a use of Instruction::getPrev(), patch by Gabor Greif in 2005.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36197 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:36:12 +00:00
Chris Lattner
d15dff24c6
rename X86FunctionInfo to X86MachineFunctionInfo to match the header file
...
it is defined in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36196 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 17:21:52 +00:00
Anton Korobeynikov
57fc00d5cf
Implemented correct stack probing on mingw/cygwin for dynamic alloca's.
...
Also, fixed static case in presence of eax livin. This fixes PR331
PS: Why don't we still have push/pop instructions? :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36195 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 09:20:00 +00:00
Jeff Cohen
56398e39d7
Make it work on 64-bit systems.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36194 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 05:48:35 +00:00
Jeff Cohen
eb913b6b34
Fix build breakage on 64-bit systems.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36193 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 05:33:04 +00:00
Chris Lattner
18feb92e91
merge several fields in GlobalValue to use the same word, move CallingConv
...
field into SubclassData in Value. This shrinks GlobalVAlue from 48->40
bytes, Function from 88->76, and GlobalVariable from 76->68. This trims
4640 bytes off my testcase, reading a bc file without materializing any
functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36192 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:31:29 +00:00
Andrew Lenharth
15b7823006
Use this nifty Constraints thing and fix the inverted conditional moves
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36191 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:07:59 +00:00
Andrew Lenharth
0644309e0d
this is fixed
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36190 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:07:27 +00:00
Chris Lattner
f8dfef7437
The (negative) offset from a SymbolTableListTraits-using ilist to its container
...
object is always constant. As such, evaluate it at compile time instead of storing
it as an ivar in SymbolTableListTraits. This shrinks every SymbolTableListTraits
ilist by a word, shrinking BasicBlock from 44->40 bytes, Function from 96->88 bytes,
and Module from 60->52 bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36189 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:04:14 +00:00
Chris Lattner
17fcdd5e1b
Refactor SymbolTableListTraits to only have a single pointer in it, instead
...
of two. This shrinkifies Function by 8 bytes (104->96) and Module by 8
bytes (68->60). On a testcase of mine, this reduces the memory used to
read a module header from 565680b to 561024, a little over 4K.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36188 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 03:26:42 +00:00