Skip to content
  • Evan Cheng's avatar
    - Revert some changes from 85044, 85045, and 85047 that broke x86_64 tests and · b81cb2a9
    Evan Cheng authored
      bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
      around.
    - Relax register scavenging to allow use of partially "not-live" registers. It's
      common for targets to operate on registers where the top bits are undef. e.g.
      s0 =
      d0 = insert_subreg d0<undef>, s0, 1
      ...
         = d0
      When the insert_subreg is eliminated by the coalescer, the scavenger used to
      complain. The previous fix was to keep to insert_subreg around. But that's
      brittle and it's overly conservative when we want to use the scavenger to 
      allocate registers. It's actually legal and desirable for other instructions
      to use the "undef" part of d0. e.g.
      s0 =
      d0 = insert_subreg d0<undef>, s0, 1
      ...
      s1 =
         = s1
         = d0
      We probably need add a "partial-undef" marker on machine operand so the
      machine verifier would not complain.
    
    llvm-svn: 85091
    b81cb2a9
Loading