[llvm-commits] [llvm] r55868 - in /llvm/trunk/lib/Target: CellSPU/SPUInstrBuilder.h IA64/IA64InstrBuilder.h PowerPC/PPCInstrBuilder.h X86/X86FastISel.cpp X86/X86InstrBuilder.h

Owen Anderson resistor at mac.com
Fri Sep 5 18:11:02 PDT 2008


Author: resistor
Date: Fri Sep  5 20:11:01 2008
New Revision: 55868

URL: http://llvm.org/viewvc/llvm-project?rev=55868&view=rev
Log:
Fix constant pool loads, and remove broken versions of addConstantPoolReference.

Modified:
    llvm/trunk/lib/Target/CellSPU/SPUInstrBuilder.h
    llvm/trunk/lib/Target/IA64/IA64InstrBuilder.h
    llvm/trunk/lib/Target/PowerPC/PPCInstrBuilder.h
    llvm/trunk/lib/Target/X86/X86FastISel.cpp
    llvm/trunk/lib/Target/X86/X86InstrBuilder.h

Modified: llvm/trunk/lib/Target/CellSPU/SPUInstrBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUInstrBuilder.h?rev=55868&r1=55867&r2=55868&view=diff

==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUInstrBuilder.h (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUInstrBuilder.h Fri Sep  5 20:11:01 2008
@@ -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

Modified: llvm/trunk/lib/Target/IA64/IA64InstrBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/IA64/IA64InstrBuilder.h?rev=55868&r1=55867&r2=55868&view=diff

==============================================================================
--- llvm/trunk/lib/Target/IA64/IA64InstrBuilder.h (original)
+++ llvm/trunk/lib/Target/IA64/IA64InstrBuilder.h Fri Sep  5 20:11:01 2008
@@ -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

Modified: llvm/trunk/lib/Target/PowerPC/PPCInstrBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrBuilder.h?rev=55868&r1=55867&r2=55868&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCInstrBuilder.h (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCInstrBuilder.h Fri Sep  5 20:11:01 2008
@@ -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

Modified: llvm/trunk/lib/Target/X86/X86FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FastISel.cpp?rev=55868&r1=55867&r2=55868&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86FastISel.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86FastISel.cpp Fri Sep  5 20:11:01 2008
@@ -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;
 }
 

Modified: llvm/trunk/lib/Target/X86/X86InstrBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrBuilder.h?rev=55868&r1=55867&r2=55868&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrBuilder.h (original)
+++ llvm/trunk/lib/Target/X86/X86InstrBuilder.h Fri Sep  5 20:11:01 2008
@@ -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);
 }
 





More information about the llvm-commits mailing list