Skip to content
  • Chris Lattner's avatar
    Allow the live interval analysis pass to be a bit more aggressive about · 76aa8e07
    Chris Lattner authored
    numbering values in live ranges for physical registers.
    
    The alpha backend currently generates code that looks like this:
    
      vreg = preg
    ...
      preg = vreg
      use preg
    ...
      preg = vreg
      use preg
    
    etc.  Because vreg contains the value of preg coming in, each of the
    copies back into preg contain that initial value as well.
    
    In the case of the Alpha, this allows this testcase:
    
    void "foo"(int %blah) {
            store int 5, int *%MyVar
            store int 12, int* %MyVar2
            ret void
    }
    
    to compile to:
    
    foo:
            ldgp $29, 0($27)
            ldiq $0,5
            stl $0,MyVar
            ldiq $0,12
            stl $0,MyVar2
            ret $31,($26),1
    
    instead of:
    
    foo:
            ldgp $29, 0($27)
            bis $29,$29,$0
            ldiq $1,5
            bis $0,$0,$29
            stl $1,MyVar
            ldiq $1,12
            bis $0,$0,$29
            stl $1,MyVar2
            ret $31,($26),1
    
    This does not seem to have any noticable effect on X86 code.
    
    This fixes PR535.
    
    llvm-svn: 20536
    76aa8e07
Loading