llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 2a821601f1 Allow the getRegForInlineAsmConstraint method to return a register class with
no fixes physreg.  Treat this as permission to use any register in the register
class.  When this happens and it is safe, allow the llvm register allcoator to
allocate the register instead of doing it at isel time.  This eliminates a ton
of copies around common inline asms.  For example:

int test2(int Y, int X) {
  asm("foo %0, %1" : "=r"(X): "r"(X));
  return X;
}

now compiles to:

_test2:
        foo r3, r4
        blr

instead of:

_test2:
        mr r2, r4
        foo r2, r2
        mr r3, r2
        blr

GCC produces:

_test2:
        foo r4, r4
        mr r3,r4
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31366 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-02 01:41:49 +00:00
..
DAGCombiner.cpp Add option for controlling inclusion of global AA. 2006-10-18 19:08:31 +00:00
LegalizeDAG.cpp Fix a typo which can break jumptables. 2006-10-31 02:31:00 +00:00
Makefile For PR780: 2006-07-26 16:18:00 +00:00
ScheduleDAG.cpp handle global address constant sdnodes 2006-10-31 20:01:56 +00:00
ScheduleDAGList.cpp s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| 2006-08-27 12:54:02 +00:00
ScheduleDAGRRList.cpp Clean up. 2006-11-01 22:39:30 +00:00
ScheduleDAGSimple.cpp s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| 2006-08-27 12:54:02 +00:00
SelectionDAG.cpp Print jumptable index. 2006-11-01 04:48:30 +00:00
SelectionDAGISel.cpp Allow the getRegForInlineAsmConstraint method to return a register class with 2006-11-02 01:41:49 +00:00
SelectionDAGPrinter.cpp Print jumptable index. 2006-11-01 04:48:30 +00:00
TargetLowering.cpp Change the prototype for TargetLowering::isOperandValidForConstraint 2006-10-31 19:40:43 +00:00