Skip to content
  • Chris Lattner's avatar
    Implement a signficant optimization for inline asm: · 22379734
    Chris Lattner authored
    When choosing between constraints with multiple options,
    like "ir", test to see if we can use the 'i' constraint and
    go with that if possible.  This produces more optimal ASM in
    all cases (sparing a register and an instruction to load it),
    and fixes inline asm like this:
    
    void test () {
      asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
    }
    
    Previously we would dump "42" into a memory location (which
    is ok for the 'm' constraint) which would cause a problem
    because the 'c' modifier is not valid on memory operands.
    
    Isn't it great how inline asm turns 'missed optimization'
    into 'compile failed'??
    
    Incidentally, this was the todo in 
    PowerPC/2007-04-24-InlineAsm-I-Modifier.ll
    
    Please do NOT pull this into Tak.
    
    llvm-svn: 50315
    22379734
Loading