Register assembly printer passes (#138348)
Register assembly printer passes in the pass registry. This makes it possible to use `llc -start-before=<target>-asm-printer ...` in tests. Adds a `char &ID` parameter to the AssemblyPrinter constructor to allow targets to use the `INITIALIZE_PASS` macros and register the pass in the pass registry. This currently has a default parameter so it won't break any targets that have not been updated.
This commit is contained in:
@@ -240,7 +240,8 @@ private:
|
||||
bool DbgInfoAvailable = false;
|
||||
|
||||
protected:
|
||||
explicit AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer);
|
||||
AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer,
|
||||
char &ID = AsmPrinter::ID);
|
||||
|
||||
public:
|
||||
~AsmPrinter() override;
|
||||
|
||||
@@ -382,7 +382,8 @@ Align AsmPrinter::getGVAlignment(const GlobalObject *GV, const DataLayout &DL,
|
||||
return Alignment;
|
||||
}
|
||||
|
||||
AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr<MCStreamer> Streamer)
|
||||
AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr<MCStreamer> Streamer,
|
||||
char &ID)
|
||||
: MachineFunctionPass(ID), TM(tm), MAI(tm.getMCAsmInfo()),
|
||||
OutContext(Streamer->getContext()), OutStreamer(std::move(Streamer)),
|
||||
SM(*this) {
|
||||
|
||||
@@ -77,6 +77,7 @@ ModulePass *createAArch64Arm64ECCallLoweringPass();
|
||||
void initializeAArch64A53Fix835769Pass(PassRegistry&);
|
||||
void initializeAArch64A57FPLoadBalancingPass(PassRegistry&);
|
||||
void initializeAArch64AdvSIMDScalarPass(PassRegistry&);
|
||||
void initializeAArch64AsmPrinterPass(PassRegistry &);
|
||||
void initializeAArch64PointerAuthPass(PassRegistry&);
|
||||
void initializeAArch64BranchTargetsPass(PassRegistry&);
|
||||
void initializeAArch64CFIFixupPass(PassRegistry&);
|
||||
|
||||
@@ -96,9 +96,11 @@ class AArch64AsmPrinter : public AsmPrinter {
|
||||
SectionToImportedFunctionCalls;
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
AArch64AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), MCInstLowering(OutContext, *this),
|
||||
FM(*this) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID),
|
||||
MCInstLowering(OutContext, *this), FM(*this) {}
|
||||
|
||||
StringRef getPassName() const override { return "AArch64 Assembly Printer"; }
|
||||
|
||||
@@ -3523,6 +3525,11 @@ const MCExpr *AArch64AsmPrinter::lowerConstant(const Constant *CV,
|
||||
return AsmPrinter::lowerConstant(CV, BaseCV, Offset);
|
||||
}
|
||||
|
||||
char AArch64AsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(AArch64AsmPrinter, "aarch64-asm-printer",
|
||||
"AArch64 Assmebly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64AsmPrinter() {
|
||||
RegisterAsmPrinter<AArch64AsmPrinter> X(getTheAArch64leTarget());
|
||||
|
||||
@@ -235,6 +235,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() {
|
||||
initializeAArch64A53Fix835769Pass(PR);
|
||||
initializeAArch64A57FPLoadBalancingPass(PR);
|
||||
initializeAArch64AdvSIMDScalarPass(PR);
|
||||
initializeAArch64AsmPrinterPass(PR);
|
||||
initializeAArch64BranchTargetsPass(PR);
|
||||
initializeAArch64CollectLOHPass(PR);
|
||||
initializeAArch64CompressJumpTablesPass(PR);
|
||||
|
||||
@@ -95,6 +95,8 @@ void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
|
||||
void initializeAMDGPUAlwaysInlinePass(PassRegistry&);
|
||||
|
||||
void initializeAMDGPUAsmPrinterPass(PassRegistry &);
|
||||
|
||||
Pass *createAMDGPUAttributorLegacyPass();
|
||||
void initializeAMDGPUAttributorLegacyPass(PassRegistry &);
|
||||
|
||||
|
||||
@@ -1742,3 +1742,8 @@ void AMDGPUAsmPrinter::emitResourceUsageRemarks(
|
||||
EmitResourceUsageRemark("BytesLDS", "LDS Size [bytes/block]",
|
||||
CurrentProgramInfo.LDSSize);
|
||||
}
|
||||
|
||||
char AMDGPUAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(AMDGPUAsmPrinter, "amdgpu-asm-printer",
|
||||
"AMDGPU Assembly Printer", false, false)
|
||||
|
||||
@@ -36,6 +36,9 @@ class MetadataStreamer;
|
||||
} // namespace AMDGPU
|
||||
|
||||
class AMDGPUAsmPrinter final : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
unsigned CodeObjectVersion;
|
||||
void initializeTargetID(const Module &M);
|
||||
|
||||
@@ -495,6 +495,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
|
||||
initializeR600EmitClauseMarkersPass(*PR);
|
||||
initializeR600MachineCFGStructurizerPass(*PR);
|
||||
initializeGlobalISel(*PR);
|
||||
initializeAMDGPUAsmPrinterPass(*PR);
|
||||
initializeAMDGPUDAGToDAGISelLegacyPass(*PR);
|
||||
initializeGCNDPPCombineLegacyPass(*PR);
|
||||
initializeSILowerI1CopiesLegacyPass(*PR);
|
||||
|
||||
@@ -27,6 +27,7 @@ FunctionPass *createARCISelDag(ARCTargetMachine &TM, CodeGenOptLevel OptLevel);
|
||||
FunctionPass *createARCExpandPseudosPass();
|
||||
FunctionPass *createARCOptAddrMode();
|
||||
FunctionPass *createARCBranchFinalizePass();
|
||||
void initializeARCAsmPrinterPass(PassRegistry &);
|
||||
void initializeARCDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
@@ -35,9 +35,11 @@ class ARCAsmPrinter : public AsmPrinter {
|
||||
ARCMCInstLower MCInstLowering;
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
explicit ARCAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)),
|
||||
: AsmPrinter(TM, std::move(Streamer), ID),
|
||||
MCInstLowering(&OutContext, *this) {}
|
||||
|
||||
StringRef getPassName() const override { return "ARC Assembly Printer"; }
|
||||
@@ -72,6 +74,11 @@ bool ARCAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
return AsmPrinter::runOnMachineFunction(MF);
|
||||
}
|
||||
|
||||
char ARCAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(ARCAsmPrinter, "arc-asm-printer", "ARC Assmebly Printer", false,
|
||||
false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCAsmPrinter() {
|
||||
RegisterAsmPrinter<ARCAsmPrinter> X(getTheARCTarget());
|
||||
|
||||
@@ -98,6 +98,7 @@ MachineFunctionInfo *ARCTargetMachine::createMachineFunctionInfo(
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCTarget() {
|
||||
RegisterTargetMachine<ARCTargetMachine> X(getTheARCTarget());
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeARCAsmPrinterPass(PR);
|
||||
initializeARCDAGToDAGISelLegacyPass(PR);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ FunctionPass *createARMFixCortexA57AES1742098Pass();
|
||||
void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
|
||||
ARMAsmPrinter &AP);
|
||||
|
||||
void initializeARMAsmPrinterPass(PassRegistry &);
|
||||
void initializeARMBlockPlacementPass(PassRegistry &);
|
||||
void initializeARMBranchTargetsPass(PassRegistry &);
|
||||
void initializeARMConstantIslandsPass(PassRegistry &);
|
||||
|
||||
@@ -50,7 +50,7 @@ using namespace llvm;
|
||||
|
||||
ARMAsmPrinter::ARMAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr), AFI(nullptr),
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), Subtarget(nullptr), AFI(nullptr),
|
||||
MCP(nullptr), InConstantPool(false), OptimizationGoals(-1) {}
|
||||
|
||||
void ARMAsmPrinter::emitFunctionBodyEnd() {
|
||||
@@ -2434,6 +2434,11 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) {
|
||||
EmitToStreamer(*OutStreamer, TmpInst);
|
||||
}
|
||||
|
||||
char ARMAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(ARMAsmPrinter, "arm-asm-printer", "ARM Assembly Printer", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Target Registry Stuff
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@@ -29,7 +29,10 @@ namespace ARM {
|
||||
}
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY ARMAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
/// Subtarget - Keep a pointer to the ARMSubtarget around so that we can
|
||||
/// make the right decision when printing asm code for different targets.
|
||||
const ARMSubtarget *Subtarget;
|
||||
@@ -152,6 +155,7 @@ public:
|
||||
/// the .s file.
|
||||
void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) override;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
||||
@@ -91,6 +91,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMTarget() {
|
||||
|
||||
PassRegistry &Registry = *PassRegistry::getPassRegistry();
|
||||
initializeGlobalISel(Registry);
|
||||
initializeARMAsmPrinterPass(Registry);
|
||||
initializeARMLoadStoreOptPass(Registry);
|
||||
initializeARMPreAllocLoadStoreOptPass(Registry);
|
||||
initializeARMParallelDSPPass(Registry);
|
||||
|
||||
@@ -31,6 +31,7 @@ FunctionPass *createAVRExpandPseudoPass();
|
||||
FunctionPass *createAVRFrameAnalyzerPass();
|
||||
FunctionPass *createAVRBranchSelectionPass();
|
||||
|
||||
void initializeAVRAsmPrinterPass(PassRegistry &);
|
||||
void initializeAVRDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeAVRExpandPseudoPass(PassRegistry &);
|
||||
void initializeAVRShiftExpandPass(PassRegistry &);
|
||||
|
||||
@@ -39,13 +39,15 @@
|
||||
|
||||
#define DEBUG_TYPE "avr-asm-printer"
|
||||
|
||||
namespace llvm {
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
|
||||
/// An AVR assembly code printer.
|
||||
class AVRAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
AVRAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), MRI(*TM.getMCRegisterInfo()) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), MRI(*TM.getMCRegisterInfo()) {}
|
||||
|
||||
StringRef getPassName() const override { return "AVR Assembly Printer"; }
|
||||
|
||||
@@ -68,11 +70,15 @@ public:
|
||||
|
||||
void emitStartOfAsmFile(Module &M) override;
|
||||
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const MCRegisterInfo &MRI;
|
||||
bool EmittedStructorSymbolAttrs = false;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
void AVRAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
|
||||
raw_ostream &O) {
|
||||
const MachineOperand &MO = MI->getOperand(OpNo);
|
||||
@@ -324,8 +330,11 @@ void AVRAsmPrinter::emitStartOfAsmFile(Module &M) {
|
||||
MCConstantExpr::create(SubTM->getIORegRAMPZ(), MMI->getContext()));
|
||||
}
|
||||
|
||||
} // end of namespace llvm
|
||||
char AVRAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(AVRAsmPrinter, "avr-asm-printer", "AVR Assembly Printer", false,
|
||||
false)
|
||||
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRAsmPrinter() {
|
||||
llvm::RegisterAsmPrinter<llvm::AVRAsmPrinter> X(llvm::getTheAVRTarget());
|
||||
llvm::RegisterAsmPrinter<AVRAsmPrinter> X(getTheAVRTarget());
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRTarget() {
|
||||
RegisterTargetMachine<AVRTargetMachine> X(getTheAVRTarget());
|
||||
|
||||
auto &PR = *PassRegistry::getPassRegistry();
|
||||
initializeAVRAsmPrinterPass(PR);
|
||||
initializeAVRExpandPseudoPass(PR);
|
||||
initializeAVRShiftExpandPass(PR);
|
||||
initializeAVRDAGToDAGISelLegacyPass(PR);
|
||||
|
||||
@@ -34,6 +34,7 @@ InstructionSelector *createBPFInstructionSelector(const BPFTargetMachine &,
|
||||
const BPFSubtarget &,
|
||||
const BPFRegisterBankInfo &);
|
||||
|
||||
void initializeBPFAsmPrinterPass(PassRegistry &);
|
||||
void initializeBPFCheckAndAdjustIRPass(PassRegistry&);
|
||||
void initializeBPFDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeBPFMIPeepholePass(PassRegistry &);
|
||||
|
||||
@@ -37,7 +37,7 @@ class BPFAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
explicit BPFAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), BTF(nullptr) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), BTF(nullptr) {}
|
||||
|
||||
StringRef getPassName() const override { return "BPF Assembly Printer"; }
|
||||
bool doInitialization(Module &M) override;
|
||||
@@ -49,6 +49,8 @@ public:
|
||||
|
||||
void emitInstruction(const MachineInstr *MI) override;
|
||||
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
BTFDebug *BTF;
|
||||
};
|
||||
@@ -147,6 +149,11 @@ void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) {
|
||||
EmitToStreamer(*OutStreamer, TmpInst);
|
||||
}
|
||||
|
||||
char BPFAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(BPFAsmPrinter, "bpf-asm-printer", "BPF Assembly Printer", false,
|
||||
false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFAsmPrinter() {
|
||||
RegisterAsmPrinter<BPFAsmPrinter> X(getTheBPFleTarget());
|
||||
|
||||
@@ -45,6 +45,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTarget() {
|
||||
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeGlobalISel(PR);
|
||||
initializeBPFAsmPrinterPass(PR);
|
||||
initializeBPFCheckAndAdjustIRPass(PR);
|
||||
initializeBPFMIPeepholePass(PR);
|
||||
initializeBPFMIPreEmitPeepholePass(PR);
|
||||
|
||||
@@ -26,6 +26,7 @@ class Pass;
|
||||
extern char &HexagonCopyHoistingID;
|
||||
extern char &HexagonExpandCondsetsID;
|
||||
extern char &HexagonTfrCleanupID;
|
||||
void initializeHexagonAsmPrinterPass(PassRegistry &);
|
||||
void initializeHexagonBitSimplifyPass(PassRegistry &);
|
||||
void initializeHexagonBranchRelaxationPass(PassRegistry &);
|
||||
void initializeHexagonCFGOptimizerPass(PassRegistry &);
|
||||
|
||||
@@ -853,6 +853,11 @@ void HexagonAsmPrinter::LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI) {
|
||||
EmitSled(MI, SledKind::TAIL_CALL);
|
||||
}
|
||||
|
||||
char HexagonAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(HexagonAsmPrinter, "hexagon-asm-printer",
|
||||
"Hexagon Assembly Printer", false, false)
|
||||
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonAsmPrinter() {
|
||||
RegisterAsmPrinter<HexagonAsmPrinter> X(getTheHexagonTarget());
|
||||
}
|
||||
|
||||
@@ -27,6 +27,10 @@ class raw_ostream;
|
||||
class TargetMachine;
|
||||
|
||||
class HexagonAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const HexagonSubtarget *Subtarget = nullptr;
|
||||
|
||||
void emitAttributes();
|
||||
@@ -34,7 +38,7 @@ class TargetMachine;
|
||||
public:
|
||||
explicit HexagonAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override {
|
||||
Subtarget = &Fn.getSubtarget<HexagonSubtarget>();
|
||||
|
||||
@@ -179,6 +179,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonTarget() {
|
||||
RegisterTargetMachine<HexagonTargetMachine> X(getTheHexagonTarget());
|
||||
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeHexagonAsmPrinterPass(PR);
|
||||
initializeHexagonBitSimplifyPass(PR);
|
||||
initializeHexagonConstExtendersPass(PR);
|
||||
initializeHexagonConstPropagationPass(PR);
|
||||
|
||||
@@ -37,6 +37,7 @@ FunctionPass *createLanaiMemAluCombinerPass();
|
||||
// operations.
|
||||
FunctionPass *createLanaiSetflagAluCombinerPass();
|
||||
|
||||
void initializeLanaiAsmPrinterPass(PassRegistry &);
|
||||
void initializeLanaiDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeLanaiMemAluCombinerPass(PassRegistry &);
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class LanaiAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
explicit LanaiAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "Lanai Assembly Printer"; }
|
||||
|
||||
@@ -52,6 +52,9 @@ public:
|
||||
private:
|
||||
void customEmitInstruction(const MachineInstr *MI);
|
||||
void emitCallInstruction(const MachineInstr *MI);
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
};
|
||||
} // end of anonymous namespace
|
||||
|
||||
@@ -233,6 +236,11 @@ bool LanaiAsmPrinter::isBlockOnlyReachableByFallthrough(
|
||||
return !I->isBarrier();
|
||||
}
|
||||
|
||||
char LanaiAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(LanaiAsmPrinter, "lanai-asm-printer", "Lanai Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiAsmPrinter() {
|
||||
RegisterAsmPrinter<LanaiAsmPrinter> X(getTheLanaiTarget());
|
||||
|
||||
@@ -31,6 +31,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiTarget() {
|
||||
RegisterTargetMachine<LanaiTargetMachine> registered_target(
|
||||
getTheLanaiTarget());
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeLanaiAsmPrinterPass(PR);
|
||||
initializeLanaiDAGToDAGISelLegacyPass(PR);
|
||||
initializeLanaiMemAluCombinerPass(PR);
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ FunctionPass *createLoongArchMergeBaseOffsetOptPass();
|
||||
FunctionPass *createLoongArchOptWInstrsPass();
|
||||
FunctionPass *createLoongArchPreRAExpandPseudoPass();
|
||||
FunctionPass *createLoongArchExpandPseudoPass();
|
||||
void initializeLoongArchAsmPrinterPass(PassRegistry &);
|
||||
void initializeLoongArchDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeLoongArchDeadRegisterDefinitionsPass(PassRegistry &);
|
||||
void initializeLoongArchExpandAtomicPseudoPass(PassRegistry &);
|
||||
|
||||
@@ -297,6 +297,11 @@ bool LoongArchAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
return true;
|
||||
}
|
||||
|
||||
char LoongArchAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(LoongArchAsmPrinter, "loongarch-asm-printer",
|
||||
"LoongArch Assembly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLoongArchAsmPrinter() {
|
||||
RegisterAsmPrinter<LoongArchAsmPrinter> X(getTheLoongArch32Target());
|
||||
|
||||
@@ -22,12 +22,16 @@
|
||||
namespace llvm {
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY LoongArchAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const MCSubtargetInfo *STI;
|
||||
|
||||
public:
|
||||
explicit LoongArchAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), STI(TM.getMCSubtargetInfo()) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), STI(TM.getMCSubtargetInfo()) {}
|
||||
|
||||
StringRef getPassName() const override {
|
||||
return "LoongArch Assembly Printer";
|
||||
|
||||
@@ -46,6 +46,7 @@ InstructionSelector *
|
||||
createM68kInstructionSelector(const M68kTargetMachine &, const M68kSubtarget &,
|
||||
const M68kRegisterBankInfo &);
|
||||
|
||||
void initializeM68kAsmPrinterPass(PassRegistry &);
|
||||
void initializeM68kDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeM68kExpandPseudoPass(PassRegistry &);
|
||||
void initializeM68kGlobalBaseRegPass(PassRegistry &);
|
||||
|
||||
@@ -195,6 +195,11 @@ void M68kAsmPrinter::emitStartOfAsmFile(Module &M) {
|
||||
|
||||
void M68kAsmPrinter::emitEndOfAsmFile(Module &M) {}
|
||||
|
||||
char M68kAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(M68kAsmPrinter, "m68k-asm-printer", "M68k Assembly Printer",
|
||||
false, false)
|
||||
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeM68kAsmPrinter() {
|
||||
RegisterAsmPrinter<M68kAsmPrinter> X(getTheM68kTarget());
|
||||
}
|
||||
|
||||
@@ -49,13 +49,15 @@ class LLVM_LIBRARY_VISIBILITY M68kAsmPrinter
|
||||
void printAbsMem(const MachineInstr *MI, unsigned OpNum, raw_ostream &OS);
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
const M68kSubtarget *Subtarget;
|
||||
const M68kMachineFunctionInfo *MMFI;
|
||||
std::unique_ptr<M68kMCInstLower> MCInstLowering;
|
||||
|
||||
explicit M68kAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {
|
||||
Subtarget = static_cast<M68kTargetMachine &>(TM).getSubtargetImpl();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeM68kTarget() {
|
||||
RegisterTargetMachine<M68kTargetMachine> X(getTheM68kTarget());
|
||||
auto *PR = PassRegistry::getPassRegistry();
|
||||
initializeGlobalISel(*PR);
|
||||
initializeM68kAsmPrinterPass(*PR);
|
||||
initializeM68kDAGToDAGISelLegacyPass(*PR);
|
||||
initializeM68kExpandPseudoPass(*PR);
|
||||
initializeM68kGlobalBaseRegPass(*PR);
|
||||
|
||||
@@ -43,6 +43,7 @@ FunctionPass *createMSP430ISelDag(MSP430TargetMachine &TM,
|
||||
|
||||
FunctionPass *createMSP430BranchSelectionPass();
|
||||
|
||||
void initializeMSP430AsmPrinterPass(PassRegistry &);
|
||||
void initializeMSP430DAGToDAGISelLegacyPass(PassRegistry &);
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace {
|
||||
class MSP430AsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
MSP430AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "MSP430 Assembly Printer"; }
|
||||
|
||||
@@ -54,6 +54,8 @@ namespace {
|
||||
void emitInstruction(const MachineInstr *MI) override;
|
||||
|
||||
void EmitInterruptVectorSection(MachineFunction &ISR);
|
||||
|
||||
static char ID;
|
||||
};
|
||||
} // end of anonymous namespace
|
||||
|
||||
@@ -181,6 +183,11 @@ bool MSP430AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
return false;
|
||||
}
|
||||
|
||||
char MSP430AsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(MSP430AsmPrinter, "msp430-asm-printer",
|
||||
"MSP430 Assembly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMSP430AsmPrinter() {
|
||||
RegisterAsmPrinter<MSP430AsmPrinter> X(getTheMSP430Target());
|
||||
|
||||
@@ -25,6 +25,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMSP430Target() {
|
||||
// Register the target.
|
||||
RegisterTargetMachine<MSP430TargetMachine> X(getTheMSP430Target());
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeMSP430AsmPrinterPass(PR);
|
||||
initializeMSP430DAGToDAGISelLegacyPass(PR);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &,
|
||||
const MipsRegisterBankInfo &);
|
||||
|
||||
void initializeMicroMipsSizeReducePass(PassRegistry &);
|
||||
void initializeMipsAsmPrinterPass(PassRegistry &);
|
||||
void initializeMipsBranchExpansionPass(PassRegistry &);
|
||||
void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeMipsDelaySlotFillerPass(PassRegistry &);
|
||||
|
||||
@@ -1292,6 +1292,11 @@ bool MipsAsmPrinter::isLongBranchPseudo(int Opcode) const {
|
||||
|| Opcode == Mips::LONG_BRANCH_DADDiu2Op);
|
||||
}
|
||||
|
||||
char MipsAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(MipsAsmPrinter, "mips-asm-printer", "Mips Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMipsAsmPrinter() {
|
||||
RegisterAsmPrinter<MipsAsmPrinter> X(getTheMipsTarget());
|
||||
|
||||
@@ -117,13 +117,15 @@ private:
|
||||
bool isLongBranchPseudo(int Opcode) const;
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
const MipsSubtarget *Subtarget;
|
||||
const MipsFunctionInfo *MipsFI;
|
||||
MipsMCInstLower MCInstLowering;
|
||||
|
||||
explicit MipsAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), MCInstLowering(*this) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), MCInstLowering(*this) {}
|
||||
|
||||
StringRef getPassName() const override { return "Mips Assembly Printer"; }
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMipsTarget() {
|
||||
|
||||
PassRegistry *PR = PassRegistry::getPassRegistry();
|
||||
initializeGlobalISel(*PR);
|
||||
initializeMipsAsmPrinterPass(*PR);
|
||||
initializeMipsDelaySlotFillerPass(*PR);
|
||||
initializeMipsBranchExpansionPass(*PR);
|
||||
initializeMicroMipsSizeReducePass(*PR);
|
||||
|
||||
@@ -59,6 +59,7 @@ MachineFunctionPass *createNVPTXForwardParamsPass();
|
||||
void initializeNVVMReflectLegacyPassPass(PassRegistry &);
|
||||
void initializeGenericToNVVMLegacyPassPass(PassRegistry &);
|
||||
void initializeNVPTXAllocaHoistingPass(PassRegistry &);
|
||||
void initializeNVPTXAsmPrinterPass(PassRegistry &);
|
||||
void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &);
|
||||
void initializeNVPTXAtomicLowerPass(PassRegistry &);
|
||||
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
|
||||
|
||||
@@ -2013,6 +2013,11 @@ void NVPTXAsmPrinter::printMemOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
}
|
||||
}
|
||||
|
||||
char NVPTXAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(NVPTXAsmPrinter, "nvptx-asm-printer", "NVPTX Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXAsmPrinter() {
|
||||
RegisterAsmPrinter<NVPTXAsmPrinter> X(getTheNVPTXTarget32());
|
||||
|
||||
@@ -145,9 +145,12 @@ class LLVM_LIBRARY_VISIBILITY NVPTXAsmPrinter : public AsmPrinter {
|
||||
|
||||
friend class AggBuffer;
|
||||
|
||||
private:
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
StringRef getPassName() const override { return "NVPTX Assembly Printer"; }
|
||||
|
||||
private:
|
||||
const Function *F;
|
||||
|
||||
void emitStartOfAsmFile(Module &M) override;
|
||||
@@ -239,7 +242,7 @@ private:
|
||||
|
||||
public:
|
||||
NVPTXAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)),
|
||||
: AsmPrinter(TM, std::move(Streamer), ID),
|
||||
EmitGeneric(static_cast<NVPTXTargetMachine &>(TM).getDrvInterface() ==
|
||||
NVPTX::CUDA) {}
|
||||
|
||||
|
||||
@@ -99,6 +99,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXTarget() {
|
||||
initializeNVVMIntrRangePass(PR);
|
||||
initializeGenericToNVVMLegacyPassPass(PR);
|
||||
initializeNVPTXAllocaHoistingPass(PR);
|
||||
initializeNVPTXAsmPrinterPass(PR);
|
||||
initializeNVPTXAssignValidGlobalNamesPass(PR);
|
||||
initializeNVPTXAtomicLowerPass(PR);
|
||||
initializeNVPTXLowerArgsLegacyPassPass(PR);
|
||||
|
||||
@@ -78,6 +78,8 @@ class ModulePass;
|
||||
void initializePPCExpandAtomicPseudoPass(PassRegistry &);
|
||||
void initializePPCCTRLoopsPass(PassRegistry &);
|
||||
void initializePPCDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializePPCLinuxAsmPrinterPass(PassRegistry &);
|
||||
void initializePPCAIXAsmPrinterPass(PassRegistry &);
|
||||
|
||||
extern char &PPCVSXFMAMutateID;
|
||||
|
||||
|
||||
@@ -159,8 +159,8 @@ protected:
|
||||
|
||||
public:
|
||||
explicit PPCAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
std::unique_ptr<MCStreamer> Streamer, char &ID)
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "PowerPC Assembly Printer"; }
|
||||
|
||||
@@ -216,9 +216,11 @@ public:
|
||||
/// PPCLinuxAsmPrinter - PowerPC assembly printer, customized for Linux
|
||||
class PPCLinuxAsmPrinter : public PPCAsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
explicit PPCLinuxAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: PPCAsmPrinter(TM, std::move(Streamer)) {}
|
||||
: PPCAsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override {
|
||||
return "Linux PPC Assembly Printer";
|
||||
@@ -262,8 +264,10 @@ private:
|
||||
uint64_t getAliasOffset(const Constant *C);
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
PPCAIXAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: PPCAsmPrinter(TM, std::move(Streamer)) {
|
||||
: PPCAsmPrinter(TM, std::move(Streamer), ID) {
|
||||
if (MAI->isLittleEndian())
|
||||
report_fatal_error(
|
||||
"cannot create AIX PPC Assembly Printer for a little-endian target");
|
||||
@@ -2219,6 +2223,11 @@ void PPCLinuxAsmPrinter::emitFunctionBodyEnd() {
|
||||
}
|
||||
}
|
||||
|
||||
char PPCLinuxAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(PPCLinuxAsmPrinter, "ppc-linux-asm-printer",
|
||||
"Linux PPC Assembly Printer", false, false)
|
||||
|
||||
void PPCAIXAsmPrinter::emitLinkage(const GlobalValue *GV,
|
||||
MCSymbol *GVSym) const {
|
||||
MCSymbolAttr LinkageAttr = MCSA_Invalid;
|
||||
@@ -3369,6 +3378,11 @@ void PPCAIXAsmPrinter::emitModuleCommandLines(Module &M) {
|
||||
OutStreamer->emitXCOFFCInfoSym(".GCC.command.line", RSOS.str());
|
||||
}
|
||||
|
||||
char PPCAIXAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(PPCAIXAsmPrinter, "ppc-aix-asm-printer",
|
||||
"AIX PPC Assembly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCAsmPrinter() {
|
||||
TargetRegistry::RegisterAsmPrinter(getThePPC32Target(),
|
||||
|
||||
@@ -144,6 +144,8 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCTarget() {
|
||||
initializeGlobalISel(PR);
|
||||
initializePPCCTRLoopsPass(PR);
|
||||
initializePPCDAGToDAGISelLegacyPass(PR);
|
||||
initializePPCLinuxAsmPrinterPass(PR);
|
||||
initializePPCAIXAsmPrinterPass(PR);
|
||||
}
|
||||
|
||||
static bool isLittleEndianTriple(const Triple &T) {
|
||||
|
||||
@@ -116,6 +116,8 @@ void initializeRISCVVLOptimizerPass(PassRegistry &);
|
||||
|
||||
FunctionPass *createRISCVVMV0EliminationPass();
|
||||
void initializeRISCVVMV0EliminationPass(PassRegistry &);
|
||||
|
||||
void initializeRISCVAsmPrinterPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif
|
||||
|
||||
@@ -55,12 +55,16 @@ extern const SubtargetFeatureKV RISCVFeatureKV[RISCV::NumSubtargetFeatures];
|
||||
|
||||
namespace {
|
||||
class RISCVAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const RISCVSubtarget *STI;
|
||||
|
||||
public:
|
||||
explicit RISCVAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "RISC-V Assembly Printer"; }
|
||||
|
||||
@@ -1210,3 +1214,8 @@ void RISCVAsmPrinter::emitMachineConstantPoolValue(
|
||||
uint64_t Size = getDataLayout().getTypeAllocSize(RCPV->getType());
|
||||
OutStreamer->emitValue(Expr, Size);
|
||||
}
|
||||
|
||||
char RISCVAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(RISCVAsmPrinter, "riscv-asm-printer", "RISC-V Assembly Printer",
|
||||
false, false)
|
||||
|
||||
@@ -149,6 +149,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeRISCVTarget() {
|
||||
initializeRISCVLoadStoreOptPass(*PR);
|
||||
initializeRISCVExpandAtomicPseudoPass(*PR);
|
||||
initializeRISCVRedundantCopyEliminationPass(*PR);
|
||||
initializeRISCVAsmPrinterPass(*PR);
|
||||
}
|
||||
|
||||
static StringRef computeDataLayout(const Triple &TT,
|
||||
|
||||
@@ -36,6 +36,7 @@ createSPIRVInstructionSelector(const SPIRVTargetMachine &TM,
|
||||
const RegisterBankInfo &RBI);
|
||||
|
||||
void initializeSPIRVModuleAnalysisPass(PassRegistry &);
|
||||
void initializeSPIRVAsmPrinterPass(PassRegistry &);
|
||||
void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PassRegistry &);
|
||||
void initializeSPIRVPreLegalizerPass(PassRegistry &);
|
||||
void initializeSPIRVPreLegalizerCombinerPass(PassRegistry &);
|
||||
|
||||
@@ -50,7 +50,8 @@ class SPIRVAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
explicit SPIRVAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), ST(nullptr), TII(nullptr) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), ST(nullptr), TII(nullptr) {}
|
||||
static char ID;
|
||||
bool ModuleSectionsEmitted;
|
||||
const SPIRVSubtarget *ST;
|
||||
const SPIRVInstrInfo *TII;
|
||||
@@ -635,6 +636,11 @@ bool SPIRVAsmPrinter::doInitialization(Module &M) {
|
||||
return AsmPrinter::doInitialization(M);
|
||||
}
|
||||
|
||||
char SPIRVAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(SPIRVAsmPrinter, "spirv-asm-printer", "SPIRV Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVAsmPrinter() {
|
||||
RegisterAsmPrinter<SPIRVAsmPrinter> X(getTheSPIRV32Target());
|
||||
|
||||
@@ -46,6 +46,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVTarget() {
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeGlobalISel(PR);
|
||||
initializeSPIRVModuleAnalysisPass(PR);
|
||||
initializeSPIRVAsmPrinterPass(PR);
|
||||
initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PR);
|
||||
initializeSPIRVStructurizerPass(PR);
|
||||
initializeSPIRVPreLegalizerCombinerPass(PR);
|
||||
|
||||
@@ -29,6 +29,7 @@ class SparcTargetMachine;
|
||||
FunctionPass *createSparcISelDag(SparcTargetMachine &TM);
|
||||
FunctionPass *createSparcDelaySlotFillerPass();
|
||||
|
||||
void initializeSparcAsmPrinterPass(PassRegistry &);
|
||||
void initializeSparcDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeErrataWorkaroundPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
@@ -47,7 +47,7 @@ class SparcAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
explicit SparcAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "Sparc Assembly Printer"; }
|
||||
|
||||
@@ -73,6 +73,9 @@ public:
|
||||
|
||||
private:
|
||||
void lowerToMCInst(const MachineInstr *MI, MCInst &OutMI);
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
};
|
||||
} // end of anonymous namespace
|
||||
|
||||
@@ -503,6 +506,11 @@ bool SparcAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
||||
return false;
|
||||
}
|
||||
|
||||
char SparcAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(SparcAsmPrinter, "sparc-asm-printer", "Sparc Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcAsmPrinter() {
|
||||
RegisterAsmPrinter<SparcAsmPrinter> X(getTheSparcTarget());
|
||||
|
||||
@@ -28,6 +28,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcTarget() {
|
||||
RegisterTargetMachine<SparcelTargetMachine> Z(getTheSparcelTarget());
|
||||
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeSparcAsmPrinterPass(PR);
|
||||
initializeSparcDAGToDAGISelLegacyPass(PR);
|
||||
initializeErrataWorkaroundPass(PR);
|
||||
}
|
||||
|
||||
@@ -198,6 +198,7 @@ FunctionPass *createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM);
|
||||
FunctionPass *createSystemZPostRewritePass(SystemZTargetMachine &TM);
|
||||
FunctionPass *createSystemZTDCPass();
|
||||
|
||||
void initializeSystemZAsmPrinterPass(PassRegistry &);
|
||||
void initializeSystemZCopyPhysRegsPass(PassRegistry &);
|
||||
void initializeSystemZDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
void initializeSystemZElimComparePass(PassRegistry &);
|
||||
|
||||
@@ -1742,6 +1742,11 @@ void SystemZAsmPrinter::emitFunctionEntryLabel() {
|
||||
AsmPrinter::emitFunctionEntryLabel();
|
||||
}
|
||||
|
||||
char SystemZAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(SystemZAsmPrinter, "systemz-asm-printer",
|
||||
"SystemZ Assembly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZAsmPrinter() {
|
||||
RegisterAsmPrinter<SystemZAsmPrinter> X(getTheSystemZTarget());
|
||||
|
||||
@@ -24,6 +24,9 @@ class Module;
|
||||
class raw_ostream;
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
MCSymbol *CurrentFnPPA1Sym; // PPA1 Symbol.
|
||||
MCSymbol *CurrentFnEPMarkerSym; // Entry Point Marker.
|
||||
@@ -97,7 +100,7 @@ private:
|
||||
|
||||
public:
|
||||
SystemZAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), CurrentFnPPA1Sym(nullptr),
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), CurrentFnPPA1Sym(nullptr),
|
||||
CurrentFnEPMarkerSym(nullptr), PPA2Sym(nullptr),
|
||||
ADATable(TM.getPointerSize(0)) {}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZTarget() {
|
||||
// Register the target.
|
||||
RegisterTargetMachine<SystemZTargetMachine> X(getTheSystemZTarget());
|
||||
auto &PR = *PassRegistry::getPassRegistry();
|
||||
initializeSystemZAsmPrinterPass(PR);
|
||||
initializeSystemZElimComparePass(PR);
|
||||
initializeSystemZShortenInstPass(PR);
|
||||
initializeSystemZLongBranchPass(PR);
|
||||
|
||||
@@ -29,6 +29,7 @@ class VETargetMachine;
|
||||
|
||||
FunctionPass *createVEISelDag(VETargetMachine &TM);
|
||||
FunctionPass *createLVLGenPass();
|
||||
void initializeVEAsmPrinterPass(PassRegistry &);
|
||||
void initializeVEDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
|
||||
void LowerVEMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
|
||||
|
||||
@@ -41,7 +41,7 @@ class VEAsmPrinter : public AsmPrinter {
|
||||
|
||||
public:
|
||||
explicit VEAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID) {}
|
||||
|
||||
StringRef getPassName() const override { return "VE Assembly Printer"; }
|
||||
|
||||
@@ -62,6 +62,8 @@ public:
|
||||
const char *ExtraCode, raw_ostream &O) override;
|
||||
bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
|
||||
const char *ExtraCode, raw_ostream &O) override;
|
||||
|
||||
static char ID;
|
||||
};
|
||||
} // end of anonymous namespace
|
||||
|
||||
@@ -419,6 +421,11 @@ bool VEAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
|
||||
return false;
|
||||
}
|
||||
|
||||
char VEAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(VEAsmPrinter, "ve-asm-printer", "VE Assembly Printer", false,
|
||||
false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVEAsmPrinter() {
|
||||
RegisterAsmPrinter<VEAsmPrinter> X(getTheVETarget());
|
||||
|
||||
@@ -30,6 +30,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVETarget() {
|
||||
RegisterTargetMachine<VETargetMachine> X(getTheVETarget());
|
||||
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeVEAsmPrinterPass(PR);
|
||||
initializeVEDAGToDAGISelLegacyPass(PR);
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ void initializeOptimizeReturnedPass(PassRegistry &);
|
||||
void initializeWebAssemblyRefTypeMem2LocalPass(PassRegistry &);
|
||||
void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &);
|
||||
void initializeWebAssemblyArgumentMovePass(PassRegistry &);
|
||||
void initializeWebAssemblyAsmPrinterPass(PassRegistry &);
|
||||
void initializeWebAssemblyCleanCodeAfterTrapPass(PassRegistry &);
|
||||
void initializeWebAssemblyCFGSortPass(PassRegistry &);
|
||||
void initializeWebAssemblyCFGStackifyPass(PassRegistry &);
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "MCTargetDesc/WebAssemblyTargetStreamer.h"
|
||||
#include "TargetInfo/WebAssemblyTargetInfo.h"
|
||||
#include "Utils/WebAssemblyTypeUtilities.h"
|
||||
#include "WebAssembly.h"
|
||||
#include "WebAssemblyMCInstLower.h"
|
||||
#include "WebAssemblyMachineFunctionInfo.h"
|
||||
#include "WebAssemblyRegisterInfo.h"
|
||||
@@ -752,6 +753,11 @@ bool WebAssemblyAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
||||
return AsmPrinter::PrintAsmMemoryOperand(MI, OpNo, ExtraCode, OS);
|
||||
}
|
||||
|
||||
char WebAssemblyAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(WebAssemblyAsmPrinter, "webassembly-asm-printer",
|
||||
"WebAssembly Assmebly Printer", false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeWebAssemblyAsmPrinter() {
|
||||
RegisterAsmPrinter<WebAssemblyAsmPrinter> X(getTheWebAssemblyTarget32());
|
||||
|
||||
@@ -19,6 +19,10 @@ namespace llvm {
|
||||
class WebAssemblyTargetStreamer;
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY WebAssemblyAsmPrinter final : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const WebAssemblySubtarget *Subtarget;
|
||||
const MachineRegisterInfo *MRI;
|
||||
WebAssemblyFunctionInfo *MFI;
|
||||
@@ -27,8 +31,8 @@ class LLVM_LIBRARY_VISIBILITY WebAssemblyAsmPrinter final : public AsmPrinter {
|
||||
public:
|
||||
explicit WebAssemblyAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr), MRI(nullptr),
|
||||
MFI(nullptr) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), Subtarget(nullptr),
|
||||
MRI(nullptr), MFI(nullptr) {}
|
||||
|
||||
StringRef getPassName() const override {
|
||||
return "WebAssembly Assembly Printer";
|
||||
|
||||
@@ -69,6 +69,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeWebAssemblyTarget() {
|
||||
initializeOptimizeReturnedPass(PR);
|
||||
initializeWebAssemblyRefTypeMem2LocalPass(PR);
|
||||
initializeWebAssemblyArgumentMovePass(PR);
|
||||
initializeWebAssemblyAsmPrinterPass(PR);
|
||||
initializeWebAssemblySetP2AlignOperandsPass(PR);
|
||||
initializeWebAssemblyReplacePhysRegsPass(PR);
|
||||
initializeWebAssemblyOptimizeLiveIntervalsPass(PR);
|
||||
|
||||
@@ -176,6 +176,7 @@ void initializeFPSPass(PassRegistry &);
|
||||
void initializeFixupBWInstPassPass(PassRegistry &);
|
||||
void initializeFixupLEAPassPass(PassRegistry &);
|
||||
void initializeX86ArgumentStackSlotPassPass(PassRegistry &);
|
||||
void initializeX86AsmPrinterPass(PassRegistry &);
|
||||
void initializeX86FixupInstTuningPassPass(PassRegistry &);
|
||||
void initializeX86FixupVectorConstantsPassPass(PassRegistry &);
|
||||
void initializeWinEHStatePassPass(PassRegistry &);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "MCTargetDesc/X86MCTargetDesc.h"
|
||||
#include "MCTargetDesc/X86TargetStreamer.h"
|
||||
#include "TargetInfo/X86TargetInfo.h"
|
||||
#include "X86.h"
|
||||
#include "X86InstrInfo.h"
|
||||
#include "X86MachineFunctionInfo.h"
|
||||
#include "X86Subtarget.h"
|
||||
@@ -53,7 +54,7 @@ using namespace llvm;
|
||||
|
||||
X86AsmPrinter::X86AsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), FM(*this) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), FM(*this) {}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Primitive Helper Functions.
|
||||
@@ -1086,6 +1087,11 @@ void X86AsmPrinter::emitEndOfAsmFile(Module &M) {
|
||||
}
|
||||
}
|
||||
|
||||
char X86AsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(X86AsmPrinter, "x86-asm-printer", "X86 Assembly Printer", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Target Registry Stuff
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@@ -25,6 +25,10 @@ class X86Subtarget;
|
||||
class TargetMachine;
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
const X86Subtarget *Subtarget = nullptr;
|
||||
FaultMaps FM;
|
||||
std::unique_ptr<MCCodeEmitter> CodeEmitter;
|
||||
|
||||
@@ -102,6 +102,7 @@ extern "C" LLVM_C_ABI void LLVMInitializeX86Target() {
|
||||
initializeX86ReturnThunksPass(PR);
|
||||
initializeX86DAGToDAGISelLegacyPass(PR);
|
||||
initializeX86ArgumentStackSlotPassPass(PR);
|
||||
initializeX86AsmPrinterPass(PR);
|
||||
initializeX86FixupInstTuningPassPass(PR);
|
||||
initializeX86FixupVectorConstantsPassPass(PR);
|
||||
initializeX86DynAllocaExpanderPass(PR);
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace llvm {
|
||||
FunctionPass *createXCoreISelDag(XCoreTargetMachine &TM,
|
||||
CodeGenOptLevel OptLevel);
|
||||
ModulePass *createXCoreLowerThreadLocalPass();
|
||||
void initializeXCoreAsmPrinterPass(PassRegistry &);
|
||||
void initializeXCoreDAGToDAGISelLegacyPass(PassRegistry &);
|
||||
|
||||
} // end namespace llvm;
|
||||
|
||||
@@ -49,9 +49,11 @@ namespace {
|
||||
XCoreTargetStreamer &getTargetStreamer();
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
explicit XCoreAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), MCInstLowering(*this) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), MCInstLowering(*this) {}
|
||||
|
||||
StringRef getPassName() const override { return "XCore Assembly Printer"; }
|
||||
|
||||
@@ -288,6 +290,11 @@ void XCoreAsmPrinter::emitInstruction(const MachineInstr *MI) {
|
||||
EmitToStreamer(*OutStreamer, TmpInst);
|
||||
}
|
||||
|
||||
char XCoreAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(XCoreAsmPrinter, "xcore-asm-printer", "XCore Assembly Printer",
|
||||
false, false)
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreAsmPrinter() {
|
||||
RegisterAsmPrinter<XCoreAsmPrinter> X(getTheXCoreTarget());
|
||||
|
||||
@@ -105,6 +105,7 @@ void XCorePassConfig::addPreEmitPass() {
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreTarget() {
|
||||
RegisterTargetMachine<XCoreTargetMachine> X(getTheXCoreTarget());
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeXCoreAsmPrinterPass(PR);
|
||||
initializeXCoreDAGToDAGISelLegacyPass(PR);
|
||||
initializeXCoreLowerThreadLocalPass(PR);
|
||||
}
|
||||
|
||||
@@ -19,10 +19,12 @@
|
||||
#include "llvm/Support/CodeGen.h"
|
||||
|
||||
namespace llvm {
|
||||
class XtensaTargetMachine;
|
||||
class FunctionPass;
|
||||
class PassRegistry;
|
||||
class XtensaTargetMachine;
|
||||
|
||||
FunctionPass *createXtensaISelDag(XtensaTargetMachine &TM,
|
||||
CodeGenOptLevel OptLevel);
|
||||
void initializeXtensaAsmPrinterPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
#endif // LLVM_LIB_TARGET_XTENSA_XTENSA_H
|
||||
|
||||
@@ -312,6 +312,11 @@ void XtensaAsmPrinter::lowerToMCInst(const MachineInstr *MI,
|
||||
}
|
||||
}
|
||||
|
||||
char XtensaAsmPrinter::ID = 0;
|
||||
|
||||
INITIALIZE_PASS(XtensaAsmPrinter, "xtensa-asm-printer",
|
||||
"Xtensa Assembly Printer", false, false)
|
||||
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaAsmPrinter() {
|
||||
RegisterAsmPrinter<XtensaAsmPrinter> A(getTheXtensaTarget());
|
||||
}
|
||||
|
||||
@@ -29,9 +29,11 @@ class LLVM_LIBRARY_VISIBILITY XtensaAsmPrinter : public AsmPrinter {
|
||||
const MCSubtargetInfo *STI;
|
||||
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
explicit XtensaAsmPrinter(TargetMachine &TM,
|
||||
std::unique_ptr<MCStreamer> Streamer)
|
||||
: AsmPrinter(TM, std::move(Streamer)), STI(TM.getMCSubtargetInfo()) {}
|
||||
: AsmPrinter(TM, std::move(Streamer), ID), STI(TM.getMCSubtargetInfo()) {}
|
||||
|
||||
StringRef getPassName() const override { return "Xtensa Assembly Printer"; }
|
||||
void emitInstruction(const MachineInstr *MI) override;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/MC/TargetRegistry.h"
|
||||
#include "llvm/PassRegistry.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include <optional>
|
||||
|
||||
@@ -27,6 +28,8 @@ using namespace llvm;
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaTarget() {
|
||||
// Register the target.
|
||||
RegisterTargetMachine<XtensaTargetMachine> A(getTheXtensaTarget());
|
||||
PassRegistry &PR = *PassRegistry::getPassRegistry();
|
||||
initializeXtensaAsmPrinterPass(PR);
|
||||
}
|
||||
|
||||
static std::string computeDataLayout(const Triple &TT, StringRef CPU,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -start-after=livedebugvalues -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
|
||||
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -start-before=amdgpu-asm-printer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
|
||||
|
||||
# GCN-LABEL: foo:
|
||||
# GCN: s_getpc_b64 vcc
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -mtriple=riscv32 -verify-machineinstrs -start-before=riscv-expand-pseudo -simplify-mir -o /dev/null -pass-remarks-analysis=asm-printer %s 2>&1 | FileCheck %s
|
||||
# RUN: llc -mtriple=riscv32 -verify-machineinstrs -start-before=riscv-asm-printer -simplify-mir -o /dev/null -pass-remarks-analysis=asm-printer %s 2>&1 | FileCheck %s
|
||||
---
|
||||
name: instrs
|
||||
tracksRegLiveness: true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Check if the alignment directive is put on the correct place when the basic block section option is used.
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
|
||||
# How to generate the input:
|
||||
# foo.c
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Start after bbsections0-prepare and check that the BB address map is generated.
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
|
||||
# How to generate the input:
|
||||
# foo.cc
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Start after bbsections0-prepare and check if the right code is generated.
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer %s -o - | FileCheck %s -check-prefix=CHECK
|
||||
|
||||
|
||||
# How to generate the input:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||
# RUN: llc -start-before=aarch64-asm-printer -filetype=obj -o - %s \
|
||||
# RUN: | llvm-dwarfdump - | FileCheck %s
|
||||
# CHECK: .debug_info contents:
|
||||
# CHECK: DW_TAG_formal_parameter
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-before=aarch64-asm-printer -filetype=obj -o - %s \
|
||||
# RUN: | llvm-dwarfdump - | FileCheck %s --implicit-check-not=DW_TAG_GNU_call_site_parameter
|
||||
#
|
||||
# Based on the following C reproducer:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-before=aarch64-asm-printer -filetype=obj -o - %s \
|
||||
# RUN: | llvm-dwarfdump - | FileCheck %s --implicit-check-not=DW_TAG_GNU_call_site_parameter
|
||||
#
|
||||
# Based on the following C reproducer:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -emit-call-site-info -start-after=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||
# RUN: llc -emit-call-site-info -start-before=aarch64-asm-printer -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||
|
||||
# Based on the following C reproducer:
|
||||
#
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -emit-call-site-info -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||
# RUN: llc -emit-call-site-info -start-before=aarch64-asm-printer -filetype=obj -o - %s \
|
||||
# RUN: | llvm-dwarfdump -v - | FileCheck %s
|
||||
|
||||
# This tests for a crash in DwarfDebug's singular DBG_VALUE range promotion when
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: not --crash llc -mtriple aarch64-linux-gnu -verify-machineinstrs -start-after=livedebugvalues \
|
||||
# RUN: not --crash llc -mtriple aarch64-linux-gnu -verify-machineinstrs -start-before=aarch64-asm-printer \
|
||||
# RUN: -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: *** Bad machine code: Non-terminator instruction after the first terminator ***
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||
# RUN: llc -mtriple aarch64-linux-gnu -start-before=aarch64-asm-printer -filetype=obj -o - %s \
|
||||
# RUN: | llvm-dwarfdump - | FileCheck %s
|
||||
# The value needs to be composed of sub-registers, but the
|
||||
# sub-registers cross the fragment boundary.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RUN: llc -start-after=livedebugvalues --filetype=obj %s -o - \
|
||||
# RUN: llc -start-before=x86-asm-printer --filetype=obj %s -o - \
|
||||
# RUN: | llvm-dwarfdump -v - | FileCheck %s
|
||||
#
|
||||
# Generated at -O2, stopped after livedebugvalues, with some metadata removed
|
||||
|
||||
Reference in New Issue
Block a user