summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/LLVMTargetMachine.cpp1
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp3
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h2
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp15
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h4
-rw-r--r--llvm/lib/Target/Mips/MipsTargetMachine.cpp1
6 files changed, 24 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LLVMTargetMachine.cpp b/llvm/lib/CodeGen/LLVMTargetMachine.cpp
index 610c9f47bac..d49c4f0be5c 100644
--- a/llvm/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/llvm/lib/CodeGen/LLVMTargetMachine.cpp
@@ -67,6 +67,7 @@ void LLVMTargetMachine::initAsmInfo() {
if (Options.CompressDebugSections)
TmpAsmInfo->setCompressDebugSections(true);
+ TmpAsmInfo->finishInit(*this);
AsmInfo = TmpAsmInfo;
}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
index b1f7c2f2259..d2b010486b5 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
@@ -122,3 +122,6 @@ unsigned MipsABIInfo::GetEhDataReg(unsigned I) const {
return IsN64() ? EhDataReg64[I] : EhDataReg[I];
}
+const char *MipsABIInfo::GetPrivateLabelPrefix() const {
+ return IsO32() ? "$" : ".L";
+}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h b/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h
index 9a6ba946765..1e9d57b82b9 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h
@@ -71,6 +71,8 @@ public:
inline bool ArePtrs64bit() const { return IsN64(); }
unsigned GetEhDataReg(unsigned I) const;
+
+ const char *GetPrivateLabelPrefix() const;
};
}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
index e2bd5a815ab..b47ca0b5cb5 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
@@ -12,7 +12,10 @@
//===----------------------------------------------------------------------===//
#include "MipsMCAsmInfo.h"
+#include "MCTargetDesc/MipsABIInfo.h"
+#include "MipsTargetMachine.h"
#include "llvm/ADT/Triple.h"
+#include "llvm/Target/TargetMachine.h"
using namespace llvm;
@@ -29,12 +32,14 @@ MipsMCAsmInfo::MipsMCAsmInfo(StringRef TT) {
PointerSize = CalleeSaveStackSlotSize = 8;
}
+ // These two are overridden in finishInit()
+ PrivateGlobalPrefix = "$";
+ PrivateLabelPrefix = "$";
+
AlignmentIsInBytes = false;
Data16bitsDirective = "\t.2byte\t";
Data32bitsDirective = "\t.4byte\t";
Data64bitsDirective = "\t.8byte\t";
- PrivateGlobalPrefix = "$";
- PrivateLabelPrefix = "$";
CommentString = "#";
ZeroDirective = "\t.space\t";
GPRel32Directive = "\t.gpword\t";
@@ -44,3 +49,9 @@ MipsMCAsmInfo::MipsMCAsmInfo(StringRef TT) {
ExceptionsType = ExceptionHandling::DwarfCFI;
DwarfRegNumForCFI = true;
}
+
+void MipsMCAsmInfo::finishInit(const LLVMTargetMachine &TM) {
+ const MipsABIInfo &ABI = static_cast<const MipsTargetMachine &>(TM).getABI();
+ PrivateGlobalPrefix = ABI.GetPrivateLabelPrefix();
+ PrivateLabelPrefix = ABI.GetPrivateLabelPrefix();
+}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h
index 59ff1c41ed6..aed702320d7 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h
@@ -18,11 +18,15 @@
namespace llvm {
class StringRef;
+ class MipsABIInfo;
+ class LLVMTargetMachine;
class MipsMCAsmInfo : public MCAsmInfoELF {
void anchor() override;
public:
explicit MipsMCAsmInfo(StringRef TT);
+
+ void finishInit(const LLVMTargetMachine &TM) override;
};
} // namespace llvm
diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.cpp b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
index b279184ea30..6036247f2ee 100644
--- a/llvm/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
@@ -24,6 +24,7 @@
#include "MipsSEISelLowering.h"
#include "MipsSEInstrInfo.h"
#include "MipsTargetObjectFile.h"
+#include "MCTargetDesc/MipsMCAsmInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/LegacyPassManager.h"
OpenPOWER on IntegriCloud