Skip to content
  1. Oct 31, 2010
    • Bill Wendling's avatar
      Disable the peephole optimizer until 186.crafty on armv6 is fixed. This is what · 0392f1b4
      Bill Wendling authored
      looks like is happening:
      
      Without the peephole optimizer:
        (1)   sub     r6, r6, #32
              orr     r12, r12, lr, lsl r9
              orr     r2, r2, r3, lsl r10
        (x)   cmp     r6, #0
              ldr     r9, LCPI2_10
              ldr     r10, LCPI2_11
        (2)   sub     r8, r8, #32
        (a)   movge   r12, lr, lsr r6
        (y)   cmp     r8, #0
      LPC2_10:
              ldr     lr, [pc, r10]
        (b)   movge   r2, r3, lsr r8
      
      With the peephole optimizer:
              ldr     r9, LCPI2_10
              ldr     r10, LCPI2_11
        (1*)  subs    r6, r6, #32
        (2*)  subs    r8, r8, #32
        (a*)  movge   r12, lr, lsr r6
        (b*)  movge   r2, r3, lsr r8
      
      (1) is used by (x) for the conditional move at (a). (2) is used by (y) for the
      conditional move at (b). After the peephole optimizer, these the flags resulting
      from (1*) are ignored and only the flags from (2*) are considered for both
      conditional moves.
      
      llvm-svn: 117876
      0392f1b4
  2. 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
  3. Oct 18, 2010
  4. Oct 12, 2010
  5. Oct 08, 2010
  6. Sep 21, 2010
  7. Sep 14, 2010
  8. Sep 11, 2010
  9. Sep 10, 2010
  10. Aug 27, 2010
  11. Aug 10, 2010
  12. Aug 06, 2010
  13. Aug 03, 2010
  14. Jul 22, 2010
  15. Jul 08, 2010
  16. Jun 09, 2010
    • Bill Wendling's avatar
      It's an error to translate this: · 5ac1d23d
      Bill Wendling authored
         %reg1025 = <sext> %reg1024
          ...
         %reg1026 = SUBREG_TO_REG 0, %reg1024, 4
      
      into this:
      
         %reg1025 = <sext> %reg1024
          ...
         %reg1027 = EXTRACT_SUBREG %reg1025, 4
         %reg1026 = SUBREG_TO_REG 0, %reg1027, 4
      
      The problem here is that SUBREG_TO_REG is there to assert that an implicit zext
      occurs. It doesn't insert a zext instruction. If we allow the EXTRACT_SUBREG
      here, it will give us the value after the <sext>, not the original value of
      %reg1024 before <sext>.
      
      llvm-svn: 105741
      5ac1d23d
  17. Mar 26, 2010
  18. Feb 09, 2010
  19. Jan 19, 2010
  20. Jan 13, 2010
Loading