Skip to content
  1. Dec 09, 2010
  2. Dec 07, 2010
  3. Dec 01, 2010
  4. Nov 29, 2010
  5. Nov 23, 2010
  6. Nov 22, 2010
  7. Nov 21, 2010
    • Chris Lattner's avatar
      optimize: · f7e89613
      Chris Lattner authored
      void a(int x) { if (((1<<x)&8)==0) b(); }
      
      into "x != 3", which occurs over 100 times in 403.gcc but in no
      other program in llvm-test.
      
      llvm-svn: 119922
      f7e89613
  8. Nov 17, 2010
  9. Nov 14, 2010
    • Duncan Sands's avatar
      Teach InstructionSimplify about phi nodes. I chose to have it simply · 4581ddc1
      Duncan Sands authored
      offload the work to hasConstantValue rather than do something more
      complicated (such handling mutually recursive phis) because (1) it is
      not clear it is worth it; and (2) if it is worth it, maybe such logic
      would be better placed in hasConstantValue.  Adjust some GVN tests
      which are now cleaned up much further (eg: all phi nodes are removed).
      
      llvm-svn: 119043
      4581ddc1
  10. Nov 13, 2010
    • Duncan Sands's avatar
      Generalize the reassociation transform in SimplifyCommutative (now renamed to · 641baf16
      Duncan Sands authored
      SimplifyAssociativeOrCommutative) "(A op C1) op C2" -> "A op (C1 op C2)",
      which previously was only done if C1 and C2 were constants, to occur whenever
      "C1 op C2" simplifies (a la InstructionSimplify).  Since the simplifying operand
      combination can no longer be assumed to be the right-hand terms, consider all of
      the possible permutations.  When compiling "gcc as one big file", transform 2
      (i.e. using right-hand operands) fires about 4000 times but it has to be said
      that most of the time the simplifying operands are both constants.  Transforms
      3, 4 and 5 each fired once.  Transform 6, which is an existing transform that
      I didn't change, never fired.  With this change, the testcase is now optimized
      perfectly with one run of instcombine (previously it required instcombine +
      reassociate + instcombine, and it may just have been luck that this worked).
      
      llvm-svn: 119002
      641baf16
  11. Nov 10, 2010
  12. Nov 01, 2010
  13. Oct 30, 2010
  14. Oct 28, 2010
  15. Oct 25, 2010
  16. Oct 23, 2010
  17. Oct 22, 2010
  18. 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
  19. Oct 08, 2010
  20. Oct 07, 2010
  21. Oct 01, 2010
  22. Sep 29, 2010
  23. Sep 14, 2010
  24. Sep 13, 2010
  25. Sep 12, 2010
  26. Sep 11, 2010
    • Owen Anderson's avatar
      Invert and-of-or into or-of-and when doing so would allow us to clear bits of the and's mask. · 70f45244
      Owen Anderson authored
      This can result in increased opportunities for store narrowing in code generation.  Update a number of
      tests for this change.  This fixes <rdar://problem/8285027>.
      
      Additionally, because this inverts the order of ors and ands, some patterns for optimizing or-of-and-of-or
      no longer fire in instances where they did originally.  Add a simple transform which recaptures most of these
      opportunities: if we have an or-of-constant-or and have failed to fold away the inner or, commute the order 
      of the two ors, to give the non-constant or a chance for simplification instead.
      
      llvm-svn: 113679
      70f45244
  27. Sep 10, 2010
Loading