aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Target/TargetAsmInfo.h10
-rw-r--r--lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp10
-rw-r--r--lib/Target/Alpha/AlphaTargetAsmInfo.cpp2
-rw-r--r--lib/Target/Mips/MipsTargetAsmInfo.cpp4
-rw-r--r--lib/Target/TargetAsmInfo.cpp1
5 files changed, 12 insertions, 15 deletions
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index 2dd644c..2654025 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -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;
diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
index 02ced44..178e085 100644
--- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
@@ -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);
}
diff --git a/lib/Target/Alpha/AlphaTargetAsmInfo.cpp b/lib/Target/Alpha/AlphaTargetAsmInfo.cpp
index 0abdce9..20be50e 100644
--- a/lib/Target/Alpha/AlphaTargetAsmInfo.cpp
+++ b/lib/Target/Alpha/AlphaTargetAsmInfo.cpp
@@ -17,6 +17,6 @@ using namespace llvm;
AlphaTargetAsmInfo::AlphaTargetAsmInfo() {
AlignmentIsInBytes = false;
PrivateGlobalPrefix = "$";
- JumpTableDirective = ".gprel32";
+ PICJumpTableDirective = ".gprel32";
WeakRefDirective = "\t.weak\t";
}
diff --git a/lib/Target/Mips/MipsTargetAsmInfo.cpp b/lib/Target/Mips/MipsTargetAsmInfo.cpp
index aa40ff6..8cb58c8 100644
--- a/lib/Target/Mips/MipsTargetAsmInfo.cpp
+++ b/lib/Target/Mips/MipsTargetAsmInfo.cpp
@@ -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";
}
diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp
index 84a9771..51aeae4 100644
--- a/lib/Target/TargetAsmInfo.cpp
+++ b/lib/Target/TargetAsmInfo.cpp
@@ -54,6 +54,7 @@ TargetAsmInfo::TargetAsmInfo() {
AlignmentIsInBytes = true;
TextAlignFillValue = 0;
JumpTableDirective = 0;
+ PICJumpTableDirective = 0;
GlobalDirective = "\t.globl\t";
SetDirective = 0;
LCOMMDirective = 0;