Adjust to MachineConstantPool interface change: instead of keeping a
value/alignment pair for each constant, keep a value/offset pair.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26078 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/ExecutionEngine/JIT/JITEmitter.cpp b/lib/ExecutionEngine/JIT/JITEmitter.cpp
index 5309692..3f41222 100644
--- a/lib/ExecutionEngine/JIT/JITEmitter.cpp
+++ b/lib/ExecutionEngine/JIT/JITEmitter.cpp
@@ -569,14 +569,17 @@
   const std::vector<MachineConstantPoolEntry> &Constants = MCP->getConstants();
   if (Constants.empty()) return;
 
-  for (unsigned i = 0, e = Constants.size(); i != e; ++i) {
-    const Type *Ty = Constants[i].Val->getType();
-    unsigned Size      = (unsigned)TheJIT->getTargetData().getTypeSize(Ty);
-    unsigned Alignment = Constants[i].Alignment;
+  unsigned Size = Constants.back().Offset;
+  Size += TheJIT->getTargetData().getTypeSize(Constants.back().Val->getType());
 
-    void *Addr = MemMgr.allocateConstant(Size, Alignment);
-    TheJIT->InitializeMemory(Constants[i].Val, Addr);
-    ConstantPoolAddresses.push_back(Addr);
+  void *Addr = MemMgr.allocateConstant(Size, 
+                                       1 << MCP->getConstantPoolAlignment());
+
+  // FIXME: Can eliminate ConstantPoolAddresses!
+  for (unsigned i = 0, e = Constants.size(); i != e; ++i) {
+    void *CAddr = (char*)Addr+Constants[i].Offset;
+    TheJIT->InitializeMemory(Constants[i].Val, CAddr);
+    ConstantPoolAddresses.push_back(CAddr);
   }
 }