- Dec 09, 2008
-
-
Dan Gohman authored
The Cost field is removed. It was only being used in a very limited way, to indicate when the scheduler should attempt to protect a live register, and it isn't really needed to do that. If we ever want the scheduler to start inserting copies in non-prohibitive situations, we'll have to rethink some things anyway. A Latency field is added. Instead of giving each node a single fixed latency, each edge can have its own latency. This will eventually be used to model various micro-architecture properties more accurately. The PointerIntPair class and an internal union are now used, which reduce the overall size. llvm-svn: 60806
-
Chris Lattner authored
invalidateCachedPointerInfo. Thanks to Bill for sending me a testcase. llvm-svn: 60805
-
Dan Gohman authored
llvm-svn: 60804
-
Bill Wendling authored
target-independent way of determining overflow on multiplication. It's very tricky. Patch by Zoltan Varga! llvm-svn: 60800
-
Chris Lattner authored
of a pointer. This allows is to catch more equivalencies. For example, the type_lists_compatible_p function used to require two iterations of the gvn pass (!) to delete its 18 redundant loads because the first pass would CSE all the addressing computation cruft, which would unblock the second memdep/gvn passes from recognizing them. This change allows memdep/gvn to catch all 18 when run just once on the function (as is typical :) instead of just 3. On all of 403.gcc, this bumps up the # reundandancies found from: 63 gvn - Number of instructions PRE'd 153991 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted to: 63 gvn - Number of instructions PRE'd 154137 gvn - Number of instructions deleted 50185 gvn - Number of loads deleted +120 loads deleted isn't bad. llvm-svn: 60799
-
Duncan Sands authored
essential problem was that the DAG can contain random unused nodes which were never analyzed. When remapping a value of a node being processed, such a node may become used and need to be analyzed; however due to operands being transformed during analysis the node may morph into a different one. Users of the morphing node need to be updated, and this wasn't happening. While there I added a bunch of documentation and sanity checks, so I (or some other poor soul) won't have to scratch their head over this stuff so long trying to remember how it was all supposed to work next time some obscure problem pops up! The extra sanity checking exposed a few places where invariants weren't being preserved, so those are fixed too. Since some of the sanity checking is expensive, I added a flag to turn it on. It is also turned on when building with ENABLE_EXPENSIVE_CHECKS=1. llvm-svn: 60797
-
Chris Lattner authored
tricks based on readnone/readonly functions. Teach memdep to look past readonly calls when analyzing deps for a readonly call. This allows elimination of a few more calls from 403.gcc: before: 63 gvn - Number of instructions PRE'd 153986 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted after: 63 gvn - Number of instructions PRE'd 153991 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted 5 calls isn't much, but this adds plumbing for the next change. llvm-svn: 60794
-
Chris Lattner authored
load dependence queries. This allows GVN to eliminate a few more instructions on 403.gcc: 152598 gvn - Number of instructions deleted 49240 gvn - Number of loads deleted after: 153986 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted llvm-svn: 60786
-
Chris Lattner authored
pointer stuff from it, simplifying the code a bit. llvm-svn: 60783
-
Chris Lattner authored
MemDep::getNonLocalPointerDependency method. There are some open issues with this (missed optimizations) and plenty of future work, but this does allow GVN to eliminate *slightly* more loads (49246 vs 49033). Switching over now allows simplification of the other code path in memdep. llvm-svn: 60780
-
Chris Lattner authored
llvm-svn: 60779
-
Evan Cheng authored
llvm-svn: 60776
-
Evan Cheng authored
llvm-svn: 60771
-
Nuno Lopes authored
llvm-svn: 60770
-
Dan Gohman authored
llvm-svn: 60769
-
Duncan Sands authored
llvm-svn: 60755
-
Chris Lattner authored
llvm-svn: 60754
-
Bill Wendling authored
llvm-svn: 60753
-
Chris Lattner authored
the first block of a query specially. This makes the "complete query caching" subsystem more effective, avoiding predecessor queries. This speeds up GVN another 4%. llvm-svn: 60752
-
Chris Lattner authored
and split its inner loop out into a new GetNonLocalInfoForBlock function. No functionality change. llvm-svn: 60751
-
Evan Cheng authored
llvm-svn: 60750
-
Mon P Wang authored
one of its operand. llvm-svn: 60749
-
Nick Lewycky authored
llvm-svn: 60748
-
Chris Lattner authored
This speeds up the new GVN by another 3% llvm-svn: 60747
-
Chris Lattner authored
position instead of using a full sort. This speeds up GVN by ~4% with the new memdep stuff. llvm-svn: 60746
-
Chris Lattner authored
pred iterator. llvm-svn: 60745
-
Chris Lattner authored
queries. This speeds up GVN using the new queries (not yet checked in) by just over 10%. llvm-svn: 60743
-
Mon P Wang authored
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
-
Chris Lattner authored
on test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad. llvm-svn: 60739
-
Scott Michel authored
- 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
-
Bill Wendling authored
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
-
Dan Gohman authored
pipeline model. llvm-svn: 60733
-
Dan Gohman authored
for spotting these! llvm-svn: 60728
-
- Dec 08, 2008
-
-
Chris Lattner authored
jump threading has been shown to only expose problems not have bugs itself. I'm sure it's completely bug free! ;-) llvm-svn: 60725
-
Evan Cheng authored
llvm-svn: 60711
-
Dan Gohman authored
llvm-svn: 60707
-
Dan Gohman authored
llvm-svn: 60705
-
Devang Patel authored
Thanks Duncan! llvm-svn: 60702
-
Devang Patel authored
llvm-svn: 60701
-
Duncan Sands authored
llvm-svn: 60697
-