1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
Commit Graph

36689 Commits

Author SHA1 Message Date
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