[llvm] 64336d3 - Revert "A new option -print-on-crash that prints the IR as it was upon entering the last pass when there is a crash."
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 23 09:43:55 PDT 2021
Reminder: When reverting, please explain why.
On 3/23/21 7:09 AM, Jamie Schmeiser via llvm-commits wrote:
> Author: Jamie Schmeiser
> Date: 2021-03-23T10:09:27-04:00
> New Revision: 64336d3421aa4351b6ef62972277e102cf5d7c57
>
> URL: https://github.com/llvm/llvm-project/commit/64336d3421aa4351b6ef62972277e102cf5d7c57
> DIFF: https://github.com/llvm/llvm-project/commit/64336d3421aa4351b6ef62972277e102cf5d7c57.diff
>
> LOG: Revert "A new option -print-on-crash that prints the IR as it was upon entering the last pass when there is a crash."
>
> This reverts commit 9544a32287eccb42a4367cff9b5888855d6b8756.
>
> Added:
>
>
> Modified:
> llvm/include/llvm/Passes/StandardInstrumentations.h
> llvm/lib/Passes/PassBuilder.cpp
> llvm/lib/Passes/PassRegistry.def
> llvm/lib/Passes/StandardInstrumentations.cpp
>
> Removed:
> llvm/test/Other/print-on-crash.ll
>
>
> ################################################################################
> diff --git a/llvm/include/llvm/Passes/StandardInstrumentations.h b/llvm/include/llvm/Passes/StandardInstrumentations.h
> index 1717f09258e52..f023a2924d8f9 100644
> --- a/llvm/include/llvm/Passes/StandardInstrumentations.h
> +++ b/llvm/include/llvm/Passes/StandardInstrumentations.h
> @@ -15,7 +15,6 @@
> #ifndef LLVM_PASSES_STANDARDINSTRUMENTATIONS_H
> #define LLVM_PASSES_STANDARDINSTRUMENTATIONS_H
>
> -#include "llvm/ADT/DenseSet.h"
> #include "llvm/ADT/STLExtras.h"
> #include "llvm/ADT/SmallVector.h"
> #include "llvm/ADT/StringRef.h"
> @@ -26,7 +25,6 @@
> #include "llvm/Support/CommandLine.h"
> #include "llvm/Transforms/IPO/SampleProfileProbe.h"
>
> -#include <mutex>
> #include <string>
> #include <utility>
>
> @@ -392,35 +390,6 @@ class VerifyInstrumentation {
> void registerCallbacks(PassInstrumentationCallbacks &PIC);
> };
>
> -// Print IR on crash.
> -class PrintCrashIRInstrumentation {
> -public:
> - PrintCrashIRInstrumentation()
> - : SavedIR("*** Dump of IR Before Last Pass Unknown ***") {}
> - ~PrintCrashIRInstrumentation();
> - void registerCallbacks(PassInstrumentationCallbacks &PIC);
> - void reportCrashIR();
> -
> -protected:
> - std::string SavedIR;
> -
> -private:
> - // All of the crash reporters that will report on a crash.
> - static DenseSet<PrintCrashIRInstrumentation *> *CrashReporters;
> - // Crash handler registered when print-on-crash is specified.
> - static void SignalHandler(void *);
> - // Exception-safe locking
> - class MtxLock {
> - public:
> - MtxLock() { Mtx.lock(); }
> - ~MtxLock() { Mtx.unlock(); }
> -
> - protected:
> - // Avoid races when creating/destroying the crash IR printers.
> - static std::mutex Mtx;
> - };
> -};
> -
> /// This class provides an interface to register all the standard pass
> /// instrumentations and manages their state (if any).
> class StandardInstrumentations {
> @@ -433,7 +402,6 @@ class StandardInstrumentations {
> IRChangedPrinter PrintChangedIR;
> PseudoProbeVerifier PseudoProbeVerification;
> InLineChangePrinter PrintChangedDiff;
> - PrintCrashIRInstrumentation PrintCrashIR;
> VerifyInstrumentation Verify;
>
> bool VerifyEach;
> @@ -451,6 +419,7 @@ extern template class TextChangeReporter<std::string>;
>
> extern template class ChangeReporter<ChangedIRData>;
> extern template class TextChangeReporter<ChangedIRData>;
> +
> } // namespace llvm
>
> #endif
>
> diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
> index 3119445da738d..3a325277e370d 100644
> --- a/llvm/lib/Passes/PassBuilder.cpp
> +++ b/llvm/lib/Passes/PassBuilder.cpp
> @@ -438,18 +438,6 @@ bool shouldPopulateClassToPassNames() {
> return !printBeforePasses().empty() || !printAfterPasses().empty();
> }
>
> -// A pass for testing -print-on-crash.
> -// DO NOT USE THIS EXCEPT FOR TESTING!
> -class TriggerCrashPass : public PassInfoMixin<TriggerCrashPass> {
> -public:
> - PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
> -};
> -
> -// DO NOT USE THIS EXCEPT FOR TESTING!
> -PreservedAnalyses TriggerCrashPass::run(Function &, FunctionAnalysisManager &) {
> - __builtin_trap();
> -}
> -
> } // namespace
>
> PassBuilder::PassBuilder(bool DebugLogging, TargetMachine *TM,
>
> diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
> index ca3ed7f19bf6d..579143d3c1c82 100644
> --- a/llvm/lib/Passes/PassRegistry.def
> +++ b/llvm/lib/Passes/PassRegistry.def
> @@ -311,7 +311,6 @@ FUNCTION_PASS("sroa", SROA())
> FUNCTION_PASS("strip-gc-relocates", StripGCRelocates())
> FUNCTION_PASS("structurizecfg", StructurizeCFGPass())
> FUNCTION_PASS("tailcallelim", TailCallElimPass())
> -FUNCTION_PASS("trigger-crash", TriggerCrashPass())
> FUNCTION_PASS("unify-loop-exits", UnifyLoopExitsPass())
> FUNCTION_PASS("vector-combine", VectorCombinePass())
> FUNCTION_PASS("verify", VerifierPass())
>
> diff --git a/llvm/lib/Passes/StandardInstrumentations.cpp b/llvm/lib/Passes/StandardInstrumentations.cpp
> index ff2a014f84531..601957034489e 100644
> --- a/llvm/lib/Passes/StandardInstrumentations.cpp
> +++ b/llvm/lib/Passes/StandardInstrumentations.cpp
> @@ -15,7 +15,6 @@
> #include "llvm/Passes/StandardInstrumentations.h"
> #include "llvm/ADT/Any.h"
> #include "llvm/ADT/Optional.h"
> -#include "llvm/ADT/SmallString.h"
> #include "llvm/ADT/StringRef.h"
> #include "llvm/Analysis/CallGraphSCCPass.h"
> #include "llvm/Analysis/LazyCallGraph.h"
> @@ -26,12 +25,10 @@
> #include "llvm/IR/PrintPasses.h"
> #include "llvm/IR/Verifier.h"
> #include "llvm/Support/CommandLine.h"
> -#include "llvm/Support/CrashRecoveryContext.h"
> #include "llvm/Support/Debug.h"
> #include "llvm/Support/FormatVariadic.h"
> #include "llvm/Support/MemoryBuffer.h"
> #include "llvm/Support/Program.h"
> -#include "llvm/Support/Signals.h"
> #include "llvm/Support/raw_ostream.h"
> #include <unordered_set>
> #include <vector>
> @@ -120,12 +117,6 @@ static cl::opt<std::string>
> DiffBinary("print-changed-
> diff -path", cl::Hidden, cl::init("
> diff "),
> cl::desc("system
> diff used by change reporters"));
>
> -// An option to print the IR that was being processed when a pass crashes.
> -static cl::opt<bool>
> - PrintCrashIR("print-on-crash",
> - cl::desc("Print the last form of the IR before crash"),
> - cl::init(false), cl::Hidden);
> -
> namespace {
>
> // Perform a system based
> diff between \p Before and \p After, using
> @@ -1162,68 +1153,6 @@ StandardInstrumentations::StandardInstrumentations(bool DebugLogging,
> PrintChangedDiff(PrintChanged == ChangePrinter::PrintChangedDiffVerbose),
> Verify(DebugLogging), VerifyEach(VerifyEach) {}
>
> -std::mutex PrintCrashIRInstrumentation::MtxLock::Mtx;
> -DenseSet<PrintCrashIRInstrumentation *>
> - *PrintCrashIRInstrumentation::CrashReporters = nullptr;
> -
> -void PrintCrashIRInstrumentation::reportCrashIR() { dbgs() << SavedIR; }
> -
> -void PrintCrashIRInstrumentation::SignalHandler(void *) {
> - // Called by signal handlers so do not lock here
> - // Are any of PrintCrashIRInstrumentation objects still alive?
> - if (!CrashReporters)
> - return;
> -
> - assert(PrintCrashIR && "Did not expect to get here without option set.");
> - for (auto I : *CrashReporters)
> - I->reportCrashIR();
> -}
> -
> -PrintCrashIRInstrumentation::~PrintCrashIRInstrumentation() {
> - if (!PrintCrashIR)
> - return;
> -
> - MtxLock Lock;
> - assert(CrashReporters && "Expected CrashReporters to be set");
> -
> - // Was this registered?
> - DenseSet<PrintCrashIRInstrumentation *>::iterator I =
> - CrashReporters->find(this);
> - if (I == CrashReporters->end())
> - return;
> - CrashReporters->erase(I);
> - if (!CrashReporters->empty())
> - return;
> - delete CrashReporters;
> - CrashReporters = nullptr;
> -}
> -
> -void PrintCrashIRInstrumentation::registerCallbacks(
> - PassInstrumentationCallbacks &PIC) {
> - if (!PrintCrashIR)
> - return;
> -
> - {
> - MtxLock Lock;
> - if (!CrashReporters) {
> - CrashReporters = new DenseSet<PrintCrashIRInstrumentation *>();
> - sys::AddSignalHandler(SignalHandler, nullptr);
> - }
> - CrashReporters->insert(this);
> - }
> - PIC.registerBeforeNonSkippedPassCallback([this](StringRef PassID, Any IR) {
> - assert((MtxLock(), CrashReporters && CrashReporters->find(this) !=
> - CrashReporters->end()) &&
> - "Expected CrashReporters to be set and containing this");
> - SavedIR.clear();
> - SmallString<80> Banner =
> - formatv("*** Dump of {0}IR Before Last Pass {1} Started ***",
> - llvm::forcePrintModuleIR() ? "Module " : "", PassID);
> - raw_string_ostream OS(SavedIR);
> - unwrapAndPrint(OS, IR, Banner, llvm::forcePrintModuleIR());
> - });
> -}
> -
> void StandardInstrumentations::registerCallbacks(
> PassInstrumentationCallbacks &PIC) {
> PrintIR.registerCallbacks(PIC);
> @@ -1237,7 +1166,6 @@ void StandardInstrumentations::registerCallbacks(
> if (VerifyEach)
> Verify.registerCallbacks(PIC);
> PrintChangedDiff.registerCallbacks(PIC);
> - PrintCrashIR.registerCallbacks(PIC);
> }
>
> namespace llvm {
>
> diff --git a/llvm/test/Other/print-on-crash.ll b/llvm/test/Other/print-on-crash.ll
> deleted file mode 100644
> index 42da462374320..0000000000000
> --- a/llvm/test/Other/print-on-crash.ll
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -; A test that the hidden option -print-on-crash properly sets a signal handler
> -; which gets called when a pass crashes. The trigger-crash pass calls
> -; __builtin_trap.
> -
> -; RUN: not --crash opt -print-on-crash -passes=trigger-crash < %s 2>&1 | FileCheck %s --check-prefix=CHECK_SIMPLE
> -
> -; A test that the signal handler set by the hidden option -print-on-crash
> -; is not called when no pass crashes.
> -
> -; RUN: opt -print-on-crash -passes="default<O2>" < %s 2>&1 | FileCheck %s --check-prefix=CHECK_NO_CRASH
> -
> -; RUN: not --crash opt -print-on-crash -print-module-scope -passes=trigger-crash < %s 2>&1 | FileCheck %s --check-prefix=CHECK_MODULE
> -
> -; The input corresponds to "int main() { return 0; }" but is irrelevant.
> -
> -; CHECK_SIMPLE: *** Dump of IR Before Last Pass {{.*}} Started ***
> -; CHECK_SIMPLE: @main
> -; CHECK_SIMPLE: entry:
> -; CHECK_NO_CRASH-NOT: *** Dump of IR
> -; CHECK_MODULE: *** Dump of Module IR Before Last Pass {{.*}} Started ***
> -; CHECK_MODULE: ; ModuleID = {{.*}}
> -
> -define i32 @main() {
> -entry:
> - %retval = alloca i32, align 4
> - store i32 0, i32* %retval, align 4
> - ret i32 0
> -}
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list