diff options
-rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.h | 1 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86MCInstLower.cpp | 7 |
3 files changed, 8 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index c205395aa084..3fc0eec8d1ed 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -66,6 +66,9 @@ bool X86AsmPrinter::runOnMachineFunction(MachineFunction &MF) { EmitFPOData = Subtarget->isTargetWin32() && MF.getMMI().getModule()->getCodeViewFlag(); + IndCSPrefix = + MF.getMMI().getModule()->getModuleFlag("indirect_branch_cs_prefix"); + SetupMachineFunction(MF); if (Subtarget->isTargetCOFF()) { @@ -86,6 +89,8 @@ bool X86AsmPrinter::runOnMachineFunction(MachineFunction &MF) { EmitFPOData = false; + IndCSPrefix = false; + // We didn't modify anything. return false; } diff --git a/llvm/lib/Target/X86/X86AsmPrinter.h b/llvm/lib/Target/X86/X86AsmPrinter.h index d53c26b729ef..043c4b855475 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.h +++ b/llvm/lib/Target/X86/X86AsmPrinter.h @@ -31,6 +31,7 @@ class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter { std::unique_ptr<MCCodeEmitter> CodeEmitter; bool EmitFPOData = false; bool ShouldEmitWeakSwiftAsyncExtendedFramePointerFlags = false; + bool IndCSPrefix = false; // This utility class tracks the length of a stackmap instruction's 'shadow'. // It is used by the X86AsmPrinter to ensure that the stackmap shadow diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp index bfbded8c5d64..e6116642aaa4 100644 --- a/llvm/lib/Target/X86/X86MCInstLower.cpp +++ b/llvm/lib/Target/X86/X86MCInstLower.cpp @@ -2449,9 +2449,6 @@ void X86AsmPrinter::emitInstruction(const MachineInstr *MI) { if (OutStreamer->isVerboseAsm()) addConstantComments(MI, *OutStreamer); - bool IndCS = - MF->getMMI().getModule()->getModuleFlag("indirect_branch_cs_prefix"); - switch (MI->getOpcode()) { case TargetOpcode::DBG_VALUE: llvm_unreachable("Should be handled target independently"); @@ -2501,7 +2498,7 @@ void X86AsmPrinter::emitInstruction(const MachineInstr *MI) { } case X86::TAILJMPd64: - if (IndCS && MI->hasRegisterImplicitUseOperand(X86::R11)) + if (IndCSPrefix && MI->hasRegisterImplicitUseOperand(X86::R11)) EmitAndCountInstruction(MCInstBuilder(X86::CS_PREFIX)); LLVM_FALLTHROUGH; case X86::TAILJMPr: @@ -2684,7 +2681,7 @@ void X86AsmPrinter::emitInstruction(const MachineInstr *MI) { .addReg(X86::NoRegister)); return; case X86::CALL64pcrel32: - if (IndCS && MI->hasRegisterImplicitUseOperand(X86::R11)) + if (IndCSPrefix && MI->hasRegisterImplicitUseOperand(X86::R11)) EmitAndCountInstruction(MCInstBuilder(X86::CS_PREFIX)); break; } |