fix stack corruption! Previously, 16-byte whole-FP-register stores were
authorDuraid Madina <duraid@octopus.com.au>
Thu, 26 Jan 2006 09:45:03 +0000 (09:45 +0000)
committerDuraid Madina <duraid@octopus.com.au>
Thu, 26 Jan 2006 09:45:03 +0000 (09:45 +0000)
being treated as needing only 8 bytes (though they were 16 byte aligned.)

This should fix a bunch of tests - anyone have any comments, though?

  - in Target.td , SpillSize and SpillAlignment seem dead - is this what
    Size and Alignment do now?
  - in CodeGenRegisters.h/CodeGenTarget.cpp , DeclaredSpillSize and
    DeclaredSpillAlignment seem dead.
  - there are a bunch of comments here and there that don't clearly
    distinguish between 'size' and 'spillsize' etc. hmm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25644 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/IA64/IA64RegisterInfo.td

index 28a4560339a6b6648c66012681bf3f94ed0af72c..4447113607a0752064735354dfb7a200d4780c9a 100644 (file)
@@ -283,10 +283,7 @@ def GR : RegisterClass<"IA64", [i64], 64,
 
 // these are the scratch (+stacked) FP registers
 
-// the 128 here is to make stf.spill/ldf.fill happy,
-// when storing full (82-bit) FP regs to stack slots
-// we need to 16-byte align
-def FP : RegisterClass<"IA64", [f64], 128, 
+def FP : RegisterClass<"IA64", [f64], 64, 
        [F6, F7, 
        F8, F9, F10, F11, F12, F13, F14, F15, 
        F32, F33, F34, F35, F36, F37, F38, F39, 
@@ -303,6 +300,12 @@ def FP : RegisterClass<"IA64", [f64], 128,
        F120, F121, F122, F123, F124, F125, F126, F127,
        F0, F1]> // these last two are hidden
   {
+// the 128s here are to make stf.spill/ldf.fill happy,
+// when storing full (82-bit) FP regs to stack slots
+// we need to 16-byte align
+    let Size=128;
+    let Alignment=128;
+
     let MethodProtos = [{
     iterator allocation_order_begin(MachineFunction &MF) const;
     iterator allocation_order_end(MachineFunction &MF) const;