Constants are laid out in memory in PC-relative form.

llvm-svn: 6568
diff --git a/llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp b/llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
index 6db466f..e85115c 100644
--- a/llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
+++ b/llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
@@ -195,7 +195,7 @@
       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();