Fix constant pool loads, and remove broken versions of addConstantPoolReference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55868 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/CellSPU/SPUInstrBuilder.h b/lib/Target/CellSPU/SPUInstrBuilder.h
index 00721d1..5e268f8 100644
--- a/lib/Target/CellSPU/SPUInstrBuilder.h
+++ b/lib/Target/CellSPU/SPUInstrBuilder.h
@@ -38,18 +38,6 @@
     return MIB.addFrameIndex(FI).addImm(Offset);
 }
 
-/// addConstantPoolReference - This function is used to add a reference to the
-/// base of a constant value spilled to the per-function constant pool.  The
-/// reference has base register ConstantPoolIndex offset which is retained until
-/// either machine code emission or assembly output.  This allows an optional
-/// offset to be added as well.
-///
-inline const MachineInstrBuilder&
-addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI,
-                         int Offset = 0) {
-  return MIB.addImm(Offset).addConstantPoolIndex(CPI);
-}
-
 } // End llvm namespace
 
 #endif
diff --git a/lib/Target/IA64/IA64InstrBuilder.h b/lib/Target/IA64/IA64InstrBuilder.h
index 51b3744..a5d4dca53 100644
--- a/lib/Target/IA64/IA64InstrBuilder.h
+++ b/lib/Target/IA64/IA64InstrBuilder.h
@@ -34,18 +34,6 @@
     return MIB.addFrameIndex(FI).addImm(Offset);
 }
 
-/// addConstantPoolReference - This function is used to add a reference to the
-/// base of a constant value spilled to the per-function constant pool.  The
-/// reference has base register ConstantPoolIndex offset which is retained until
-/// either machine code emission or assembly output.  This allows an optional
-/// offset to be added as well.
-///
-inline const MachineInstrBuilder&
-addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI,
-                         int Offset = 0) {
-  return MIB.addImm(Offset).addConstantPoolIndex(CPI);
-}
-
 } // End llvm namespace
 
 #endif
diff --git a/lib/Target/PowerPC/PPCInstrBuilder.h b/lib/Target/PowerPC/PPCInstrBuilder.h
index edb5103..1de6911 100644
--- a/lib/Target/PowerPC/PPCInstrBuilder.h
+++ b/lib/Target/PowerPC/PPCInstrBuilder.h
@@ -38,18 +38,6 @@
     return MIB.addFrameIndex(FI).addImm(Offset);
 }
 
-/// addConstantPoolReference - This function is used to add a reference to the
-/// base of a constant value spilled to the per-function constant pool.  The
-/// reference has base register ConstantPoolIndex offset which is retained until
-/// either machine code emission or assembly output.  This allows an optional
-/// offset to be added as well.
-///
-inline const MachineInstrBuilder&
-addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI,
-                         int Offset = 0) {
-  return MIB.addImm(Offset).addConstantPoolIndex(CPI);
-}
-
 } // End llvm namespace
 
 #endif
diff --git a/lib/Target/X86/X86FastISel.cpp b/lib/Target/X86/X86FastISel.cpp
index bf939ab..211afd5 100644
--- a/lib/Target/X86/X86FastISel.cpp
+++ b/lib/Target/X86/X86FastISel.cpp
@@ -585,10 +585,6 @@
 
 unsigned X86FastISel::TargetMaterializeConstant(Constant *C,
                                                 MachineConstantPool* MCP) {
-  unsigned CPLoad = getRegForValue(C);
-  if (CPLoad != 0)
-    return CPLoad;
-  
   // Can't handle PIC-mode yet.
   if (TM.getRelocationModel() == Reloc::PIC_)
     return 0;
@@ -662,10 +658,17 @@
     return 0;
   }
   
+  // MachineConstantPool wants an explicit alignment.
+  unsigned Align =
+               TM.getTargetData()->getPreferredTypeAlignmentShift(C->getType());
+  if (Align == 0) {
+    // Alignment of vector types.  FIXME!
+    Align = TM.getTargetData()->getABITypeSize(C->getType());
+    Align = Log2_64(Align);
+  }
   
-  unsigned MCPOffset = MCP->getConstantPoolIndex(C, 0);
+  unsigned MCPOffset = MCP->getConstantPoolIndex(C, Align);
   addConstantPoolReference(BuildMI(MBB, TII.get(Opc), ResultReg), MCPOffset);
-  UpdateValueMap(C, ResultReg);
   return ResultReg;
 }
 
diff --git a/lib/Target/X86/X86InstrBuilder.h b/lib/Target/X86/X86InstrBuilder.h
index d4e10bb..b5924cb 100644
--- a/lib/Target/X86/X86InstrBuilder.h
+++ b/lib/Target/X86/X86InstrBuilder.h
@@ -119,9 +119,7 @@
 /// offset to be added as well.
 ///
 inline const MachineInstrBuilder &
-addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI,
-                         int Offset = 0) {
-  assert(Offset == 0 && "Non-zero offsets not supported!");
+addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI) {
   return MIB.addReg(0).addImm(1).addReg(0).addConstantPoolIndex(CPI);
 }