Chris Lattner
f903fe1df0
rename getNonLocalPointerDepInternal -> getNonLocalPointerDepFromBB
...
and split its inner loop out into a new GetNonLocalInfoForBlock
function. No functionality change.
llvm-svn: 60751
2008-12-09 07:47:11 +00:00
Evan Cheng
75900bf5cd
DisableGVCompilation should not abort on internal GlobalValue's.
...
llvm-svn: 60750
2008-12-09 07:31:49 +00:00
Mon P Wang
8a5366332f
In LegalizeOp, don't change the result type of CONVERT_RNDSAT when promoting
...
one of its operand.
llvm-svn: 60749
2008-12-09 07:27:39 +00:00
Nick Lewycky
f545749f2b
It's easy to handle SLE/SGE when the loop has a unit stride.
...
llvm-svn: 60748
2008-12-09 07:25:04 +00:00
Chris Lattner
aeaec0838b
if we have two elements, insert both, don't use std::sort.
...
This speeds up the new GVN by another 3%
llvm-svn: 60747
2008-12-09 07:05:45 +00:00
Chris Lattner
4d1281cdf2
If we're only adding one new element to 'Cache', insert it into its known
...
position instead of using a full sort. This speeds up GVN by ~4% with the
new memdep stuff.
llvm-svn: 60746
2008-12-09 06:58:04 +00:00
Chris Lattner
e8113a70fa
convert a couple other places that use pred_iterator to use the caching
...
pred iterator.
llvm-svn: 60745
2008-12-09 06:44:17 +00:00
Chris Lattner
768e5bcafc
use hte new pred cache to speed up the new non-local memdep
...
queries. This speeds up GVN using the new queries (not yet
checked in) by just over 10%.
llvm-svn: 60743
2008-12-09 06:28:49 +00:00
Mon P Wang
4dd832d241
Fix getNode to allow a vector for the shift amount for shifts of vectors.
...
Fix the shift amount when unrolling a vector shift into scalar shifts.
Fix problem in getShuffleScalarElt where it assumes that the input of
a bit convert must be a vector.
llvm-svn: 60740
2008-12-09 05:46:39 +00:00
Chris Lattner
56b20ffc5f
Fix a really subtle off-by-one bug that Duncan noticed with valgrind
...
on test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.
llvm-svn: 60739
2008-12-09 04:47:21 +00:00
Scott Michel
8deac5db5a
CellSPU:
...
- Change default scheduling preference to list-burr, which produces somewhat
better code than the default. Could also use list-tdrr, but need to ask
dev list about the appropriate handy mnemonic before commiting.
llvm-svn: 60738
2008-12-09 03:37:19 +00:00
Bill Wendling
80b34b3f47
Add initial support for fast-isel of the [SU]ADDO intrinsics. It isn't
...
complete. For instance, it lowers the common case into this less-than-optimal
code:
addl %ecx, %eax
seto %cl
testb %cl, %cl
jne LBB1_2 ## overflow
instead of:
addl %ecx, %eax
jo LBB1_2 ## overflow
That will come in a future commit.
llvm-svn: 60737
2008-12-09 02:42:50 +00:00
Dan Gohman
37c496979c
Don't charge full latency for an anti-dependence, in this simplistic
...
pipeline model.
llvm-svn: 60733
2008-12-09 00:26:46 +00:00
Dan Gohman
bc55c2a18f
Fix a couple of mistaken switch case fall-throughs. Thanks to Bill
...
for spotting these!
llvm-svn: 60728
2008-12-08 23:50:06 +00:00
Chris Lattner
e598370ae9
remove DebugIterations option. Despite the accusations,
...
jump threading has been shown to only expose problems not
have bugs itself. I'm sure it's completely bug free! ;-)
llvm-svn: 60725
2008-12-08 22:44:07 +00:00
Evan Cheng
c654143258
Re-apply 60689 now my head is screwed on right.
...
llvm-svn: 60711
2008-12-08 19:29:03 +00:00
Dan Gohman
f90d3b096a
Fix the top-level comments, and fix some 80-column violations.
...
llvm-svn: 60707
2008-12-08 17:50:35 +00:00
Dan Gohman
64bc11e7ce
Revert 60689. It caused many regressions on Darwin targets.
...
llvm-svn: 60705
2008-12-08 17:38:02 +00:00
Devang Patel
2bb8a2f80f
Fix spelling.
...
Thanks Duncan!
llvm-svn: 60702
2008-12-08 17:07:24 +00:00
Devang Patel
1c469d36b0
Undo previous patch.
...
llvm-svn: 60701
2008-12-08 17:02:37 +00:00
Duncan Sands
714ffa36d3
Fix comment typo.
...
llvm-svn: 60697
2008-12-08 14:01:59 +00:00
Dan Gohman
4c31524bec
Factor out the code for sign-extending/truncating gep indices
...
and use it in x86 address mode folding. Also, make
getRegForValue return 0 for illegal types even if it has a
ValueMap for them, because Argument values are put in the
ValueMap. This fixes PR3181.
llvm-svn: 60696
2008-12-08 07:57:47 +00:00
Chris Lattner
5ed409edfa
add another level of caching for non-local pointer queries, keeping
...
track of whether the CachedNonLocalPointerInfo for a block is specific
to a block. If so, just return it without any pred scanning. This is
good for a 6% speedup on GVN (when it uses this lookup method, which
it doesn't right now).
llvm-svn: 60695
2008-12-08 07:31:50 +00:00
Chris Lattner
911c4348c6
consistency
...
llvm-svn: 60694
2008-12-08 07:21:39 +00:00
Chris Lattner
e50d835625
introduce a new RoundUpAlignment helper function, use it to
...
remove some more 64-bit divs and rems from the StructLayout
ctor.
llvm-svn: 60692
2008-12-08 07:11:56 +00:00
Dan Gohman
8214fc12a3
Make ConstantAggregateZero::get return a ConstantAggregateZero*,
...
as suggested in PR3182.
llvm-svn: 60691
2008-12-08 07:10:54 +00:00
Dan Gohman
2be8b919b1
Update CPP backend for PrintModulePass API changes.
...
llvm-svn: 60690
2008-12-08 07:07:24 +00:00
Evan Cheng
50fcc67a8b
Perform cheap checks first.
...
llvm-svn: 60689
2008-12-08 06:52:43 +00:00
Chris Lattner
2f9d8458c8
Some minor optimizations for isObjectSmallerThan.
...
llvm-svn: 60687
2008-12-08 06:28:54 +00:00
Dan Gohman
91dfc08809
Move createVirtualRegister out-of-line.
...
llvm-svn: 60684
2008-12-08 04:54:11 +00:00
Dan Gohman
9de2ac8e8b
Clarify some comments.
...
llvm-svn: 60683
2008-12-08 04:53:23 +00:00
Nick Lewycky
d745adedd7
Fixes for Visual Studio users. Patch by OvermindDL1 on llvm-dev!
...
llvm-svn: 60679
2008-12-08 00:45:02 +00:00
Chris Lattner
fdb8843133
add an assert. the cast<> below would catch this but a message is more
...
useful.
llvm-svn: 60674
2008-12-07 18:45:15 +00:00
Chris Lattner
82b7034753
factor some code better.
...
llvm-svn: 60673
2008-12-07 18:42:51 +00:00
Chris Lattner
de4440c24b
factor some code, fixing some fixme's.
...
llvm-svn: 60672
2008-12-07 18:39:13 +00:00
Chris Lattner
a28355de14
add support for caching pointer dependence queries. Nothing uses this yet
...
so it "can't" break anything. That said, it does appear to work.
llvm-svn: 60654
2008-12-07 08:50:20 +00:00
Chris Lattner
f50d7f76c6
fix a bug I introduced in simplifycfg handling single entry phi
...
nodes. FoldSingleEntryPHINodes deletes the PHI, so there is no
need to delete it afterward.
llvm-svn: 60653
2008-12-07 07:22:45 +00:00
Owen Anderson
12679470bf
Switch to top-down mode and fix a crasher this exposed caused by an error in the
...
live interval updating.
llvm-svn: 60652
2008-12-07 05:33:18 +00:00
Nick Lewycky
f9e2394009
Fix typo, psuedo -> pseudo.
...
llvm-svn: 60651
2008-12-07 03:49:52 +00:00
Chris Lattner
7564a3b81b
Some internal refactoring to make it easier to cache results.
...
llvm-svn: 60650
2008-12-07 02:56:57 +00:00
Chris Lattner
2faa2c724a
Introduce a new MemDep::getNonLocalPointerDependency
...
method. This will eventually take over load/store dep
queries from getNonLocalDependency. For now it works
fine, but is incredibly slow because it does no caching.
Lets not switch GVN to use it until that is fixed :)
llvm-svn: 60649
2008-12-07 02:15:47 +00:00
Chris Lattner
5a78604e39
push the "pointer case" up the analysis stack a bit. This causes
...
duplication of logic (in 2 places) to determine what pointer a
load/store touches. This will be addressed in a future commit.
llvm-svn: 60648
2008-12-07 01:50:16 +00:00
Chris Lattner
ed494f791e
make clients have to know how to call getCallSiteDependencyFrom
...
instead of making getDependencyFrom do it.
llvm-svn: 60647
2008-12-07 01:21:14 +00:00
Chris Lattner
ccb9c3370a
rename some variables for consistency
...
llvm-svn: 60644
2008-12-07 00:39:19 +00:00
Chris Lattner
e2069a6949
I love how using out of scope variables is not an error with GCC, no really I do.
...
llvm-svn: 60643
2008-12-07 00:38:27 +00:00
Chris Lattner
056c090c67
Rename getCallSiteDependency -> getCallSiteDependencyFrom to
...
emphasize the scanning and make it more similar to
getDependencyFrom
llvm-svn: 60642
2008-12-07 00:35:51 +00:00
Chris Lattner
d4d9588abc
a memdep query on a volatile load/store will always return
...
clobber with the current implementation. Instead of returning
a "precise clobber" just return a fuzzy one. This doesn't
matter to any clients anyway and should speed up analysis time
very very slightly.
llvm-svn: 60641
2008-12-07 00:28:02 +00:00
Chris Lattner
5df5b4cc2e
don't bother touching volatile stores, they will just return clobber on
...
everything interesting anyway.
llvm-svn: 60640
2008-12-07 00:25:15 +00:00
Chris Lattner
f5891941b4
remove the ability to get memdep info for vaarg. I don't think the
...
original impl was correct and noone actually makes the query anyway.
llvm-svn: 60639
2008-12-07 00:21:18 +00:00
Chris Lattner
a163568c03
improve a note.
...
llvm-svn: 60636
2008-12-07 00:15:10 +00:00