try to make a bug bugpointable, add yet more constant pool stuff, fixup constant loads for FP


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19985 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Alpha/AlphaISelPattern.cpp b/lib/Target/Alpha/AlphaISelPattern.cpp
index e8de3c8..344117d 100644
--- a/lib/Target/Alpha/AlphaISelPattern.cpp
+++ b/lib/Target/Alpha/AlphaISelPattern.cpp
@@ -351,7 +351,7 @@
 	{
 	  Select(Chain);
 	  AlphaLowering.restoreGP(BB);
-	  Opc = DestType == MVT::f64 ? Alpha::LDS : Alpha::LDT;
+	  Opc = DestType == MVT::f64 ? Alpha::LDS_SYM : Alpha::LDT_SYM;
 	  BuildMI(BB, Opc, 1, Result).addGlobalAddress(cast<GlobalAddressSDNode>(Address)->getGlobal());
 	}
       else if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(Address)) {
@@ -1046,19 +1046,25 @@
       SDOperand Chain   = N.getOperand(0);
       SDOperand Address = N.getOperand(1);
 
+      assert(DestType == MVT::i64 && "unknown Load dest type");
+
       if (Address.getOpcode() == ISD::GlobalAddress)
-	{
-	  Select(Chain);
-	  AlphaLowering.restoreGP(BB);
-	  BuildMI(BB, Alpha::LOAD, 1, Result).addGlobalAddress(cast<GlobalAddressSDNode>(Address)->getGlobal());
-	}
+        {
+          Select(Chain);
+          AlphaLowering.restoreGP(BB);
+          BuildMI(BB, Alpha::LOAD, 1, Result).addGlobalAddress(cast<GlobalAddressSDNode>(Address)->getGlobal());
+        }
+      else if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(Address)) {
+        AlphaLowering.restoreGP(BB);
+        BuildMI(BB, Alpha::LOAD, 1, Result).addConstantPoolIndex(CP->getIndex());
+      }
       else
-	{
-	  Select(Chain);
-	  Tmp2 = SelectExpr(Address);
-	  BuildMI(BB, Alpha::LDQ, 2, Result).addImm(0).addReg(Tmp2);
-	}
-      return Result;
+        {
+          Select(Chain);
+          Tmp2 = SelectExpr(Address);
+          BuildMI(BB, Alpha::LDQ, 2, Result).addImm(0).addReg(Tmp2);
+        }
+     return Result;
     }
   }