Constants are laid out in memory in PC-relative form.
authorMisha Brukman <brukman+llvm@gmail.com>
Tue, 3 Jun 2003 03:24:12 +0000 (03:24 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Tue, 3 Jun 2003 03:24:12 +0000 (03:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6568 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SparcV9/SparcV9CodeEmitter.cpp

index 6db466f3b33cba781a84a545afdf67768cd24736..e85115c3f806b7f88a21cf6281940eeb4c83638b 100644 (file)
@@ -195,7 +195,7 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
       BBRefs.push_back(std::make_pair(BB, std::make_pair(CurrPC, &MI)));
     } else if (Constant *C = dyn_cast<Constant>(V)) {
       if (ConstantMap.find(C) != ConstantMap.end())
-        rv = (int64_t)(intptr_t)ConstantMap[C];
+        rv = (int64_t)(intptr_t)ConstantMap[C] - MCE->getCurrentPCValue();
       else {
         std::cerr << "ERROR: constant not in map:" << MO << "\n";
         abort();