Skip to content
  1. Sep 11, 2006
  2. Sep 10, 2006
  3. Sep 09, 2006
  4. Sep 08, 2006
  5. Sep 07, 2006
    • Chris Lattner's avatar
      Throttle back tail duplication to avoid creating really ugly sequences of code. · c465046e
      Chris Lattner authored
      For Transforms/TailDup/if-tail-dup.ll, f.e., it produces:
      
      _foo:
              movl 8(%esp), %eax
              movl 4(%esp), %ecx
              testl $1, %ecx
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%eax)
      LBB1_2: #cond_next
              testl $2, %ecx
              je LBB1_4       #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%eax)
      LBB1_4: #cond_next10
              testl $4, %ecx
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%eax)
      LBB1_6: #cond_next18
              testl $8, %ecx
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%eax)
              ret
      LBB1_8: #return
              ret
      
      instead of:
      
      _foo:
              movl 4(%esp), %eax
              testl $2, %eax
              sete %cl
              movl 8(%esp), %edx
              testl $1, %eax
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%edx)
              testb %cl, %cl
              jne LBB1_4      #cond_next10
              jmp LBB1_3      #cond_true6
      LBB1_2: #cond_next
              testb %cl, %cl
              jne LBB1_4      #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%edx)
              testl $4, %eax
              je LBB1_6       #cond_next18
              jmp LBB1_5      #cond_true14
      LBB1_4: #cond_next10
              testl $4, %eax
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%edx)
              testl $8, %eax
              je LBB1_8       #return
              jmp LBB1_7      #cond_true22
      LBB1_6: #cond_next18
              testl $8, %eax
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%edx)
              ret
      LBB1_8: #return
              ret
      
      llvm-svn: 30158
      c465046e
Loading