summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-01-03 19:21:54 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-01-03 19:21:54 +0000
commit58873566b3718a6b2730e7d726491398766a39a4 (patch)
tree95885e037ec4064b92202d0a8d15fb4d803b4c8a /llvm/lib/Target/Sparc
parente891c5f2648c85a31c57c2cc63f76a5b95da86d3 (diff)
downloadbcm5719-llvm-58873566b3718a6b2730e7d726491398766a39a4.tar.gz
bcm5719-llvm-58873566b3718a6b2730e7d726491398766a39a4.zip
Make the llvm mangler depend only on DataLayout.
Before this patch any program that wanted to know the final symbol name of a GlobalValue had to link with Target. This patch implements a compromise solution where the mangler uses DataLayout. This way, any tool that already links with Target (llc, clang) gets the exact behavior as before and new IR files can be mangled without linking with Target. With this patch the mangler is constructed with just a DataLayout and DataLayout is extended to include the information the Mangler needs. llvm-svn: 198438
Diffstat (limited to 'llvm/lib/Target/Sparc')
-rw-r--r--llvm/lib/Target/Sparc/SparcAsmPrinter.cpp3
-rw-r--r--llvm/lib/Target/Sparc/SparcTargetMachine.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index a84baea7c21..e2115a7c4ac 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -219,6 +219,7 @@ void SparcAsmPrinter::EmitFunctionBodyStart() {
void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum,
raw_ostream &O) {
+ const DataLayout *DL = TM.getDataLayout();
const MachineOperand &MO = MI->getOperand (opNum);
unsigned TF = MO.getTargetFlags();
#ifndef NDEBUG
@@ -318,7 +319,7 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum,
O << MO.getSymbolName();
break;
case MachineOperand::MO_ConstantPoolIndex:
- O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
+ O << DL->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
<< MO.getIndex();
break;
default:
diff --git a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
index ac26765aecf..83f3474759b 100644
--- a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+++ b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
@@ -25,7 +25,7 @@ extern "C" void LLVMInitializeSparcTarget() {
static std::string computeDataLayout(const SparcSubtarget &ST) {
// Sparc is big endian.
- std::string Ret = "E";
+ std::string Ret = "E-m:e";
// Some ABIs have 32bit pointers.
if (!ST.is64Bit())
OpenPOWER on IntegriCloud