Use addGlobalAddress and addMBB for call & branch targets instead of addPCDisp.
Abort if we see a PCRelativeDisp MachineOperand, to be safe. This matches
the X86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14202 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Sparc/SparcV8ISelSimple.cpp b/lib/Target/Sparc/SparcV8ISelSimple.cpp
index 8d308ed..50e58dc 100644
--- a/lib/Target/Sparc/SparcV8ISelSimple.cpp
+++ b/lib/Target/Sparc/SparcV8ISelSimple.cpp
@@ -452,7 +452,7 @@
.addReg (ArgReg);
}
- BuildMI (BB, V8::CALL, 1).addPCDisp (I.getOperand (0));
+ BuildMI (BB, V8::CALL, 1).addGlobalAddress(I.getCalledFunction (), true);
if (I.getType () == Type::VoidTy)
return;
unsigned DestReg = getReg (I);
@@ -509,7 +509,7 @@
BasicBlock *takenSucc = I.getSuccessor (0);
if (!I.isConditional()) { // Unconditional branch?
if (I.getSuccessor(0) != NextBB)
- BuildMI (BB, V8::BA, 1).addPCDisp (takenSucc);
+ BuildMI (BB, V8::BA, 1).addMBB (MBBMap[takenSucc]);
return;
}
@@ -519,11 +519,11 @@
BuildMI (BB, V8::CMPri, 2).addSImm (0).addReg (CondReg);
if (notTakenSucc == NextBB) {
if (takenSucc != NextBB)
- BuildMI (BB, V8::BNE, 1).addPCDisp (takenSucc);
+ BuildMI (BB, V8::BNE, 1).addMBB (MBBMap[takenSucc]);
} else {
- BuildMI (BB, V8::BE, 1).addPCDisp (notTakenSucc);
+ BuildMI (BB, V8::BE, 1).addMBB (MBBMap[notTakenSucc]);
if (takenSucc != NextBB)
- BuildMI (BB, V8::BA, 1).addPCDisp (takenSucc);
+ BuildMI (BB, V8::BA, 1).addMBB (MBBMap[takenSucc]);
}
}