split "JumpTableDirective" (an existing hack) into a PIC and nonPIC
version. This allows TAI implementations to specify the directive to use based on the mode being codegen'd for. The real fix for this is to remove JumpTableDirective, but I don't feel like diving into the jumptable snarl just now. llvm-svn: 78709
This commit is contained in:
parent
d5a9179685
commit
fe27130454
|
@ -184,9 +184,11 @@ namespace llvm {
|
|||
|
||||
//===--- Section Switching Directives ---------------------------------===//
|
||||
|
||||
/// JumpTableDirective - if non-null, the directive to emit before a jump
|
||||
/// table.
|
||||
/// JumpTableDirective - if non-null, the directive to emit before jump
|
||||
/// table entries. FIXME: REMOVE THIS.
|
||||
const char *JumpTableDirective;
|
||||
const char *PICJumpTableDirective;
|
||||
|
||||
|
||||
//===--- Global Variable Emission Directives --------------------------===//
|
||||
|
||||
|
@ -418,8 +420,8 @@ namespace llvm {
|
|||
const char *getAscizDirective() const {
|
||||
return AscizDirective;
|
||||
}
|
||||
const char *getJumpTableDirective() const {
|
||||
return JumpTableDirective;
|
||||
const char *getJumpTableDirective(bool isPIC) const {
|
||||
return isPIC ? PICJumpTableDirective : JumpTableDirective;
|
||||
}
|
||||
const char *getAlignDirective() const {
|
||||
return AlignDirective;
|
||||
|
|
|
@ -923,9 +923,7 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNum) {
|
|||
O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber()
|
||||
<< '_' << JTI << '_' << MO2.getImm() << ":\n";
|
||||
|
||||
const char *JTEntryDirective = TAI->getJumpTableDirective();
|
||||
if (!JTEntryDirective)
|
||||
JTEntryDirective = TAI->getData32bitsDirective();
|
||||
const char *JTEntryDirective = TAI->getData32bitsDirective();
|
||||
|
||||
const MachineFunction *MF = MI->getParent()->getParent();
|
||||
const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
|
@ -947,10 +945,8 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNum) {
|
|||
<< "_set_" << MBB->getNumber();
|
||||
else if (TM.getRelocationModel() == Reloc::PIC_) {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
// If the arch uses custom Jump Table directives, don't calc relative to JT
|
||||
if (!TAI->getJumpTableDirective())
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI"
|
||||
<< getFunctionNumber() << '_' << JTI << '_' << MO2.getImm();
|
||||
O << '-' << TAI->getPrivateGlobalPrefix() << "JTI"
|
||||
<< getFunctionNumber() << '_' << JTI << '_' << MO2.getImm();
|
||||
} else {
|
||||
printBasicBlockLabel(MBB, false, false, false);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,6 @@ using namespace llvm;
|
|||
AlphaTargetAsmInfo::AlphaTargetAsmInfo() {
|
||||
AlignmentIsInBytes = false;
|
||||
PrivateGlobalPrefix = "$";
|
||||
JumpTableDirective = ".gprel32";
|
||||
PICJumpTableDirective = ".gprel32";
|
||||
WeakRefDirective = "\t.weak\t";
|
||||
}
|
||||
|
|
|
@ -24,7 +24,5 @@ MipsTargetAsmInfo::MipsTargetAsmInfo(const MipsTargetMachine &TM) {
|
|||
PrivateGlobalPrefix = "$";
|
||||
CommentString = "#";
|
||||
ZeroDirective = "\t.space\t";
|
||||
|
||||
if (TM.getRelocationModel() == Reloc::PIC_)
|
||||
JumpTableDirective = "\t.gpword\t";
|
||||
PICJumpTableDirective = "\t.gpword\t";
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ TargetAsmInfo::TargetAsmInfo() {
|
|||
AlignmentIsInBytes = true;
|
||||
TextAlignFillValue = 0;
|
||||
JumpTableDirective = 0;
|
||||
PICJumpTableDirective = 0;
|
||||
GlobalDirective = "\t.globl\t";
|
||||
SetDirective = 0;
|
||||
LCOMMDirective = 0;
|
||||
|
|
Loading…
Reference in New Issue