llvm-6502/lib/CodeGen
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
..
SelectionDAG Allow the getRegForInlineAsmConstraint method to return a register class with 2006-11-02 01:41:49 +00:00
AsmPrinter.cpp Add a printSetLabel that takes two id's. 2006-11-01 09:23:08 +00:00
BranchFolding.cpp give branch folding a simple heuristic to decide which block to split so that 2006-11-01 19:36:29 +00:00
DwarfWriter.cpp 1. Clean up code due to changes in SwitchTo*Section(2) 2006-10-31 08:31:24 +00:00
ELFWriter.cpp Refactor a bunch of includes so that TargetMachine.h doesn't have to include 2006-05-12 06:33:49 +00:00
IntrinsicLowering.cpp For PR950: 2006-10-20 07:07:24 +00:00
LiveInterval.cpp When joining two intervals where the RHS is really simple, use a light-weight 2006-09-02 05:26:59 +00:00
LiveIntervalAnalysis.cpp Keep track of the start of MBB's in a separate map from instructions. This 2006-09-15 03:57:23 +00:00
LiveVariables.cpp Fix for PR929. The PHI nodes were being gone through for each instruction 2006-10-03 07:20:20 +00:00
LLVMTargetMachine.cpp Don't do dead block elimination in fast mode. 2006-10-24 16:11:49 +00:00
MachineBasicBlock.cpp add moveBefore/moveAfter helper methods 2006-10-24 00:02:26 +00:00
MachineDebugInfo.cpp Tighter data structure for deleted debug labels. 2006-10-24 11:50:43 +00:00
MachineFunction.cpp const'ify jump table stuff 2006-10-28 18:17:09 +00:00
MachineInstr.cpp be more aggressive about matching identical instructions. 2006-10-25 18:08:14 +00:00
MachinePassRegistry.cpp Final polish on machine pass registries. 2006-08-02 12:30:23 +00:00
MachOWriter.cpp Behold, more work on relocations. Things are looking pretty good now. 2006-09-10 23:03:44 +00:00
Makefile Fix linking on Alpha 2006-07-20 17:27:58 +00:00
Passes.cpp Work around a bug in gcc 3.3.5, reported by a user 2006-08-03 00:16:56 +00:00
PHIElimination.cpp "Once more into the breach, dear friends, once more, or fill the wall up 2006-09-28 07:10:24 +00:00
PhysRegTracker.h Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr 2004-02-23 06:10:13 +00:00
PrologEpilogInserter.cpp TargetRegisterClass specifies the desired spill alignment. However, it cannot be honored if stack alignment is smaller. 2006-09-28 18:52:32 +00:00
RegAllocLinearScan.cpp LinearScanner hotspot. 2006-10-24 14:35:25 +00:00
RegAllocLocal.cpp Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta. In particular, do not 2006-09-19 18:02:01 +00:00
RegAllocSimple.cpp Rename 2006-11-01 23:18:32 +00:00
TwoAddressInstructionPass.cpp Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together. 2006-11-01 23:06:55 +00:00
UnreachableBlockElim.cpp eliminate RegisterOpt. It does the same thing as RegisterPass. 2006-08-27 22:42:52 +00:00
VirtRegMap.cpp Rename 2006-11-01 23:18:32 +00:00
VirtRegMap.h Fix a long-standing wart in the code generator: two-address instruction lowering 2006-09-05 02:12:02 +00:00