Evan Cheng
b2bc19ee5b
Added missing entries in X86 load / store folding tables.
...
llvm-svn: 46866
2008-02-08 00:12:56 +00:00
Devang Patel
1e5c60dee9
Begin setting features for target based on target triple string.
...
llvm-svn: 46863
2008-02-07 22:32:50 +00:00
Evan Cheng
0c6aedd740
Remove remnant of load folding in local register allocator. Patch by Holger Schurig.
...
llvm-svn: 46861
2008-02-07 19:46:55 +00:00
Dan Gohman
eb7c8e4f6b
Follow Chris' suggestion; change the PseudoSourceValue accessors
...
to return pointers instead of references, since this is always what
is needed.
llvm-svn: 46857
2008-02-07 18:41:25 +00:00
Dan Gohman
3af6eba3dd
Add SourceValue information for outgoing argument stores on x86.
...
llvm-svn: 46854
2008-02-07 16:28:05 +00:00
Dan Gohman
ebca101f50
Don't abort if a MemOperand is missing a SourceValue; just print it
...
as <unknown>. And make some minor adjustments to the MemOperand
dump format.
llvm-svn: 46853
2008-02-07 16:18:00 +00:00
Evan Cheng
a377b2bbd1
Fix a x86-64 codegen deficiency. Allow gv + offset when using rip addressing mode.
...
Before:
_main:
subq $8, %rsp
leaq _X(%rip), %rax
movsd 8(%rax), %xmm1
movss _X(%rip), %xmm0
call _t
xorl %ecx, %ecx
movl %ecx, %eax
addq $8, %rsp
ret
Now:
_main:
subq $8, %rsp
movsd _X+8(%rip), %xmm1
movss _X(%rip), %xmm0
call _t
xorl %ecx, %ecx
movl %ecx, %eax
addq $8, %rsp
ret
Notice there is another idiotic codegen issue that needs to be fixed asap:
xorl %ecx, %ecx
movl %ecx, %eax
llvm-svn: 46850
2008-02-07 08:53:49 +00:00
Evan Cheng
92635b3d94
In some cases, e.g. ADD32ri, no transformation is made. Guide against it.
...
llvm-svn: 46849
2008-02-07 08:29:53 +00:00
Nick Lewycky
b0f0e69df2
Don't make up new directives. (".set_foobar")
...
llvm-svn: 46848
2008-02-07 06:36:26 +00:00
Dan Gohman
b4aa0b2a15
Fix a typo in a comment.
...
llvm-svn: 46836
2008-02-07 02:30:40 +00:00
Dan Gohman
011075cfdb
Add support to FoldingSet for hashing APInt objects.
...
llvm-svn: 46833
2008-02-06 23:09:15 +00:00
Dan Gohman
f00842e086
Re-apply the memory operand changes, with a fix for the static
...
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.
llvm-svn: 46827
2008-02-06 22:27:42 +00:00
Evan Cheng
6b03a1aeb9
It's PR1925, not PR1609.
...
llvm-svn: 46825
2008-02-06 22:07:17 +00:00
Bill Wendling
8a28ab4b1f
Temporarily reverting:
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080128/057882.html
This is causing a miscompilation on PPC G5 and just now seeing it on iMac x86-64.
llvm-svn: 46822
2008-02-06 20:03:07 +00:00
Evan Cheng
2091d9a2e8
Fix a number of local register allocator issues: PR1609.
...
llvm-svn: 46821
2008-02-06 19:16:53 +00:00
Chris Lattner
ad6348aeb7
some more notes.
...
llvm-svn: 46818
2008-02-06 18:32:06 +00:00
Chris Lattner
c46fd5395e
make it clear :)
...
llvm-svn: 46817
2008-02-06 18:00:48 +00:00
Chris Lattner
5f73d71055
add a bunch of random notes and fix some issues noticed by Gabor.
...
This is not ready for review or hacking, this is a work in progress :)
llvm-svn: 46816
2008-02-06 18:00:06 +00:00
Evan Cheng
34815d69b2
RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code.
...
llvm-svn: 46813
2008-02-06 08:00:32 +00:00
Chris Lattner
935f54c94c
a starter shell for 2.2 release notes
...
llvm-svn: 46810
2008-02-06 06:30:34 +00:00
Tanya Lattner
1234229bc7
Throttle the non-local dependence analysis for basic blocks with more than 50 predecessors. Added command line option to play with this threshold.
...
llvm-svn: 46790
2008-02-06 00:54:55 +00:00
Anton Korobeynikov
b1576212e7
Don't dereference an invalid pointer if string is empty.
...
llvm-svn: 46781
2008-02-05 23:34:40 +00:00
Evan Cheng
851d353eb8
Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.
...
llvm-svn: 46776
2008-02-05 22:50:29 +00:00
Evan Cheng
e509232483
Move to getCALLSEQ_END to ensure CALLSEQ_END node produces a flag. This is consistent with the definition in td file.
...
llvm-svn: 46775
2008-02-05 22:44:06 +00:00
Chris Lattner
5c9fc804d7
Make RenamePass faster by making the 'is this a new phi node'
...
check more intelligent. This speeds up mem2reg from 5.29s to
0.79s on a synthetic testcase with tons of predecessors and
phi nodes.
llvm-svn: 46767
2008-02-05 21:26:23 +00:00
Dale Johannesen
e8fa3130f8
Implement sseregparm.
...
llvm-svn: 46764
2008-02-05 20:46:33 +00:00
Evan Cheng
69d5e0fc0f
If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).
...
llvm-svn: 46763
2008-02-05 20:04:18 +00:00
Chris Lattner
264514cacf
regenerate
...
llvm-svn: 46761
2008-02-05 19:43:53 +00:00
Chris Lattner
578a3c2083
Make the check for GCC version more robust, fix shared library
...
dependencies in makefile, and fix llvm_cv_no_link_all_option
on darwin.
Patch by Shantonu Sen, more info here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-February/012410.html
llvm-svn: 46760
2008-02-05 19:43:40 +00:00
Ted Kremenek
3277f38b25
Added FoldingSet profiling support to ImmutableSet.
...
llvm-svn: 46757
2008-02-05 18:50:25 +00:00
Ted Kremenek
571ad3913c
Changed profiling method for ImmutableMap to once again just use its
...
unique ImutAVLTree* for profiling.
Modified ImutAVLTree:
(1) changed ComputeHash() to ComputeDigest() and
(2) changed Profile() to use the computed digest and
(3) modified insertion of IMutAVLTree into the FoldingSet owned by
the ImutAVLTreeFactory object to use profiling instead of computing
a direct hash. This fixes a bug where our abuse of the FoldingSet would
not work when the FoldingSet was resized.
llvm-svn: 46753
2008-02-05 17:30:43 +00:00
Nate Begeman
9f4245c16a
Ident mnemonics appropriately
...
llvm-svn: 46746
2008-02-05 08:49:09 +00:00
Chris Lattner
4cb265227d
dump the module *before* we delete it, not after.
...
llvm-svn: 46741
2008-02-05 06:18:42 +00:00
Chris Lattner
96deed5d4d
Fix a bug compiling PR1978 (perhaps not the only one though) which
...
was incorrectly simplifying "x == (gep x, 1, i)" into false, even
though i could be negative. As it turns out, all the code to
handle this already existed, we just need to disable the incorrect
optimization case and let the general case handle it.
llvm-svn: 46739
2008-02-05 04:45:32 +00:00
Owen Anderson
28d90a4a6a
Fix an obscure read-after-free bug that Duncan found.
...
llvm-svn: 46738
2008-02-05 04:34:03 +00:00
Dale Johannesen
bf7691e2e8
Missed one.
...
llvm-svn: 46733
2008-02-05 01:12:10 +00:00
Evan Cheng
f1ad13301a
This should also work on x86 now.
...
llvm-svn: 46730
2008-02-05 00:25:31 +00:00
Evan Cheng
ca7db1ca34
Unbreak teh build.
...
llvm-svn: 46729
2008-02-05 00:25:13 +00:00
Dale Johannesen
9b7f4064e3
Do not unconditionally redefine vec_ext_v16qi and
...
vec_ext_v4si builtins. This is a hack; they should
be defined here, then resolved in the X86 BE.
However there is enough other stuff missing in the
X86 BE for SSE41 that this will do for now.
llvm-svn: 46727
2008-02-04 23:27:29 +00:00
Evan Cheng
352062f5f7
Typo.
...
llvm-svn: 46725
2008-02-04 23:10:38 +00:00
Evan Cheng
1c67dcaae7
Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.
...
llvm-svn: 46724
2008-02-04 23:06:48 +00:00
Nate Begeman
2b00217d58
This method should be virtual
...
llvm-svn: 46723
2008-02-04 23:04:24 +00:00
Nate Begeman
8285430ed7
Eliminate some redundant code.
...
llvm-svn: 46720
2008-02-04 21:44:06 +00:00
Ted Kremenek
f2e96e37f4
Modified 'Profile' method of ImmutableMap to use the 'Profile' method
...
of the contained ImutAVLTree root.
llvm-svn: 46719
2008-02-04 21:17:02 +00:00
Devang Patel
1e7348f797
Do not set time out, lets assume assembler will do its job in reasonable amount of time.
...
llvm-svn: 46718
2008-02-04 21:16:10 +00:00
Ted Kremenek
9679f99479
Modified node creation of ImutAVLTree to do a hash lookup for an existing
...
node in the FoldingSet of nodes held by the Factory object. If we
we find a node with a matching hash, we do a full structural comparison.
Nodes are also now inserted into the FoldingSet only when we mark them
Immutable, as their children can change during intermediate-rebalancing.
The 'Profile' method for ImutAVLTree is no longer used when looking up
existing ImutAVLTrees with a given set of contents; instead the Profile method
is used by other clients that wish to insert such a tree into a folding set.
This means that we are not using FoldingSet in ImutAVLTreeFactory in the way
it was intended, but instead are using it as an opaque hashtable.
llvm-svn: 46717
2008-02-04 21:15:24 +00:00
Ted Kremenek
6dab41ed32
Added "bucket_iterators" to FoldingSet. Bucket iterators allow iteration
...
over all the nodes in a particular bucket.
llvm-svn: 46716
2008-02-04 21:11:17 +00:00
Devang Patel
ab8c21f3a1
Set error message.
...
Patch by Shantonu Sen.
llvm-svn: 46715
2008-02-04 20:57:54 +00:00
Duncan Sands
b65b2462c8
Crashes LegalizeTypes with "Do not know how to
...
expand the result of this operator!" (node: ctlz).
llvm-svn: 46713
2008-02-04 18:07:02 +00:00
Duncan Sands
123f86e781
Crashes LegalizeTypes with "Do not know how to split
...
this operator's operand" (node: extract_subvector).
llvm-svn: 46712
2008-02-04 18:05:42 +00:00