Chris Lattner
571e434a34
Turn conditions like x<Y|z==q into multiple blocks.
...
This compiles Regression/CodeGen/X86/or-branch.ll into:
_foo:
subl $12, %esp
call L_bar$stub
movl 20(%esp), %eax
movl 16(%esp), %ecx
cmpl $5, %eax
jl LBB1_1 #cond_true
LBB1_3: #entry
testl %ecx, %ecx
jne LBB1_2 #UnifiedReturnBlock
LBB1_1: #cond_true
call L_bar$stub
addl $12, %esp
ret
LBB1_2: #UnifiedReturnBlock
addl $12, %esp
ret
instead of:
_foo:
subl $12, %esp
call L_bar$stub
movl 20(%esp), %eax
movl 16(%esp), %ecx
cmpl $4, %eax
setg %al
testl %ecx, %ecx
setne %cl
testb %cl, %al
jne LBB1_2 #UnifiedReturnBlock
LBB1_1: #cond_true
call L_bar$stub
addl $12, %esp
ret
LBB1_2: #UnifiedReturnBlock
addl $12, %esp
ret
And on ppc to:
cmpwi cr0, r29, 5
blt cr0, LBB1_1 ;cond_true
LBB1_3: ;entry
cmplwi cr0, r30, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock
instead of:
cmpwi cr7, r4, 4
mfcr r2
addic r4, r3, -1
subfe r30, r4, r3
rlwinm r29, r2, 30, 31, 31
and r2, r29, r30
cmplwi cr0, r2, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31230 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-27 21:36:01 +00:00
Evan Cheng
8862ef1481
Indexed load / store changes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31208 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-26 21:52:24 +00:00
Devang Patel
f9c197e022
Move getPreferredAlignmentLog from AsmPrinter to TargetData
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31171 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-24 20:32:14 +00:00
Chris Lattner
57ab65972e
Generalize CaseBlock a bit more:
...
Rename LHSBB/RHSBB to TrueBB/FalseBB. Allow the RHS value to be null,
in which case the LHS is treated as a bool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31166 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-24 17:57:59 +00:00
Chris Lattner
7b248d9866
generalize 'CaseBlock'. It really allows any comparison to be inserted.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31161 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-24 17:03:35 +00:00
Jim Laskey
fcc1d9473e
Tighter data structure for deleted debug labels.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31152 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-24 11:50:43 +00:00
Chris Lattner
34ea07692f
add two helper methods
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31143 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-23 23:35:35 +00:00
Jim Laskey
66ebf0973d
More complete solution to deleting blocks and debug info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31129 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-23 14:56:37 +00:00
Chris Lattner
cd5bad3711
New, wonderful isSuccessor method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31103 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-21 06:50:05 +00:00
Chris Lattner
846c1b4936
typo
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31089 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-20 22:44:45 +00:00
Chris Lattner
fcfcb6cb50
add isIdenticalTo method to machineinstr/operand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31087 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-20 22:39:36 +00:00
Chris Lattner
986cc38613
add method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31066 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-20 18:00:03 +00:00
Chris Lattner
a97906b6e6
add a method to remove a line # record.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31025 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 23:16:42 +00:00
Chris Lattner
8466b21432
Do not leak all of the SourceLineInfo objects. Do not bother mallocing each
...
one separately.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31022 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 22:06:46 +00:00
Chris Lattner
dc246715cb
minor cleanups
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31021 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 21:51:44 +00:00
Evan Cheng
35acd30a2e
Split PRE_INDEXED to PRE_INC / PRE_DEC and similarly for POST_INDEXED.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31015 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 21:12:56 +00:00
Jim Laskey
99e41eed6d
Clean up interface to getGlobalLinkName.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31001 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 17:17:24 +00:00
Jim Laskey
a1a19f803c
Basic support for getGlobalLinkName.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30997 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-17 13:41:07 +00:00
Jim Laskey
c7c3f110ed
Pass AliasAnalysis thru to DAGCombiner.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30984 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-16 20:52:31 +00:00
Chris Lattner
a7fa1476b6
add a ReplaceMBBInJumpTables method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30983 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-16 20:41:42 +00:00
Evan Cheng
bddc5d04d7
Start checking from the root of the matched sub-tree.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30957 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-14 08:30:53 +00:00
Chris Lattner
51dabfb283
When SimplifySetCC was moved to the DAGCombiner, it was never removed from
...
SelectionDAG and it has since bitrotted. Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.
This fixes obscure bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30952 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-14 00:41:01 +00:00
Evan Cheng
8b2794aeff
Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30945 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-13 21:14:26 +00:00
Evan Cheng
130a6471b9
Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30916 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-12 20:34:05 +00:00
Evan Cheng
2e49f090f9
Naming consistency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30878 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-11 07:10:22 +00:00
Andrew Lenharth
82c3d8f81a
Jimptables working again on alpha.
...
As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30873 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-11 04:29:42 +00:00
Chris Lattner
755480681c
add two helper methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30869 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-11 03:58:02 +00:00
Evan Cheng
81c3845788
Comments; getChain(), getBasePtr(), etc. should return a SDOperand by value.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30850 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-10 01:44:58 +00:00
Evan Cheng
24446e253a
Merging ISD::LOAD and ISD::LOADX. Added LoadSDNode to represent load nodes.
...
Chain and address ptr remains as operands. SrcValue, extending mode, extending
VT (or rather loaded VT before extension) are now instance variables of
LoadSDNode.
Introduce load / store addressing modes to represent pre- and post-indexed
load and store. Also added an additional operand offset that is only used in
post-indexed mode (i.e. base ptr += offset after load/store).
Added alignment info (not yet used) and isVolatile fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30843 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-09 20:55:20 +00:00
Chris Lattner
b6bb7e1ffe
add an accessor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30761 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-06 01:16:29 +00:00
Evan Cheng
ad071e1cd1
Add getStore() helper function to create ISD::STORE nodes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30758 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-05 22:57:11 +00:00
Chris Lattner
1da31ee472
Pass the MachineFunction into EmitJumpTableInfo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30742 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-05 03:01:21 +00:00
Chris Lattner
1279b7c2a9
move getSectionForFunction to AsmPrinter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30734 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-05 02:41:43 +00:00
Evan Cheng
c548428c5d
Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an
...
extra operand to LOADX to specify the exact value extension type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30714 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-04 00:56:09 +00:00
Chris Lattner
20a6d8e630
ADd a method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30707 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-03 20:16:45 +00:00
Chris Lattner
e70cab0ca4
Provide a function that ensures MBB numbering is dense and inorder. This
...
can be used by MachineFunctionPasses who need this property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30706 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-03 19:18:57 +00:00
Bill Wendling
f7da4e939f
Fix for PR929. The PHI nodes were being gone through for each instruction
...
in a successor block for every block...resulting in some O(N^k) algorithm
which wasn't very good for performance. Calculating this information up
front and keeping it in a map made it much faster.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30697 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-03 07:20:20 +00:00
Jim Laskey
ec20402c90
Add ability to annotate (color) nodes in a viewGraph.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30686 91177308-0d34-0410-b5e6-96231b3b80d8
2006-10-02 12:26:53 +00:00
Chris Lattner
57f9a43c64
refactor critical edge breaking out into the SplitCritEdgesForPHIConstants method.
...
This is a baby step towards fixing PR925.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30643 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-28 06:17:10 +00:00
Chris Lattner
3ce9b67e0c
Add support for ${:comment}, which expands to the current target's comment
...
character, and ${:uid} which expands to a unique ID for the MachineInstr.
More can be added if/when they are needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30619 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-26 23:59:50 +00:00
Chris Lattner
cb05af852f
Add support for targets that want to do something with the llvm.used list,
...
because they have an aggressive linker that does dead code stripping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30604 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-26 03:38:18 +00:00
Andrew Lenharth
beec30eaf3
Add support for other relocation bases to jump tables, as well as custom asm directives
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30593 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-24 19:45:58 +00:00
Jim Laskey
e85fb6719a
Sort out mangled names for globals
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30460 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-18 14:47:26 +00:00
Chris Lattner
428b92eb83
Keep track of the start of MBB's in a separate map from instructions. This
...
is faster and is needed for future improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30383 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-15 03:57:23 +00:00
Evan Cheng
f379924287
Add MachineConstantPoolEntry getOffset() accessor.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30325 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 07:32:32 +00:00
Evan Cheng
baf4500b3a
The top bit is used to determine whether it's a MachineConstantPoolValue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30324 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 07:30:48 +00:00
Chris Lattner
c7695eb504
revert accidentally committed file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30323 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 06:42:17 +00:00
Chris Lattner
2540813e5d
Remove dead methods, add getNumBlockIDs() method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30322 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 06:40:48 +00:00
Evan Cheng
89abd77060
Mirrors ConstantPoolSDNode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30314 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-14 05:48:39 +00:00
Evan Cheng
d6594ae54c
Added support for machine specific constantpool values. These are useful for
...
representing expressions that can only be resolved at link time, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30278 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-12 21:00:35 +00:00
Nate Begeman
019f851ab2
Behold, more work on relocations. Things are looking pretty good now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30240 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-10 23:03:44 +00:00
Chris Lattner
dd2afb0e1f
Implement new fpowi node
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30223 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-09 05:55:44 +00:00
Nate Begeman
94be248dbb
First pass at supporting relocations. Relocations are written correctly to
...
the file now, however the relocated address is currently wrong. Fixing
that will require some deep pondering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30207 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-08 22:42:09 +00:00
Jim Laskey
a0f3d17daa
Make target asm info a property of the target machine.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30162 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-07 22:06:40 +00:00
Jim Laskey
563321a258
Separate target specific asm properties from the asm printers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30126 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-06 18:34:40 +00:00
Evan Cheng
f89e2a9416
IsDef can only be accessed / set if operand is a register.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30119 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-05 20:20:04 +00:00
Evan Cheng
04957ac67c
Initialize IsDef of all non-register MachineOperand to false.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30116 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-05 18:56:02 +00:00
Chris Lattner
09e460662a
Completely eliminate def&use operands. Now a register operand is EITHER a
...
def operand or a use operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30109 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-05 02:31:13 +00:00
Chris Lattner
171ce440aa
ADd getImm/setImm methods
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30105 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-04 23:35:22 +00:00
Chris Lattner
930ab738c7
Add some short-hand accessors
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30104 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-04 23:05:29 +00:00
Chris Lattner
6b128bdc58
Avoid beating on the mi2i map when we know the answer already.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30066 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-03 08:07:11 +00:00
Chris Lattner
7a3abdc63c
Move two methods out of line, make them work when the record for a machine
...
instruction includes physregs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30061 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-03 00:05:09 +00:00
Chris Lattner
0f592b388f
Fix a typo pointed out by Gabor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30058 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-02 22:27:29 +00:00
Chris Lattner
2efe109452
add a prototype
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30051 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-02 05:37:53 +00:00
Chris Lattner
1acb17cb83
Iteration is required for some cases, even if they don't occur in crafty.
...
Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30050 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-02 05:32:53 +00:00
Chris Lattner
6bda49fd9f
new method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30048 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-02 05:26:01 +00:00
Chris Lattner
5d9b6f2823
remove some particularly expensive assertions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30014 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 06:57:35 +00:00
Chris Lattner
a2a8f0919d
Iterative coallescing doesn't buy us anything (we get identical results on
...
crafty with and without it). Removing it speeds up live intervals 6%.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30010 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-01 04:02:42 +00:00
Chris Lattner
91725b7585
avoid calling the virtual isMoveInstr method endlessly by caching its results.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29994 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-31 05:54:43 +00:00
Chris Lattner
1b1a49714e
fix 80 column issue
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29972 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-30 05:56:52 +00:00
Chris Lattner
6d8fbef015
Teach the coallescer to coallesce live intervals joined by an arbitrary
...
number of copies, potentially defining live ranges that appear to have
differing value numbers that become identical when coallsced. Among other
things, this fixes CodeGen/X86/shift-coalesce.ll and PR687.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29968 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-29 23:18:15 +00:00
Evan Cheng
1efba0ecb4
Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make it a static method of SelectionDAG.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29951 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-29 06:42:35 +00:00
Evan Cheng
694481ee01
Eliminate SelectNodeTo() and getTargetNode() variants which take more than
...
3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29905 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-27 08:08:54 +00:00
Nate Begeman
d2030e6c99
Properly size the string table, and emit symbol table and string table
...
entries in the correct order, fixing several fixmes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29902 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-26 15:46:34 +00:00
Evan Cheng
95514bae73
SelectNodeTo now returns a SDNode*.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29901 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-26 08:00:10 +00:00
Chris Lattner
c114b2cad7
Completely change the way that joining with physregs is implemented. This
...
paves the way for future changes, increases coallescing opportunities (in
theory, not witnessed in practice), and eliminates the really expensive
LiveIntervals::overlapsAliases method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29890 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-25 23:41:24 +00:00
Jim Laskey
08ede262a7
Tidy up.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29888 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-25 22:56:30 +00:00
Jim Laskey
f3e4f0e615
Consolidate callee saved register information so that it can me used by debug
...
information and exception handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29881 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-25 19:45:51 +00:00
Nate Begeman
f8f2c5a172
Get closer to handling globals correctly. We now generally get them in the
...
right section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29871 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-25 06:36:58 +00:00
Chris Lattner
f7da2c7b0c
Take advantage of the recent improvements to the liveintervals set (tracking
...
instructions which define each value#) to simplify and improve the coallescer.
In particular, this patch:
1. Implements iterative coallescing.
2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a
better solution.
3. Implements PR865, "coallescing" away the second copy in code like:
A = B
...
B = A
This also includes changes to symbolically print registers in intervals
when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29862 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-24 22:43:55 +00:00
Reid Spencer
0569eee66b
Remove a FIXME. Don't use strlcpy that isn't available on non-BSD platforms
...
and ensure that a memory overrun won't occur while still writing Length
bytes in the outstring function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29855 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-24 14:25:39 +00:00
Nate Begeman
ea7b8cf132
Correctly attribute file author & remote tabs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29852 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-23 21:33:27 +00:00
Nate Begeman
eb883af390
Initial checkin of the Mach-O emitter. There's plenty of fixmes, but it
...
does emit linkable .o files in very simple cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29850 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-23 21:08:52 +00:00
Chris Lattner
be4f88a8b8
Improve the LiveInterval class to keep track of which machine instruction
...
defines each value# tracked by the interval. This will be used to improve
coallescing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29830 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-22 18:19:46 +00:00
Chris Lattner
969e262656
Switch to using smallvector for liveintervals. This speeds up live interval
...
analysis 11% on kc++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29812 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-22 06:32:56 +00:00
Chris Lattner
0c2f83e756
move LiveInterval state all together
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29806 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-21 23:15:12 +00:00
Chris Lattner
5ea64fd9eb
Constify some methods. Patch provided by Anton Vayvod, thanks!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29756 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-17 22:00:08 +00:00
Chris Lattner
228a18e0f2
switch the SUnit pred/succ sets from being std::sets to being smallvectors.
...
This reduces selectiondag time on kc++ from 5.43s to 4.98s (9%). More
significantly, this speeds up the default ppc scheduler from ~1571ms to 1063ms,
a 33% speedup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29743 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-17 00:09:56 +00:00
Chris Lattner
67bb42aa59
add an accessor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29739 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-16 22:57:08 +00:00
Chris Lattner
9522ee3d93
Convert vector to smallvector: 4% speedup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29735 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-16 22:12:48 +00:00
Chris Lattner
5892d47a62
Change the use_list to be a smallvector instead of a vector. This reduces
...
isel time from 6.79s to 5.53s (22%) on kc++ with a release build on ppc.
Go smallvector! :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29731 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-16 21:01:10 +00:00
Chris Lattner
0b3e525a3a
Start using SDVTList more consistently
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29711 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-15 19:11:05 +00:00
Chris Lattner
70046e920f
add a new SDVTList type and new SelectionDAG::getVTList methods to streamline
...
the creation of canonical VTLists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29709 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-15 17:46:01 +00:00
Chris Lattner
3ca002bc17
Make getNodeValueTypes methods public.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29688 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-14 23:54:24 +00:00
Chris Lattner
2fa6d3b1fc
Add a new getNode() method that takes a pointer to an already-intern'd list
...
of value-type nodes. This avoids having to do mallocs for std::vectors of
valuetypes when a node returns more than one type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29685 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-14 23:31:51 +00:00
Chris Lattner
e51ee04c3d
remove SelectionDAG::InsertISelMapEntry, it is dead
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29677 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-14 22:24:39 +00:00
Chris Lattner
213a16c637
Add code to resize the CSEMap hash table. This doesn't speedup codegen of
...
kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29675 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-14 22:19:25 +00:00
Nate Begeman
52a51e38dc
Emit .set directives for jump table entries when possible, which reduces
...
the number of relocations in object files, shrinkifying them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29650 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-12 21:29:52 +00:00
Chris Lattner
8731c0d234
Track # nodes in a CSEMap.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29643 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-12 01:07:51 +00:00
Chris Lattner
7ed9ea81f8
Switch NodeID to track 32-bit chunks instead of 8-bit chunks, for a 2.5%
...
speedup in isel time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29640 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-11 23:55:53 +00:00