Skip to content
  1. Sep 11, 2010
  2. Sep 10, 2010
  3. Sep 08, 2010
    • Jakob Stoklund Olesen's avatar
      Remove dead code. · 79e838b0
      Jakob Stoklund Olesen authored
      llvm-svn: 113386
      79e838b0
    • Jakob Stoklund Olesen's avatar
      Don't add <imp-def> operands during register rewriting. · 4d19d265
      Jakob Stoklund Olesen authored
      LiveIntervals already adds <imp-def> operands for super-registers when a subreg
      def defines the whole register. Thus, it is not necessary to do it again when
      rewriting.
      
      In fact, the super-register imp-defs caused miscompilations because the late
      scheduler couldn't see that the super-register was read.
      
      We still add super-reg <imp-use,kill> operands when rewriting virtuals to
      physicals.
      
      llvm-svn: 113299
      4d19d265
  4. Sep 05, 2010
    • Chris Lattner's avatar
      add a comment about where this should eventually move. · 419d0aa0
      Chris Lattner authored
      llvm-svn: 113117
      419d0aa0
    • Lang Hames's avatar
      Added initialisers for reduction rule counters. · 64a4a136
      Lang Hames authored
      llvm-svn: 113108
      64a4a136
    • Chris Lattner's avatar
      implement rdar://6653118 - fastisel should fold loads where possible. · eeba0c73
      Chris Lattner authored
      Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
      for example, before, this code:
      
      int foo(int x, int y, int z) {
        return x+y+z;
      }
      
      used to compile into:
      
      _foo:                                   ## @foo
      	subq	$12, %rsp
      	movl	%edi, 8(%rsp)
      	movl	%esi, 4(%rsp)
      	movl	%edx, (%rsp)
      	movl	8(%rsp), %edx
      	movl	4(%rsp), %esi
      	addl	%edx, %esi
      	movl	(%rsp), %edx
      	addl	%esi, %edx
      	movl	%edx, %eax
      	addq	$12, %rsp
      	ret
      
      Now we produce:
      
      _foo:                                   ## @foo
      	subq	$12, %rsp
      	movl	%edi, 8(%rsp)
      	movl	%esi, 4(%rsp)
      	movl	%edx, (%rsp)
      	movl	8(%rsp), %edx
      	addl	4(%rsp), %edx    ## Folded load
      	addl	(%rsp), %edx     ## Folded load
      	movl	%edx, %eax
      	addq	$12, %rsp
      	ret
      
      Fewer instructions and less register use = faster compiles.
      
      llvm-svn: 113102
      eeba0c73
  5. Sep 04, 2010
  6. Sep 03, 2010
  7. Sep 02, 2010
  8. Sep 01, 2010
  9. Aug 31, 2010
    • Jakob Stoklund Olesen's avatar
      Track liveness of unallocatable, unreserved registers in machine DCE. · 7993dae7
      Jakob Stoklund Olesen authored
      Reserved registers are unpredictable, and are treated as always live by machine
      DCE.
      
      Allocatable registers are never reserved, and can be used for virtual registers.
      
      Unreserved, unallocatable registers can not be used for virtual registers, but
      otherwise behave like a normal allocatable register. Most targets only have
      the flag register in this set.
      
      llvm-svn: 112649
      7993dae7
Loading