Skip to content
  1. Dec 12, 2008
  2. Dec 11, 2008
  3. Dec 10, 2008
  4. Dec 09, 2008
    • Dan Gohman's avatar
      Rewrite the SDep class, and simplify some of the related code. · 2d170896
      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
      2d170896
    • Chris Lattner's avatar
      loosen up an assertion that isn't valid when called from · 0318b56f
      Chris Lattner authored
      invalidateCachedPointerInfo.  Thanks to Bill for sending me
      a testcase.
      
      llvm-svn: 60805
      0318b56f
    • Dan Gohman's avatar
      Minor code simplification. · 9356d8f7
      Dan Gohman authored
      llvm-svn: 60804
      9356d8f7
    • Bill Wendling's avatar
      Add sub/mul overflow intrinsics. This currently doesn't have a · db8ec2d7
      Bill Wendling authored
      target-independent way of determining overflow on multiplication. It's very
      tricky. Patch by Zoltan Varga!
      
      llvm-svn: 60800
      db8ec2d7
    • Chris Lattner's avatar
      Teach GVN to invalidate some memdep information when it does an RAUW · fa9f99aa
      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
      fa9f99aa
    • Duncan Sands's avatar
      Fix PR3117: not all nodes being legalized. The · 445071c4
      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
      445071c4
    • Chris Lattner's avatar
      Teach BasicAA::getModRefInfo(CallSite, CallSite) some · 702e46ed
      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
      702e46ed
Loading