Skip to content
  1. Dec 11, 2008
  2. Dec 10, 2008
  3. 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
    • Chris Lattner's avatar
      Fix a fixme: allow memdep to see past read-only calls when doing · 41efb68c
      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
      41efb68c
    • Chris Lattner's avatar
      rename getNonLocalDependency -> getNonLocalCallDependency, and remove · 254314e6
      Chris Lattner authored
      pointer stuff from it, simplifying the code a bit.
      
      llvm-svn: 60783
      254314e6
    • Chris Lattner's avatar
      Switch GVN::processNonLocalLoad to using the new · b6fc4b8d
      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
      b6fc4b8d
    • Chris Lattner's avatar
      random cleanups, no functionality change. · 0a5a8d54
      Chris Lattner authored
      llvm-svn: 60779
      0a5a8d54
    • Evan Cheng's avatar
      xfail this for now. · 058522f1
      Evan Cheng authored
      llvm-svn: 60777
      058522f1
    • Evan Cheng's avatar
      8f81e4e3
    • Evan Cheng's avatar
      Cosmetic changes. · 74a24b26
      Evan Cheng authored
      llvm-svn: 60771
      74a24b26
    • Nuno Lopes's avatar
      remove unused var · 10ab44a3
      Nuno Lopes authored
      llvm-svn: 60770
      10ab44a3
    • Dan Gohman's avatar
      Whitespace cleanups. · 7d329740
      Dan Gohman authored
      llvm-svn: 60769
      7d329740
Loading