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/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;
 }