mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-21 18:22:53 +01:00
[Mips] Use appropriate private label prefix based on Mips ABI
MipsMCAsmInfo was using '$' prefix for Mips32 and '.L' for Mips64 regardless of -target-abi option. By passing MCTargetOptions to MCAsmInfo we can find out Mips ABI and pick appropriate prefix. Tags: #llvm, #clang, #lldb Differential Revision: https://reviews.llvm.org/D66795
This commit is contained in:
parent
731658f937
commit
8898b1be97
@ -128,7 +128,8 @@ public:
|
||||
using ArchMatchFnTy = bool (*)(Triple::ArchType Arch);
|
||||
|
||||
using MCAsmInfoCtorFnTy = MCAsmInfo *(*)(const MCRegisterInfo &MRI,
|
||||
const Triple &TT);
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options);
|
||||
using MCInstrInfoCtorFnTy = MCInstrInfo *(*)();
|
||||
using MCInstrAnalysisCtorFnTy = MCInstrAnalysis *(*)(const MCInstrInfo *Info);
|
||||
using MCRegInfoCtorFnTy = MCRegisterInfo *(*)(const Triple &TT);
|
||||
@ -335,11 +336,11 @@ public:
|
||||
/// feature set; it should always be provided. Generally this should be
|
||||
/// either the target triple from the module, or the target triple of the
|
||||
/// host if that does not exist.
|
||||
MCAsmInfo *createMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
StringRef TheTriple) const {
|
||||
MCAsmInfo *createMCAsmInfo(const MCRegisterInfo &MRI, StringRef TheTriple,
|
||||
const MCTargetOptions &Options) const {
|
||||
if (!MCAsmInfoCtorFn)
|
||||
return nullptr;
|
||||
return MCAsmInfoCtorFn(MRI, Triple(TheTriple));
|
||||
return MCAsmInfoCtorFn(MRI, Triple(TheTriple), Options);
|
||||
}
|
||||
|
||||
/// createMCInstrInfo - Create a MCInstrInfo implementation.
|
||||
@ -948,9 +949,9 @@ template <class MCAsmInfoImpl> struct RegisterMCAsmInfo {
|
||||
}
|
||||
|
||||
private:
|
||||
static MCAsmInfo *Allocator(const MCRegisterInfo & /*MRI*/,
|
||||
const Triple &TT) {
|
||||
return new MCAsmInfoImpl(TT);
|
||||
static MCAsmInfo *Allocator(const MCRegisterInfo & /*MRI*/, const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
return new MCAsmInfoImpl(TT, Options);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -48,8 +48,8 @@ void LLVMTargetMachine::initAsmInfo() {
|
||||
STI.reset(TheTarget.createMCSubtargetInfo(
|
||||
getTargetTriple().str(), getTargetCPU(), getTargetFeatureString()));
|
||||
|
||||
MCAsmInfo *TmpAsmInfo =
|
||||
TheTarget.createMCAsmInfo(*MRI, getTargetTriple().str());
|
||||
MCAsmInfo *TmpAsmInfo = TheTarget.createMCAsmInfo(
|
||||
*MRI, getTargetTriple().str(), Options.MCOptions);
|
||||
// TargetSelect.h moved to a different directory between LLVM 2.9 and 3.0,
|
||||
// and if the old one gets included then MCAsmInfo will be NULL and
|
||||
// we'll crash later.
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSchedule.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/FormattedStream.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
@ -56,8 +57,10 @@ LLVMCreateDisasmCPUFeatures(const char *TT, const char *CPU,
|
||||
if (!MRI)
|
||||
return nullptr;
|
||||
|
||||
MCTargetOptions MCOptions;
|
||||
// Get the assembler info needed to setup the MCContext.
|
||||
std::unique_ptr<const MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TT));
|
||||
std::unique_ptr<const MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TT, MCOptions));
|
||||
if (!MAI)
|
||||
return nullptr;
|
||||
|
||||
|
@ -83,7 +83,8 @@ initializeRecordStreamer(const Module &M,
|
||||
if (!MRI)
|
||||
return;
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(T->createMCAsmInfo(*MRI, TT.str()));
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<MCAsmInfo> MAI(T->createMCAsmInfo(*MRI, TT.str(), MCOptions));
|
||||
if (!MAI)
|
||||
return;
|
||||
|
||||
@ -109,7 +110,6 @@ initializeRecordStreamer(const Module &M,
|
||||
std::unique_ptr<MCAsmParser> Parser(
|
||||
createMCAsmParser(SrcMgr, MCCtx, Streamer, *MAI));
|
||||
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<MCTargetAsmParser> TAP(
|
||||
T->createMCAsmParser(*STI, *Parser, *MCII, MCOptions));
|
||||
if (!TAP)
|
||||
|
@ -238,7 +238,8 @@ static MCRegisterInfo *createAArch64MCRegisterInfo(const Triple &Triple) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createAArch64MCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TheTriple) {
|
||||
const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI;
|
||||
if (TheTriple.isOSBinFormatMachO())
|
||||
MAI = new AArch64MCAsmInfoDarwin(TheTriple.getArch() == Triple::aarch64_32);
|
||||
|
@ -14,7 +14,9 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(const Triple &TT) : MCAsmInfoELF() {
|
||||
AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(const Triple &TT,
|
||||
const MCTargetOptions &Options)
|
||||
: MCAsmInfoELF() {
|
||||
CodePointerSize = (TT.getArch() == Triple::amdgcn) ? 8 : 4;
|
||||
StackGrowsUp = true;
|
||||
HasSingleParameterDotFile = false;
|
||||
|
@ -25,7 +25,7 @@ class Triple;
|
||||
// with 'L' as a local symbol.
|
||||
class AMDGPUMCAsmInfo : public MCAsmInfoELF {
|
||||
public:
|
||||
explicit AMDGPUMCAsmInfo(const Triple &TT);
|
||||
explicit AMDGPUMCAsmInfo(const Triple &TT, const MCTargetOptions &Options);
|
||||
bool shouldOmitSectionDirective(StringRef SectionName) const override;
|
||||
unsigned getMaxInstLength(const MCSubtargetInfo *STI) const override;
|
||||
};
|
||||
|
@ -52,7 +52,8 @@ static MCSubtargetInfo *createARCMCSubtargetInfo(const Triple &TT,
|
||||
}
|
||||
|
||||
static MCAsmInfo *createARCMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new ARCMCAsmInfo(TT);
|
||||
|
||||
// Initial state of the frame pointer is SP.
|
||||
|
@ -187,7 +187,8 @@ static MCRegisterInfo *createARMMCRegisterInfo(const Triple &Triple) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createARMMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TheTriple) {
|
||||
const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI;
|
||||
if (TheTriple.isOSDarwin() || TheTriple.isOSBinFormatMachO())
|
||||
MAI = new ARMMCAsmInfoDarwin(TheTriple);
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
AVRMCAsmInfo::AVRMCAsmInfo(const Triple &TT) {
|
||||
AVRMCAsmInfo::AVRMCAsmInfo(const Triple &TT, const MCTargetOptions &Options) {
|
||||
CodePointerSize = 2;
|
||||
CalleeSaveStackSlotSize = 2;
|
||||
CommentString = ";";
|
||||
|
@ -22,7 +22,7 @@ class Triple;
|
||||
/// Specifies the format of AVR assembly files.
|
||||
class AVRMCAsmInfo : public MCAsmInfo {
|
||||
public:
|
||||
explicit AVRMCAsmInfo(const Triple &TT);
|
||||
explicit AVRMCAsmInfo(const Triple &TT, const MCTargetOptions &Options);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
@ -21,7 +21,7 @@ class Target;
|
||||
|
||||
class BPFMCAsmInfo : public MCAsmInfo {
|
||||
public:
|
||||
explicit BPFMCAsmInfo(const Triple &TT) {
|
||||
explicit BPFMCAsmInfo(const Triple &TT, const MCTargetOptions &Options) {
|
||||
if (TT.getArch() == Triple::bpfeb)
|
||||
IsLittleEndian = false;
|
||||
|
||||
|
@ -219,7 +219,8 @@ static MCRegisterInfo *createHexagonMCRegisterInfo(const Triple &TT) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createHexagonMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new HexagonMCAsmInfo(TT);
|
||||
|
||||
// VirtualFP = (R30 + #0).
|
||||
|
@ -18,7 +18,8 @@ using namespace llvm;
|
||||
|
||||
void LanaiMCAsmInfo::anchor() {}
|
||||
|
||||
LanaiMCAsmInfo::LanaiMCAsmInfo(const Triple & /*TheTriple*/) {
|
||||
LanaiMCAsmInfo::LanaiMCAsmInfo(const Triple & /*TheTriple*/,
|
||||
const MCTargetOptions &Options) {
|
||||
IsLittleEndian = false;
|
||||
PrivateGlobalPrefix = ".L";
|
||||
WeakRefDirective = "\t.weak\t";
|
||||
|
@ -22,7 +22,8 @@ class LanaiMCAsmInfo : public MCAsmInfoELF {
|
||||
void anchor() override;
|
||||
|
||||
public:
|
||||
explicit LanaiMCAsmInfo(const Triple &TheTriple);
|
||||
explicit LanaiMCAsmInfo(const Triple &TheTriple,
|
||||
const MCTargetOptions &Options);
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
@ -15,7 +15,8 @@ using namespace llvm;
|
||||
|
||||
void MSP430MCAsmInfo::anchor() { }
|
||||
|
||||
MSP430MCAsmInfo::MSP430MCAsmInfo(const Triple &TT) {
|
||||
MSP430MCAsmInfo::MSP430MCAsmInfo(const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
CodePointerSize = CalleeSaveStackSlotSize = 2;
|
||||
|
||||
CommentString = ";";
|
||||
|
@ -22,7 +22,7 @@ class MSP430MCAsmInfo : public MCAsmInfoELF {
|
||||
void anchor() override;
|
||||
|
||||
public:
|
||||
explicit MSP430MCAsmInfo(const Triple &TT);
|
||||
explicit MSP430MCAsmInfo(const Triple &TT, const MCTargetOptions &Options);
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
@ -11,25 +11,27 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "MipsMCAsmInfo.h"
|
||||
#include "MipsABIInfo.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
void MipsMCAsmInfo::anchor() { }
|
||||
|
||||
MipsMCAsmInfo::MipsMCAsmInfo(const Triple &TheTriple) {
|
||||
MipsMCAsmInfo::MipsMCAsmInfo(const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
IsLittleEndian = TheTriple.isLittleEndian();
|
||||
|
||||
if (TheTriple.isMIPS64() && TheTriple.getEnvironment() != Triple::GNUABIN32)
|
||||
MipsABIInfo ABI = MipsABIInfo::computeTargetABI(TheTriple, "", Options);
|
||||
|
||||
if (TheTriple.isMIPS64() && !ABI.IsN32())
|
||||
CodePointerSize = CalleeSaveStackSlotSize = 8;
|
||||
|
||||
// FIXME: This condition isn't quite right but it's the best we can do until
|
||||
// this object can identify the ABI. It will misbehave when using O32
|
||||
// on a mips64*-* triple.
|
||||
if (TheTriple.isMIPS32()) {
|
||||
if (ABI.IsO32())
|
||||
PrivateGlobalPrefix = "$";
|
||||
PrivateLabelPrefix = "$";
|
||||
}
|
||||
else if (ABI.IsN32() || ABI.IsN64())
|
||||
PrivateGlobalPrefix = ".L";
|
||||
PrivateLabelPrefix = PrivateGlobalPrefix;
|
||||
|
||||
AlignmentIsInBytes = false;
|
||||
Data16bitsDirective = "\t.2byte\t";
|
||||
|
@ -22,7 +22,8 @@ class MipsMCAsmInfo : public MCAsmInfoELF {
|
||||
void anchor() override;
|
||||
|
||||
public:
|
||||
explicit MipsMCAsmInfo(const Triple &TheTriple);
|
||||
explicit MipsMCAsmInfo(const Triple &TheTriple,
|
||||
const MCTargetOptions &Options);
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
@ -81,8 +81,9 @@ static MCSubtargetInfo *createMipsMCSubtargetInfo(const Triple &TT,
|
||||
}
|
||||
|
||||
static MCAsmInfo *createMipsMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
MCAsmInfo *MAI = new MipsMCAsmInfo(TT);
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new MipsMCAsmInfo(TT, Options);
|
||||
|
||||
unsigned SP = MRI.getDwarfRegNum(Mips::SP, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfaRegister(nullptr, SP);
|
||||
|
@ -17,7 +17,8 @@ using namespace llvm;
|
||||
|
||||
void NVPTXMCAsmInfo::anchor() {}
|
||||
|
||||
NVPTXMCAsmInfo::NVPTXMCAsmInfo(const Triple &TheTriple) {
|
||||
NVPTXMCAsmInfo::NVPTXMCAsmInfo(const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
if (TheTriple.getArch() == Triple::nvptx64) {
|
||||
CodePointerSize = CalleeSaveStackSlotSize = 8;
|
||||
}
|
||||
|
@ -23,7 +23,8 @@ class NVPTXMCAsmInfo : public MCAsmInfo {
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
explicit NVPTXMCAsmInfo(const Triple &TheTriple);
|
||||
explicit NVPTXMCAsmInfo(const Triple &TheTriple,
|
||||
const MCTargetOptions &Options);
|
||||
|
||||
/// Return true if the .section directive should be omitted when
|
||||
/// emitting \p SectionName. For example:
|
||||
|
@ -76,7 +76,8 @@ static MCSubtargetInfo *createPPCMCSubtargetInfo(const Triple &TT,
|
||||
}
|
||||
|
||||
static MCAsmInfo *createPPCMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TheTriple) {
|
||||
const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
bool isPPC64 = (TheTriple.getArch() == Triple::ppc64 ||
|
||||
TheTriple.getArch() == Triple::ppc64le);
|
||||
|
||||
|
@ -51,7 +51,8 @@ static MCRegisterInfo *createRISCVMCRegisterInfo(const Triple &TT) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createRISCVMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new RISCVMCAsmInfo(TT);
|
||||
|
||||
Register SP = MRI.getDwarfRegNum(RISCV::X2, true);
|
||||
|
@ -33,7 +33,8 @@ using namespace llvm;
|
||||
#include "SparcGenRegisterInfo.inc"
|
||||
|
||||
static MCAsmInfo *createSparcMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new SparcELFMCAsmInfo(TT);
|
||||
unsigned Reg = MRI.getDwarfRegNum(SP::O6, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, Reg, 0);
|
||||
@ -42,7 +43,8 @@ static MCAsmInfo *createSparcMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
}
|
||||
|
||||
static MCAsmInfo *createSparcV9MCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new SparcELFMCAsmInfo(TT);
|
||||
unsigned Reg = MRI.getDwarfRegNum(SP::O6, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, Reg, 2047);
|
||||
|
@ -147,7 +147,8 @@ unsigned SystemZMC::getFirstReg(unsigned Reg) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createSystemZMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new SystemZMCAsmInfo(TT);
|
||||
MCCFIInstruction Inst =
|
||||
MCCFIInstruction::createDefCfa(nullptr,
|
||||
|
@ -21,7 +21,8 @@ using namespace llvm;
|
||||
|
||||
WebAssemblyMCAsmInfo::~WebAssemblyMCAsmInfo() = default; // anchor.
|
||||
|
||||
WebAssemblyMCAsmInfo::WebAssemblyMCAsmInfo(const Triple &T) {
|
||||
WebAssemblyMCAsmInfo::WebAssemblyMCAsmInfo(const Triple &T,
|
||||
const MCTargetOptions &Options) {
|
||||
CodePointerSize = CalleeSaveStackSlotSize = T.isArch64Bit() ? 8 : 4;
|
||||
|
||||
// TODO: What should MaxInstLength be?
|
||||
|
@ -22,7 +22,8 @@ class Triple;
|
||||
|
||||
class WebAssemblyMCAsmInfo final : public MCAsmInfoWasm {
|
||||
public:
|
||||
explicit WebAssemblyMCAsmInfo(const Triple &T);
|
||||
explicit WebAssemblyMCAsmInfo(const Triple &T,
|
||||
const MCTargetOptions &Options);
|
||||
~WebAssemblyMCAsmInfo() override;
|
||||
};
|
||||
|
||||
|
@ -35,8 +35,9 @@ using namespace llvm;
|
||||
#include "WebAssemblyGenRegisterInfo.inc"
|
||||
|
||||
static MCAsmInfo *createMCAsmInfo(const MCRegisterInfo & /*MRI*/,
|
||||
const Triple &TT) {
|
||||
return new WebAssemblyMCAsmInfo(TT);
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
return new WebAssemblyMCAsmInfo(TT, Options);
|
||||
}
|
||||
|
||||
static MCInstrInfo *createMCInstrInfo() {
|
||||
|
@ -323,7 +323,8 @@ static MCRegisterInfo *createX86MCRegisterInfo(const Triple &TT) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createX86MCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TheTriple) {
|
||||
const Triple &TheTriple,
|
||||
const MCTargetOptions &Options) {
|
||||
bool is64Bit = TheTriple.getArch() == Triple::x86_64;
|
||||
|
||||
MCAsmInfo *MAI;
|
||||
|
@ -55,7 +55,8 @@ createXCoreMCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS) {
|
||||
}
|
||||
|
||||
static MCAsmInfo *createXCoreMCAsmInfo(const MCRegisterInfo &MRI,
|
||||
const Triple &TT) {
|
||||
const Triple &TT,
|
||||
const MCTargetOptions &Options) {
|
||||
MCAsmInfo *MAI = new XCoreMCAsmInfo(TT);
|
||||
|
||||
// Initial state of the frame pointer is SP.
|
||||
|
@ -103,7 +103,7 @@ define i64 @f5(i64 %a, i64 %b) {
|
||||
|
||||
define i32 @f6(i32 %a) {
|
||||
; CHECK-LABEL: f6:
|
||||
; CHECK: beqzc ${{[0-9]+}}, $BB
|
||||
; CHECK: beqzc ${{[0-9]+}}, {{((\$)|(\.L))}}BB
|
||||
|
||||
%cmp = icmp eq i32 %a, 0
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
@ -117,7 +117,7 @@ define i32 @f6(i32 %a) {
|
||||
|
||||
define i32 @f7(i32 %a) {
|
||||
; CHECK-LABEL: f7:
|
||||
; CHECK: bnezc ${{[0-9]+}}, $BB
|
||||
; CHECK: bnezc ${{[0-9]+}}, {{((\$)|(\.L))}}BB
|
||||
|
||||
%cmp = icmp eq i32 0, %a
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
|
@ -18,7 +18,7 @@ li.d $4, 0.0
|
||||
|
||||
li.d $4, 1.12345
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4607738388174016296
|
||||
# ALL-NEXT: .text
|
||||
@ -62,7 +62,7 @@ li.d $4, 1.0
|
||||
|
||||
li.d $4, 12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180239360
|
||||
# ALL-NEXT: .text
|
||||
@ -94,7 +94,7 @@ li.d $4, 12345678910
|
||||
|
||||
li.d $4, 12345678910.0
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180239360
|
||||
# ALL-NEXT: .text
|
||||
@ -126,7 +126,7 @@ li.d $4, 12345678910.0
|
||||
|
||||
li.d $4, 0.4
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4600877379321698714
|
||||
# ALL-NEXT: .text
|
||||
@ -164,7 +164,7 @@ li.d $4, 1.5
|
||||
|
||||
li.d $4, 12345678910.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180304087
|
||||
# ALL-NEXT: .text
|
||||
@ -197,7 +197,7 @@ li.d $4, 12345678910.12345678910
|
||||
|
||||
li.d $4, 12345678910123456789.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4892433759227321879
|
||||
# ALL-NEXT: .text
|
||||
@ -243,7 +243,7 @@ li.d $f4, 0.0
|
||||
|
||||
li.d $f4, 1.12345
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4607738388174016296
|
||||
# ALL-NEXT: .text
|
||||
@ -288,7 +288,7 @@ li.d $f4, 1.0
|
||||
|
||||
li.d $f4, 12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180239360
|
||||
# ALL-NEXT: .text
|
||||
@ -311,7 +311,7 @@ li.d $f4, 12345678910
|
||||
|
||||
li.d $f4, 12345678910.0
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180239360
|
||||
# ALL-NEXT: .text
|
||||
@ -334,7 +334,7 @@ li.d $f4, 12345678910.0
|
||||
|
||||
li.d $f4, 0.4
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4600877379321698714
|
||||
# ALL-NEXT: .text
|
||||
@ -379,7 +379,7 @@ li.d $f4, 2.5
|
||||
|
||||
li.d $f4, 2.515625
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4612847102706319360
|
||||
# ALL-NEXT: .text
|
||||
@ -402,7 +402,7 @@ li.d $f4, 2.515625
|
||||
|
||||
li.d $f4, 12345678910.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4757770298180304087
|
||||
# ALL-NEXT: .text
|
||||
@ -425,7 +425,7 @@ li.d $f4, 12345678910.12345678910
|
||||
|
||||
li.d $f4, 12345678910123456789.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL-NEXT: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL-NEXT: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL-NEXT: .p2align 3
|
||||
# ALL-NEXT: .8byte 4892433759227321879
|
||||
# ALL-NEXT: .text
|
||||
|
@ -52,7 +52,7 @@ li.s $f4, 0.0
|
||||
|
||||
li.s $f4, 1.12345
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1066388790
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
@ -82,7 +82,7 @@ li.s $f4, 1.0
|
||||
|
||||
li.s $f4, 12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1345844999
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
@ -104,7 +104,7 @@ li.s $f4, 12345678910
|
||||
|
||||
li.s $f4, 12345678910.0
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1345844999
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
@ -127,7 +127,7 @@ li.s $f4, 12345678910.0
|
||||
|
||||
li.s $f4, 0.4
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1053609165
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
@ -153,7 +153,7 @@ li.s $f4, 1.5
|
||||
|
||||
li.s $f4, 12345678910.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1345844999
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
@ -175,7 +175,7 @@ li.s $f4, 12345678910.12345678910
|
||||
|
||||
li.s $f4, 12345678910123456789.12345678910
|
||||
# ALL: .section .rodata,"a",@progbits
|
||||
# ALL: [[LABEL:\$tmp[0-9]+]]:
|
||||
# ALL: [[LABEL:((\$)|(\.L))tmp[0-9]+]]:
|
||||
# ALL: .4byte 1596675242
|
||||
# ALL: .text
|
||||
# O32-N32-PIC: lw $1, %got([[LABEL]])($gp) # encoding: [A,A,0x81,0x8f]
|
||||
|
22
test/MC/Mips/private-prefix.s
Normal file
22
test/MC/Mips/private-prefix.s
Normal file
@ -0,0 +1,22 @@
|
||||
# RUN: llvm-mc %s -triple=mips --target-abi=o32 | FileCheck %s --check-prefix=O32
|
||||
# RUN: llvm-mc %s -triple=mips --target-abi=n32 | FileCheck %s --check-prefix=N32
|
||||
# RUN: llvm-mc %s -triple=mips --target-abi=n64 | FileCheck %s --check-prefix=N64
|
||||
# RUN: llvm-mc %s -triple=mips64 --target-abi=o32 | FileCheck %s --check-prefix=O32
|
||||
# RUN: llvm-mc %s -triple=mips64 --target-abi=n32 | FileCheck %s --check-prefix=N32
|
||||
# RUN: llvm-mc %s -triple=mips64 --target-abi=n64 | FileCheck %s --check-prefix=N64
|
||||
# RUN: llvm-mc %s -triple=mips | FileCheck %s --check-prefix=O32
|
||||
# RUN: llvm-mc %s -triple=mips-gnu | FileCheck %s --check-prefix=O32
|
||||
# RUN: llvm-mc %s -triple=mips-gnuabin32 | FileCheck %s --check-prefix=N32
|
||||
# RUN: llvm-mc %s -triple=mips-gnuabi64 | FileCheck %s --check-prefix=O32
|
||||
# RUN: llvm-mc %s -triple=mips64 | FileCheck %s --check-prefix=N64
|
||||
# RUN: llvm-mc %s -triple=mips64-gnu | FileCheck %s --check-prefix=N64
|
||||
# RUN: llvm-mc %s -triple=mips64-gnuabin32 | FileCheck %s --check-prefix=N32
|
||||
# RUN: llvm-mc %s -triple=mips64-gnuabi64 | FileCheck %s --check-prefix=N64
|
||||
|
||||
# Checks if correct private global and label prefixes are used based on target
|
||||
# options.
|
||||
|
||||
# O32: $tmp0:
|
||||
# N32: .Ltmp0:
|
||||
# N64: .Ltmp0:
|
||||
li.d $4, 1.12345
|
@ -61,7 +61,8 @@ bool DwarfStreamer::init(Triple TheTriple) {
|
||||
if (!MRI)
|
||||
return error(Twine("no register info for target ") + TripleName, Context);
|
||||
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
return error("no asm info for target " + TripleName, Context);
|
||||
|
||||
@ -73,7 +74,6 @@ bool DwarfStreamer::init(Triple TheTriple) {
|
||||
if (!MSTI)
|
||||
return error("no subtarget info for target " + TripleName, Context);
|
||||
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
MAB = TheTarget->createMCAsmBackend(*MSTI, *MRI, MCOptions);
|
||||
if (!MAB)
|
||||
return error("no asm backend for target " + TripleName, Context);
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "llvm/MC/MCObjectFileInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/Binary.h"
|
||||
#include "llvm/Object/COFF.h"
|
||||
#include "llvm/Object/ELFObjectFile.h"
|
||||
@ -387,7 +388,9 @@ Error FileAnalysis::initialiseDisassemblyMembers() {
|
||||
return make_error<UnsupportedDisassembly>(
|
||||
"Failed to initialise RegisterInfo.");
|
||||
|
||||
AsmInfo.reset(ObjectTarget->createMCAsmInfo(*RegisterInfo, TripleName));
|
||||
MCTargetOptions MCOptions;
|
||||
AsmInfo.reset(
|
||||
ObjectTarget->createMCAsmInfo(*RegisterInfo, TripleName, MCOptions));
|
||||
if (!AsmInfo)
|
||||
return make_error<UnsupportedDisassembly>("Failed to initialise AsmInfo.");
|
||||
|
||||
|
@ -676,7 +676,9 @@ int main(int argc, char **argv) {
|
||||
if (!MRI)
|
||||
return error(Twine("no register info for target ") + TripleName, Context);
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
return error("no asm info for target " + TripleName, Context);
|
||||
|
||||
@ -716,7 +718,6 @@ int main(int argc, char **argv) {
|
||||
OS = BOS.getPointer();
|
||||
}
|
||||
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
std::unique_ptr<MCStreamer> MS(TheTarget->createMCObjectStreamer(
|
||||
TheTriple, MC, std::unique_ptr<MCAsmBackend>(MAB),
|
||||
MAB->createObjectWriter(*OS), std::unique_ptr<MCCodeEmitter>(MCE), *MSTI,
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "BenchmarkResult.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Support/FormatVariadic.h"
|
||||
#include <limits>
|
||||
#include <unordered_set>
|
||||
@ -163,7 +164,9 @@ Analysis::Analysis(const Target &Target, std::unique_ptr<MCInstrInfo> InstrInfo,
|
||||
|
||||
const InstructionBenchmark &FirstPoint = Clustering.getPoints().front();
|
||||
RegInfo_.reset(Target.createMCRegInfo(FirstPoint.LLVMTriple));
|
||||
AsmInfo_.reset(Target.createMCAsmInfo(*RegInfo_, FirstPoint.LLVMTriple));
|
||||
MCTargetOptions MCOptions;
|
||||
AsmInfo_.reset(
|
||||
Target.createMCAsmInfo(*RegInfo_, FirstPoint.LLVMTriple, MCOptions));
|
||||
SubtargetInfo_.reset(Target.createMCSubtargetInfo(FirstPoint.LLVMTriple,
|
||||
FirstPoint.CpuName, ""));
|
||||
InstPrinter_.reset(Target.createMCInstPrinter(
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/COFF.h"
|
||||
#include "llvm/Object/MachO.h"
|
||||
#include "llvm/Object/ObjectFile.h"
|
||||
@ -693,7 +694,9 @@ Error runChecks(Session &S) {
|
||||
TripleName,
|
||||
inconvertibleErrorCode()));
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
ExitOnErr(make_error<StringError>("Unable to create target asm info " +
|
||||
TripleName,
|
||||
|
@ -161,7 +161,9 @@ int AssembleOneInput(const uint8_t *Data, size_t Size) {
|
||||
abort();
|
||||
}
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI) {
|
||||
errs() << "Unable to create target asm info!";
|
||||
abort();
|
||||
@ -193,8 +195,6 @@ int AssembleOneInput(const uint8_t *Data, size_t Size) {
|
||||
std::unique_ptr<MCCodeEmitter> CE = nullptr;
|
||||
std::unique_ptr<MCAsmBackend> MAB = nullptr;
|
||||
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
|
||||
std::string OutputString;
|
||||
raw_string_ostream Out(OutputString);
|
||||
auto FOut = std::make_unique<formatted_raw_ostream>(Out);
|
||||
|
@ -133,7 +133,8 @@ static bool ByteArrayFromString(ByteArrayTy &ByteArray,
|
||||
int Disassembler::disassemble(const Target &T, const std::string &Triple,
|
||||
MCSubtargetInfo &STI, MCStreamer &Streamer,
|
||||
MemoryBuffer &Buffer, SourceMgr &SM,
|
||||
MCContext &Ctx, raw_ostream &Out) {
|
||||
MCContext &Ctx, raw_ostream &Out,
|
||||
const MCTargetOptions &MCOptions) {
|
||||
|
||||
std::unique_ptr<const MCRegisterInfo> MRI(T.createMCRegInfo(Triple));
|
||||
if (!MRI) {
|
||||
@ -141,7 +142,8 @@ int Disassembler::disassemble(const Target &T, const std::string &Triple,
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::unique_ptr<const MCAsmInfo> MAI(T.createMCAsmInfo(*MRI, Triple));
|
||||
std::unique_ptr<const MCAsmInfo> MAI(
|
||||
T.createMCAsmInfo(*MRI, Triple, MCOptions));
|
||||
if (!MAI) {
|
||||
errs() << "error: no assembly info for target " << Triple << "\n";
|
||||
return -1;
|
||||
|
@ -25,13 +25,14 @@ class SourceMgr;
|
||||
class MCContext;
|
||||
class MCSubtargetInfo;
|
||||
class MCStreamer;
|
||||
class MCTargetOptions;
|
||||
|
||||
class Disassembler {
|
||||
public:
|
||||
static int disassemble(const Target &T, const std::string &Triple,
|
||||
MCSubtargetInfo &STI, MCStreamer &Streamer,
|
||||
MemoryBuffer &Buffer, SourceMgr &SM, MCContext &Ctx,
|
||||
raw_ostream &Out);
|
||||
raw_ostream &Out, const MCTargetOptions &MCOptions);
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
@ -351,7 +351,8 @@ int main(int argc, char **argv) {
|
||||
std::unique_ptr<MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
|
||||
assert(MRI && "Unable to create target register info!");
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
assert(MAI && "Unable to create target asm info!");
|
||||
|
||||
MAI->setRelaxELFRelocations(RelaxELFRel);
|
||||
@ -518,7 +519,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
if (disassemble)
|
||||
Res = Disassembler::disassemble(*TheTarget, TripleName, *STI, *Str, *Buffer,
|
||||
SrcMgr, Ctx, Out->os());
|
||||
SrcMgr, Ctx, Out->os(), MCOptions);
|
||||
|
||||
// Keep output if no errors.
|
||||
if (Res == 0) {
|
||||
|
@ -353,7 +353,9 @@ int main(int argc, char **argv) {
|
||||
std::unique_ptr<MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
|
||||
assert(MRI && "Unable to create target register info!");
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
assert(MAI && "Unable to create target asm info!");
|
||||
|
||||
MCObjectFileInfo MOFI;
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/MachO.h"
|
||||
#include "llvm/Object/MachOUniversal.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
@ -7208,11 +7209,12 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
FeaturesStr = Features.getString();
|
||||
}
|
||||
|
||||
MCTargetOptions MCOptions;
|
||||
// Set up disassembler.
|
||||
std::unique_ptr<const MCRegisterInfo> MRI(
|
||||
TheTarget->createMCRegInfo(TripleName));
|
||||
std::unique_ptr<const MCAsmInfo> AsmInfo(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
std::unique_ptr<const MCSubtargetInfo> STI(
|
||||
TheTarget->createMCSubtargetInfo(TripleName, MachOMCPU, FeaturesStr));
|
||||
MCContext Ctx(AsmInfo.get(), MRI.get(), nullptr);
|
||||
@ -7262,7 +7264,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
if (ThumbTarget) {
|
||||
ThumbMRI.reset(ThumbTarget->createMCRegInfo(ThumbTripleName));
|
||||
ThumbAsmInfo.reset(
|
||||
ThumbTarget->createMCAsmInfo(*ThumbMRI, ThumbTripleName));
|
||||
ThumbTarget->createMCAsmInfo(*ThumbMRI, ThumbTripleName, MCOptions));
|
||||
ThumbSTI.reset(
|
||||
ThumbTarget->createMCSubtargetInfo(ThumbTripleName, MachOMCPU,
|
||||
FeaturesStr));
|
||||
@ -7405,7 +7407,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
reportError(MachDSYM.takeError(), DSYMPath);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// We need to keep the Binary alive with the buffer
|
||||
DbgObj = &*MachDSYM.get();
|
||||
DSYMBinary = std::move(*MachDSYM);
|
||||
@ -7827,7 +7829,7 @@ static void findUnwindRelocNameAddend(const MachOObjectFile *Obj,
|
||||
auto Sym = Symbols.upper_bound(Addr);
|
||||
if (Sym == Symbols.begin()) {
|
||||
// The first symbol in the object is after this reference, the best we can
|
||||
// do is section-relative notation.
|
||||
// do is section-relative notation.
|
||||
if (Expected<StringRef> NameOrErr = RelocSection.getName())
|
||||
Name = *NameOrErr;
|
||||
else
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "llvm/MC/MCObjectFileInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/Archive.h"
|
||||
#include "llvm/Object/COFF.h"
|
||||
#include "llvm/Object/COFFImportFile.h"
|
||||
@ -1539,8 +1540,9 @@ static void disassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
|
||||
"no register info for target " + TripleName);
|
||||
|
||||
// Set up disassembler.
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<const MCAsmInfo> AsmInfo(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!AsmInfo)
|
||||
reportError(Obj->getFileName(),
|
||||
"no assembly info for target " + TripleName);
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/SymbolSize.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/DynamicLibrary.h"
|
||||
@ -749,7 +750,9 @@ static int linkAndVerify() {
|
||||
if (!MRI)
|
||||
ErrorAndExit("Unable to create target register info!");
|
||||
|
||||
std::unique_ptr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<MCAsmInfo> MAI(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
ErrorAndExit("Unable to create target asm info!");
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "llvm/MC/MCObjectFileInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Object/Archive.h"
|
||||
#include "llvm/Object/Binary.h"
|
||||
#include "llvm/Object/COFF.h"
|
||||
@ -717,8 +718,9 @@ static void getObjectCoveragePoints(const object::ObjectFile &O,
|
||||
TheTarget->createMCRegInfo(TripleName));
|
||||
failIfEmpty(MRI, "no register info for target " + TripleName);
|
||||
|
||||
MCTargetOptions MCOptions;
|
||||
std::unique_ptr<const MCAsmInfo> AsmInfo(
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
failIfEmpty(AsmInfo, "no asm info for target " + TripleName);
|
||||
|
||||
std::unique_ptr<const MCObjectFileInfo> MOFI(new MCObjectFileInfo);
|
||||
|
@ -409,7 +409,8 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) {
|
||||
TripleName,
|
||||
inconvertibleErrorCode());
|
||||
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
if (!MAI)
|
||||
return make_error<StringError>("no asm info for target " + TripleName,
|
||||
inconvertibleErrorCode());
|
||||
@ -419,7 +420,6 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) {
|
||||
return make_error<StringError>("no subtarget info for target " + TripleName,
|
||||
inconvertibleErrorCode());
|
||||
|
||||
MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
|
||||
MAB = TheTarget->createMCAsmBackend(*MSTI, *MRI, MCOptions);
|
||||
if (!MAB)
|
||||
return make_error<StringError>("no asm backend for target " + TripleName,
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "llvm/MC/MCCodeEmitter.h"
|
||||
#include "llvm/MC/MCObjectWriter.h"
|
||||
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
|
||||
using namespace llvm::jitlink;
|
||||
@ -59,7 +60,8 @@ Error JITLinkTestCommon::TestResources::initializeTripleSpecifics(Triple &TT) {
|
||||
if (!MRI)
|
||||
report_fatal_error("Could not build MCRegisterInfo for triple");
|
||||
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TT.getTriple()));
|
||||
MCTargetOptions MCOptions;
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TT.getTriple(), MCOptions));
|
||||
if (!MAI)
|
||||
report_fatal_error("Could not build MCAsmInfo for triple");
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "llvm/MC/MCContext.h"
|
||||
#include "llvm/MC/MCDwarf.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
#include "gtest/gtest.h"
|
||||
@ -37,7 +38,8 @@ struct Context {
|
||||
return;
|
||||
|
||||
MRI.reset(TheTarget->createMCRegInfo(Triple));
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, Triple));
|
||||
MCTargetOptions MCOptions;
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, Triple, MCOptions));
|
||||
Ctx = std::make_unique<MCContext>(MAI.get(), MRI.get(), nullptr);
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "llvm/MC/MCInstPrinter.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
@ -40,7 +41,8 @@ public:
|
||||
return;
|
||||
|
||||
MRI.reset(TheTarget->createMCRegInfo(TripleName));
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName));
|
||||
MCTargetOptions MCOptions;
|
||||
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName, MCOptions));
|
||||
MII.reset(TheTarget->createMCInstrInfo());
|
||||
Printer.reset(TheTarget->createMCInstPrinter(
|
||||
Triple(TripleName), MAI->getAssemblerDialect(), *MAI, *MII, *MRI));
|
||||
|
Loading…
Reference in New Issue
Block a user