Skip to content
  1. Sep 12, 2011
  2. Jun 27, 2011
  3. May 22, 2011
    • Frits van Bommel's avatar
      Add a parameter to ConstantFoldTerminator() that callers can use to ask it to... · ad964559
      Frits van Bommel authored
      Add a parameter to ConstantFoldTerminator() that callers can use to ask it to also clean up the condition of any conditional terminator it folds to be unconditional, if that turns the condition into dead code. This just means it calls RecursivelyDeleteTriviallyDeadInstructions() in strategic spots. It defaults to the old behavior.
      
      I also changed -simplifycfg, -jump-threading and -codegenprepare to use this to produce slightly better code without any extra cleanup passes (AFAICT this was the only place in -simplifycfg where now-dead conditions of replaced terminators weren't being cleaned up). The only other user of this function is -sccp, but I didn't read that thoroughly enough to figure out whether it might be holding pointers to instructions that could be deleted by this.
      
      llvm-svn: 131855
      ad964559
  4. May 05, 2011
  5. Apr 14, 2011
  6. Mar 30, 2011
  7. Feb 18, 2011
    • Chris Lattner's avatar
      prevent jump threading from merging blocks when their address is · 1a924e77
      Chris Lattner authored
      taken (and used!).  This prevents merging the blocks (invalidating
      the block addresses) in a case like this:
      
      #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
      
      void foo() {
        printf("%p\n", _THIS_IP_);
        printf("%p\n", _THIS_IP_);
        printf("%p\n", _THIS_IP_);
      }
      
      which fixes PR4151.
      
      llvm-svn: 125829
      1a924e77
  8. Dec 16, 2010
    • Frits van Bommel's avatar
      Fix a bug in the loop in JumpThreading::ProcessThreadableEdges() where it... · 9bbe849f
      Frits van Bommel authored
      Fix a bug in the loop in JumpThreading::ProcessThreadableEdges() where it could falsely produce a MultipleDestSentinel value if the first predecessor ended with an 'indirectbr'. If that happened, it caused an unnecessary FindMostPopularDest() call.
      This wasn't a correctness problem, but it broke the fast path for single-predecessor blocks.
      
      llvm-svn: 121966
      9bbe849f
  9. Dec 15, 2010
  10. Dec 13, 2010
  11. Dec 07, 2010
  12. Dec 05, 2010
    • Frits van Bommel's avatar
      Refactor jump threading. · 76244867
      Frits van Bommel authored
      Should have no functional change other than the order of two transformations that are mutually-exclusive and the exact formatting of debug output.
      Internally, it now stores the ConstantInt*s as Constant*s, and actual undef values instead of nulls.
      
      llvm-svn: 120946
      76244867
    • Frits van Bommel's avatar
      Remove trailing whitespace. · 5e75ef4a
      Frits van Bommel authored
      llvm-svn: 120945
      5e75ef4a
  13. Oct 19, 2010
    • Owen Anderson's avatar
      Get rid of static constructors for pass registration. Instead, every pass... · 6c18d1aa
      Owen Anderson authored
      Get rid of static constructors for pass registration.  Instead, every pass exposes an initializeMyPassFunction(), which
      must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
      the pass's dependencies.
      
      Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
      CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
      before parsing commandline arguments.
      
      I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
      with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
      registration/creation, please send the testcase to me directly.
      
      llvm-svn: 116820
      6c18d1aa
  14. Oct 12, 2010
  15. Oct 08, 2010
  16. Sep 29, 2010
    • Owen Anderson's avatar
      Fix PR8247: JumpThreading can cause a block to become unreachable while still... · 99c985c3
      Owen Anderson authored
      Fix PR8247: JumpThreading can cause a block to become unreachable while still having predecessor, if it is part of a self-loop.
      Because of this, we cannot use the Simplify* APIs, as they can assert-fail on unreachable code.  Since it's not easy to determine
      if a given threading will cause a block to become unreachable, simply defer simplifying simplification to later InstCombine and/or
      DCE passes.
      
      llvm-svn: 115082
      99c985c3
  17. Sep 14, 2010
  18. Sep 05, 2010
  19. Sep 02, 2010
    • Duncan Sands's avatar
      Reapply commit 112699, speculatively reverted by echristo, since · 6778149f
      Duncan Sands authored
      I'm sure it is harmless.  Original commit message:
      If PrototypeValue is erased in the middle of using the SSAUpdator
      then the SSAUpdator may access freed memory.  Instead, simply pass
      in the type and name explicitly, which is all that was used anyway.
      
      llvm-svn: 112810
      6778149f
  20. Sep 01, 2010
  21. Aug 31, 2010
  22. Aug 27, 2010
  23. Aug 26, 2010
  24. Aug 24, 2010
  25. Aug 23, 2010
  26. Aug 19, 2010
Loading