[llvm-commits] CVS: llvm/lib/Target/IA64/IA64RegisterInfo.td

Duraid Madina duraid at octopus.com.au
Sat Apr 9 04:53:11 PDT 2005



Changes in directory llvm/lib/Target/IA64:

IA64RegisterInfo.td updated: 1.2 -> 1.3
---
Log message:

ok, the "ia64 has a boatload of registers" joke stopped being funny today ;)

  * fix overallocation of integer (stacked) registers: we can't allocate
  registers for local use if they are required as output registers

this fixes 'toast' in the test suite, and all sorts of larger programs
like bzip2 etc.



---
Diffs of the changes:  (+6 -1)

 IA64RegisterInfo.td |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/IA64/IA64RegisterInfo.td
diff -u llvm/lib/Target/IA64/IA64RegisterInfo.td:1.2 llvm/lib/Target/IA64/IA64RegisterInfo.td:1.3
--- llvm/lib/Target/IA64/IA64RegisterInfo.td:1.2	Wed Apr  6 01:17:54 2005
+++ llvm/lib/Target/IA64/IA64RegisterInfo.td	Sat Apr  9 06:53:00 2005
@@ -254,7 +254,12 @@
   {
     let Methods = [{
       iterator allocation_order_end(MachineFunction &MF) const {
-	return end()-7; // 7 special registers
+	int numReservedRegs=7; // the 7 special registers r0,r1,r2,r12,r13 etc
+	// we also can't allocate registers for use as locals if they're
+	// already required as 'out' registers
+	numReservedRegs+=MF.getInfo<IA64FunctionInfo>()->outRegsUsed;
+	
+	return end()-numReservedRegs; // hide registers appropriately
       }
   }];
 }






More information about the llvm-commits mailing list