Skip to content
  1. Dec 18, 2008
    • Bill Wendling's avatar
      Didn't mean to commit this. · 070de29f
      Bill Wendling authored
      llvm-svn: 61222
      070de29f
    • Bill Wendling's avatar
      Re-XFAIL this test until debug stuff settles down. · 4c13e77d
      Bill Wendling authored
      llvm-svn: 61219
      4c13e77d
    • Nick Lewycky's avatar
      Oops! Left out a line. · c3a70ade
      Nick Lewycky authored
      Simplifying the sdiv might allow further simplifications for our users.
      
      llvm-svn: 61196
      c3a70ade
    • Nick Lewycky's avatar
      0f0e63fe
    • Dale Johannesen's avatar
      Revert previous patch, appears to break bootstrap. · 3e5843b9
      Dale Johannesen authored
      llvm-svn: 61181
      3e5843b9
    • Dale Johannesen's avatar
      Fix the time regression I introduced in 464.h264ref with · 12d031b7
      Dale Johannesen authored
      my last patch to this file.
      
      The issue there was that all uses of an IV inside a loop
      are actually references to Base[IV*2], and there was one
      use outside that was the same but LSR didn't see the base
      or the scaling because it didn't recurse into uses outside
      the loop; thus, it used base+IV*scale mode inside the loop
      instead of pulling base out of the loop.  This was extra bad
      because register pressure later forced both base and IV into
      memory.  Doing that recursion, at least enough
      to figure out addressing modes, is a good idea in general;
      the change in AddUsersIfInteresting does this.  However,
      there were side effects....
      
      It is also possible for recursing outside the loop to
      introduce another IV where there was only 1 before (if
      the refs inside are not scaled and the ref outside is).
      I don't think this is a common case, but it's in the testsuite.
      It is right to be very aggressive about getting rid of
      such introduced IVs (CheckForIVReuse and the handling of
      nonzero RewriteFactor in StrengthReduceStridedIVUsers).
      In the testcase in question the new IV produced this way
      has both a nonconstant stride and a nonzero base, neither
      of which was handled before.  (This patch does not handle 
      all the cases where this can happen.)  And when inserting 
      new code that feeds into a PHI, it's right to put such 
      code at the original location rather than in the PHI's 
      immediate predecessor(s) when the original location is outside 
      the loop (a case that couldn't happen before)
      (RewriteInstructionToUseNewBase); better to avoid making
      multiple copies of it in this case.
      
      Everything above is exercised in
      CodeGen/X86/lsr-negative-stride.ll (and ifcvt4 in ARM which is
      the same IR).
      
      llvm-svn: 61178
      12d031b7
    • Chris Lattner's avatar
      reapply this hunk from Bill's reversion in r61169, it is conservative · b6372933
      Chris Lattner authored
      and safe and orthogonal from turning off load pre.
      
      llvm-svn: 61177
      b6372933
    • Bill Wendling's avatar
      Temporarily revert r61027. It was causing a bootstrap failure in "release" mode · be4fb8a2
      Bill Wendling authored
      with everyone's favorite error messages:
      
      Comparing stages 2 and 3
      warning: ./cc1-checksum.o differs
      warning: ./cc1plus-checksum.o differs
      Bootstrap comparison failure!
      ./c-decl.o differs
      ./cp/decl.o differs
      ./df-core.o differs
      ./gcc.o differs
      ./i386.o differs
      ./stor-layout.o differs
      ./tree-pretty-print.o differs
      ./tree.o differs
      make[2]: *** [compare] Error 1
      make[1]: *** [stage3-bubble] Error 2
      
      See PR3227.
      
      llvm-svn: 61169
      be4fb8a2
  2. Dec 16, 2008
  3. Dec 15, 2008
  4. Dec 14, 2008
  5. Dec 13, 2008
    • Bill Wendling's avatar
      Temporarily revert r60973. It's inexplicably causing a failure when self-hosting LLVM: · 293b9181
      Bill Wendling authored
      llvm[2]: Linking Release executable opt (without symbols)
      ...
      Undefined symbols:
        "llvm::APFloat::IEEEsingle", referenced from:
            __ZN4llvm7APFloat10IEEEsingleE$non_lazy_ptr in libLLVMCore.a(Constants.o)
            __ZN4llvm7APFloat10IEEEsingleE$non_lazy_ptr in libLLVMCore.a(AsmWriter.o)
            __ZN4llvm7APFloat10IEEEsingleE$non_lazy_ptr in libLLVMCore.a(ConstantFold.o)
        "llvm::APFloat::IEEEdouble", referenced from:
            __ZN4llvm7APFloat10IEEEdoubleE$non_lazy_ptr in libLLVMCore.a(Constants.o)
            __ZN4llvm7APFloat10IEEEdoubleE$non_lazy_ptr in libLLVMCore.a(AsmWriter.o)
            __ZN4llvm7APFloat10IEEEdoubleE$non_lazy_ptr in libLLVMCore.a(ConstantFold.o)
      ld: symbol(s) not found
      
      This is in release mode. To replicate, compile llvm and llvm-gcc in optimized
      mode. Then build llvm, in optimized mode, with the newly created compiler.
      
      llvm-svn: 60977
      293b9181
    • Chris Lattner's avatar
      make RLE preserve the name of the load that it replaces. This is just · 1e29f7c9
      Chris Lattner authored
      a pretification of the IR.
      
      llvm-svn: 60973
      1e29f7c9
  6. Dec 09, 2008
    • 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
    • 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
    • Chris Lattner's avatar
      Fix a really subtle off-by-one bug that Duncan noticed with valgrind · 56b20ffc
      Chris Lattner authored
      on test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.
      
      llvm-svn: 60739
      56b20ffc
  7. Dec 08, 2008
  8. Dec 07, 2008
  9. Dec 06, 2008
  10. Dec 05, 2008
    • Dale Johannesen's avatar
      Make LoopStrengthReduce smarter about hoisting things out of · 9efd2ce5
      Dale Johannesen authored
      loops when they can be subsumed into addressing modes.
      
      Change X86 addressing mode check to realize that
      some PIC references need an extra register.
      (I believe this is correct for Linux, if not, I'm sure
      someone will tell me.)
      
      llvm-svn: 60608
      9efd2ce5
    • Chris Lattner's avatar
      Make a few major changes to memdep and its clients: · 0e3d6337
      Chris Lattner authored
      1. Merge the 'None' result into 'Normal', making loads
         and stores return their dependencies on allocations as Normal.
      2. Split the 'Normal' result into 'Clobber' and 'Def' to
         distinguish between the cases when memdep knows the value is
         produced from when we just know if may be changed.
      3. Move some of the logic for determining whether readonly calls
         are CSEs into memdep instead of it being in GVN.  This still
         leaves verification that the arguments are hte same to GVN to
         let it know about value equivalences in different contexts.
      4. Change memdep's call/call dependency analysis to use 
         getModRefInfo(CallSite,CallSite) instead of doing something 
         very weak.  This only really matters for things like DSA, but
         someday maybe we'll have some other decent context sensitive
         analyses :)
      5. This reimplements the guts of memdep to handle the new results.
      6. This simplifies GVN significantly:
         a) readonly call CSE is slightly simpler
         b) I eliminated the "getDependencyFrom" chaining for load 
            elimination and load CSE doesn't have to worry about 
            volatile (they are always clobbers) anymore.
         c) GVN no longer does any 'lastLoad' caching, leaving it to 
            memdep.
      7. The logic in DSE is simplified a bit and sped up.  A potentially
         unsafe case was eliminated.
      
      llvm-svn: 60607
      0e3d6337
    • Anton Korobeynikov's avatar
      Revert invalid r60393. It causes llvm-gcc bootstrap fails in release builds. · 24600bf0
      Anton Korobeynikov authored
      See PR3160 for details
      
      llvm-svn: 60604
      24600bf0
    • Chris Lattner's avatar
      Fix test/Transforms/GVN/pre-load.ll · c1008280
      Chris Lattner authored
      llvm-svn: 60594
      c1008280
    • Chris Lattner's avatar
      Make IsValueFullyAvailableInBlock safe. · d2a653af
      Chris Lattner authored
      llvm-svn: 60588
      d2a653af
  11. Dec 04, 2008
  12. Dec 03, 2008
Loading