From: Ahmed Bougacha Date: Mon, 18 Sep 2017 18:50:09 +0000 (+0000) Subject: [GlobalISel] Only build expensive remarks if they're enabled. NFC. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a9fc8d291ae6084567dd70ab79d9c29aa86cf924;p=llvm [GlobalISel] Only build expensive remarks if they're enabled. NFC. r313390 taught 'allowExtraAnalysis' to check whether remarks are enabled at all. Use that to only do the expensive instruction printing if they are. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313552 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/GlobalISel/IRTranslator.cpp b/lib/CodeGen/GlobalISel/IRTranslator.cpp index 1cf1091a8bb..aaa7b73572f 100644 --- a/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -1291,14 +1291,18 @@ bool IRTranslator::runOnMachineFunction(MachineFunction &CurMF) { if (translate(Inst)) continue; - std::string InstStrStorage; - raw_string_ostream InstStr(InstStrStorage); - InstStr << Inst; - OptimizationRemarkMissed R("gisel-irtranslator", "GISelFailure", Inst.getDebugLoc(), &BB); - R << "unable to translate instruction: " << ore::NV("Opcode", &Inst) - << ": '" << InstStr.str() << "'"; + R << "unable to translate instruction: " << ore::NV("Opcode", &Inst); + + if (ORE->allowExtraAnalysis("gisel-irtranslator")) { + std::string InstStrStorage; + raw_string_ostream InstStr(InstStrStorage); + InstStr << Inst; + + R << ": '" << InstStr.str() << "'"; + } + reportTranslationError(*MF, *TPC, *ORE, R); return false; } diff --git a/lib/CodeGen/GlobalISel/Utils.cpp b/lib/CodeGen/GlobalISel/Utils.cpp index 5ecaf5c563f..a9f3d73a294 100644 --- a/lib/CodeGen/GlobalISel/Utils.cpp +++ b/lib/CodeGen/GlobalISel/Utils.cpp @@ -99,7 +99,10 @@ void llvm::reportGISelFailure(MachineFunction &MF, const TargetPassConfig &TPC, const MachineInstr &MI) { MachineOptimizationRemarkMissed R(PassName, "GISelFailure: ", MI.getDebugLoc(), MI.getParent()); - R << Msg << ": " << ore::MNV("Inst", MI); + R << Msg; + // Printing MI is expensive; only do it if expensive remarks are enabled. + if (MORE.allowExtraAnalysis(PassName)) + R << ": " << ore::MNV("Inst", MI); reportGISelFailure(MF, TPC, MORE, R); }