Skip to content
  • Evan Cheng's avatar
    Added a late machine instruction copy propagation pass. This catches · 00b1a3cd
    Evan Cheng authored
    opportunities that only present themselves after late optimizations
    such as tail duplication .e.g.
    ## BB#1:
            movl    %eax, %ecx
            movl    %ecx, %eax
            ret
    
    The register allocator also leaves some of them around (due to false
    dep between copies from phi-elimination, etc.)
    
    This required some changes in codegen passes. Post-ra scheduler and the
    pseudo-instruction expansion passes have been moved after branch folding
    and tail merging. They were before branch folding before because it did
    not always update block livein's. That's fixed now. The pass change makes
    independently since we want to properly schedule instructions after
    branch folding / tail duplication.
    
    rdar://10428165
    rdar://10640363
    
    llvm-svn: 147716
    00b1a3cd
Loading