Skip to content
  1. Jun 25, 2012
    • Jakob Stoklund Olesen's avatar
      Run ProcessImplicitDefs on SSA form where it can be much simpler. · eb495664
      Jakob Stoklund Olesen authored
      Implicitly defined virtual registers can simply have the <undef> bit set
      on all uses, and copies can be turned into implicit defs recursively.
      
      Physical registers are a bit trickier. We handle the common case where a
      physreg def is used by a nearby instruction in the same basic block. For
      more complicated cases, just leave the IMPLICIT_DEF instruction in.
      
      llvm-svn: 159149
      eb495664
    • Jakob Stoklund Olesen's avatar
      Teach PHIElimination to handle <undef> operands. · 70ed924e
      Jakob Stoklund Olesen authored
      When a PHI use is <undef>, don't emit a copy in the predecessor block,
      but insert an IMPLICIT_DEF instruction instead. This ensures that
      virtual register uses are always jointly dominated by defs, even if some
      of them are IMPLICIT_DEF.
      
      llvm-svn: 159121
      70ed924e
    • Jakob Stoklund Olesen's avatar
      Handle <undef> operands in TwoAddressInstructionPass. · 6b556f82
      Jakob Stoklund Olesen authored
      When the source register to a 2-addr instruction is undefined, there is
      no need to attempt any transformations - simply replace the source
      register with the destination register.
      
      This also comes up when lowering IMPLICIT_DEF instructions - make sure
      the <undef> flag is moved to the new partial register def operand:
      
        %vreg8<def> = INSERT_SUBREG %vreg9<undef>, %vreg0<kill>, sub_16bit
      rewrite undef:
        %vreg8<def> = INSERT_SUBREG %vreg8<undef>, %vreg0<kill>, sub_16bit
      convert to:
        %vreg8:sub_16bit<def,read-undef> = COPY %vreg0<kill>
      
      llvm-svn: 159120
      6b556f82
  2. Jun 24, 2012
  3. Jun 23, 2012
  4. Jun 22, 2012
  5. Jun 21, 2012
  6. Jun 20, 2012
Loading