[llvm] r268939 - Revert "Separate the Verifier into an analysis and a transformation pass and"
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Mon May 9 10:43:24 PDT 2016
Author: adrian
Date: Mon May 9 12:43:24 2016
New Revision: 268939
URL: http://llvm.org/viewvc/llvm-project?rev=268939&view=rev
Log:
Revert "Separate the Verifier into an analysis and a transformation pass and"
This reverts commit 268937 while investigating build bot breakage.
Modified:
llvm/trunk/include/llvm/IR/DiagnosticInfo.h
llvm/trunk/include/llvm/IR/Verifier.h
llvm/trunk/lib/IR/DiagnosticInfo.cpp
llvm/trunk/lib/IR/Verifier.cpp
llvm/trunk/lib/Passes/PassRegistry.def
llvm/trunk/unittests/IR/VerifierTest.cpp
Modified: llvm/trunk/include/llvm/IR/DiagnosticInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DiagnosticInfo.h?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/DiagnosticInfo.h (original)
+++ llvm/trunk/include/llvm/IR/DiagnosticInfo.h Mon May 9 12:43:24 2016
@@ -51,7 +51,6 @@ enum DiagnosticKind {
DK_StackSize,
DK_Linker,
DK_DebugMetadataVersion,
- DK_DebugMetadataInvalid,
DK_SampleProfile,
DK_OptimizationRemark,
DK_OptimizationRemarkMissed,
@@ -215,29 +214,6 @@ public:
}
};
-/// Diagnostic information for stripping invalid debug metadata.
-class DiagnosticInfoIgnoringInvalidDebugMetadata : public DiagnosticInfo {
-private:
- /// The module that is concerned by this debug metadata version diagnostic.
- const Module &M;
-
-public:
- /// \p The module that is concerned by this debug metadata version diagnostic.
- DiagnosticInfoIgnoringInvalidDebugMetadata(
- const Module &M, DiagnosticSeverity Severity = DS_Warning)
- : DiagnosticInfo(DK_DebugMetadataVersion, Severity), M(M) {}
-
- const Module &getModule() const { return M; }
-
- /// \see DiagnosticInfo::print.
- void print(DiagnosticPrinter &DP) const override;
-
- static bool classof(const DiagnosticInfo *DI) {
- return DI->getKind() == DK_DebugMetadataInvalid;
- }
-};
-
-
/// Diagnostic information for the sample profiler.
class DiagnosticInfoSampleProfile : public DiagnosticInfo {
public:
Modified: llvm/trunk/include/llvm/IR/Verifier.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Verifier.h?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Verifier.h (original)
+++ llvm/trunk/include/llvm/IR/Verifier.h Mon May 9 12:43:24 2016
@@ -52,28 +52,6 @@ bool verifyFunction(const Function &F, r
bool verifyModule(const Module &M, raw_ostream *OS = nullptr,
bool *BrokenDebugInfo = nullptr);
-FunctionPass *createVerifierPass(bool FatalErrors = true);
-
-/// Check a module for errors, and report separate error states for IR
-/// and debug info errors.
-class VerifierAnalysis : public AnalysisInfoMixin<VerifierAnalysis> {
- friend AnalysisInfoMixin<VerifierAnalysis>;
- static char PassID;
-
-public:
- struct Result {
- bool IRBroken, DebugInfoBroken;
- };
- static void *ID() { return (void *)&PassID; }
- Result run(Module &M);
- Result run(Function &F);
-};
-
-/// Check a module for errors, but report debug info errors separately.
-/// Otherwise behaves as the normal verifyModule. Debug info errors can be
-/// "recovered" from by stripping the debug info.
-bool verifyModule(bool &BrokenDebugInfo, const Module &M, raw_ostream *OS);
-
/// \brief Create a verifier pass.
///
/// Check a module or function for validity. This is essentially a pass wrapped
@@ -84,17 +62,18 @@ bool verifyModule(bool &BrokenDebugInfo,
///
/// Note that this creates a pass suitable for the legacy pass manager. It has
/// nothing to do with \c VerifierPass.
+FunctionPass *createVerifierPass(bool FatalErrors = true);
+
class VerifierPass : public PassInfoMixin<VerifierPass> {
bool FatalErrors;
public:
explicit VerifierPass(bool FatalErrors = true) : FatalErrors(FatalErrors) {}
- PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
- PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+ PreservedAnalyses run(Module &M);
+ PreservedAnalyses run(Function &F);
};
-
} // End llvm namespace
#endif
Modified: llvm/trunk/lib/IR/DiagnosticInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DiagnosticInfo.cpp?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DiagnosticInfo.cpp (original)
+++ llvm/trunk/lib/IR/DiagnosticInfo.cpp Mon May 9 12:43:24 2016
@@ -122,11 +122,6 @@ void DiagnosticInfoDebugMetadataVersion:
<< ") in " << getModule();
}
-void DiagnosticInfoIgnoringInvalidDebugMetadata::print(
- DiagnosticPrinter &DP) const {
- DP << "ignoring invalid debug info in " << getModule().getModuleIdentifier();
-}
-
void DiagnosticInfoSampleProfile::print(DiagnosticPrinter &DP) const {
if (!FileName.empty()) {
DP << getFileName();
Modified: llvm/trunk/lib/IR/Verifier.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Verifier.cpp?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Verifier.cpp (original)
+++ llvm/trunk/lib/IR/Verifier.cpp Mon May 9 12:43:24 2016
@@ -59,7 +59,6 @@
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstIterator.h"
@@ -4483,38 +4482,15 @@ FunctionPass *llvm::createVerifierPass(b
return new VerifierLegacyPass(FatalErrors);
}
-char VerifierAnalysis::PassID;
-VerifierAnalysis::Result VerifierAnalysis::run(Module &M) {
- Result Res;
- Res.IRBroken = llvm::verifyModule(M, &dbgs(), &Res.DebugInfoBroken);
- return Res;
-}
-
-VerifierAnalysis::Result VerifierAnalysis::run(Function &F) {
- return { llvm::verifyFunction(F, &dbgs()), false };
-}
+PreservedAnalyses VerifierPass::run(Module &M) {
+ if (verifyModule(M, &dbgs()) && FatalErrors)
+ report_fatal_error("Broken module found, compilation aborted!");
-PreservedAnalyses VerifierPass::run(Module &M, ModuleAnalysisManager &AM) {
- auto Res = AM.getResult<VerifierAnalysis>(M);
- if (FatalErrors) {
- if (Res.IRBroken)
- report_fatal_error("Broken module found, compilation aborted!");
- assert(!Res.DebugInfoBroken && "Module contains invalid debug info");
- }
-
- // Strip broken debug info.
- if (Res.DebugInfoBroken) {
- DiagnosticInfoIgnoringInvalidDebugMetadata DiagInvalid(M);
- M.getContext().diagnose(DiagInvalid);
- if (!StripDebugInfo(M))
- report_fatal_error("Failed to strip malformed debug info");
- }
return PreservedAnalyses::all();
}
-PreservedAnalyses VerifierPass::run(Function &F, FunctionAnalysisManager &AM) {
- auto res = AM.getResult<VerifierAnalysis>(F);
- if (res.IRBroken && FatalErrors)
+PreservedAnalyses VerifierPass::run(Function &F) {
+ if (verifyFunction(F, &dbgs()) && FatalErrors)
report_fatal_error("Broken function found, compilation aborted!");
return PreservedAnalyses::all();
Modified: llvm/trunk/lib/Passes/PassRegistry.def
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/lib/Passes/PassRegistry.def (original)
+++ llvm/trunk/lib/Passes/PassRegistry.def Mon May 9 12:43:24 2016
@@ -23,7 +23,6 @@ MODULE_ANALYSIS("callgraph", CallGraphAn
MODULE_ANALYSIS("lcg", LazyCallGraphAnalysis())
MODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis())
MODULE_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
-MODULE_ANALYSIS("verify", VerifierAnalysis())
#ifndef MODULE_ALIAS_ANALYSIS
#define MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
@@ -88,7 +87,6 @@ FUNCTION_ANALYSIS("scalar-evolution", Sc
FUNCTION_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
FUNCTION_ANALYSIS("targetir",
TM ? TM->getTargetIRAnalysis() : TargetIRAnalysis())
-FUNCTION_ANALYSIS("verify", VerifierAnalysis())
#ifndef FUNCTION_ALIAS_ANALYSIS
#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
Modified: llvm/trunk/unittests/IR/VerifierTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/VerifierTest.cpp?rev=268939&r1=268938&r2=268939&view=diff
==============================================================================
--- llvm/trunk/unittests/IR/VerifierTest.cpp (original)
+++ llvm/trunk/unittests/IR/VerifierTest.cpp Mon May 9 12:43:24 2016
@@ -144,30 +144,5 @@ TEST(VerifierTest, CrossModuleMetadataRe
EXPECT_TRUE(StringRef(ErrorOS.str())
.startswith("Referencing global in another module!"));
}
-
-TEST(VerifierTest, StripInvalidDebugInfo) {
- LLVMContext C;
- Module M("M", C);
- DIBuilder DIB(M);
- DIB.createCompileUnit(dwarf::DW_LANG_C89, "broken.c", "/",
- "unittest", false, "", 0);
- DIB.finalize();
- EXPECT_FALSE(verifyModule(M));
-
- // Now break it.
- auto *File = DIB.createFile("not-a-CU.f", ".");
- NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
- NMD->addOperand(File);
- EXPECT_TRUE(verifyModule(M));
-
- ModulePassManager MPM(true);
- MPM.addPass(VerifierPass(false));
- ModuleAnalysisManager MAM(true);
- MAM.registerPass([&] { return VerifierAnalysis(); });
- MPM.run(M, MAM);
- EXPECT_FALSE(verifyModule(M));
-}
-
-
} // end anonymous namespace
} // end namespace llvm
More information about the llvm-commits
mailing list