Cyclic module dependency [Re: [llvm] r357201 - Temporarily revert "SafepointIRVerifier port to new Pass Manager"]
Fedor Sergeev via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 29 06:12:49 PDT 2019
Adrian, (or anybody else who could help)
this seemingly innocent port of SafepointIRVerifier caused a build
failure in "modular" buildbot.
I'm able to reproduce the failure but I have absolutely no clue on whats
going on.
Why SafepointIRVerifier.h gets included into compilations of, say,
IR/BasicBlock.cpp or IR/AsmWriter.cpp?
Also, SafepointIRVerifier.h was doing pretty much the same as Verifier.h
does
(i.e. includes PassManager.h to get PassInfoMixin template definition).
Why Verifier.h does not cause a similar build issue?
Could you, please, explain/help with this problem?
regards,
Fedor.
On 3/28/19 9:34 PM, Adrian Prantl via llvm-commits wrote:
> Author: adrian
> Date: Thu Mar 28 11:34:34 2019
> New Revision: 357201
>
> URL: http://llvm.org/viewvc/llvm-project?rev=357201&view=rev
> Log:
> Temporarily revert "SafepointIRVerifier port to new Pass Manager"
> to unbreak the modular bots and its follow-up commit.
>
> This reverts commit https://reviews.llvm.org/D59825
> because it introduced a
>
> fatal error: cyclic dependency in module 'LLVM_intrinsic_gen': LLVM_intrinsic_gen -> LLVM_IR -> LLVM_intrinsic_gen
>
> Modified:
> llvm/trunk/include/llvm/IR/SafepointIRVerifier.h
> llvm/trunk/lib/IR/SafepointIRVerifier.cpp
> llvm/trunk/lib/Passes/PassBuilder.cpp
> llvm/trunk/lib/Passes/PassRegistry.def
>
> Modified: llvm/trunk/include/llvm/IR/SafepointIRVerifier.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/SafepointIRVerifier.h?rev=357201&r1=357200&r2=357201&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/SafepointIRVerifier.h (original)
> +++ llvm/trunk/include/llvm/IR/SafepointIRVerifier.h Thu Mar 28 11:34:34 2019
> @@ -18,8 +18,6 @@
> #ifndef LLVM_IR_SAFEPOINT_IR_VERIFIER
> #define LLVM_IR_SAFEPOINT_IR_VERIFIER
>
> -#include "llvm/IR/PassManager.h"
> -
> namespace llvm {
>
> class Function;
> @@ -31,16 +29,6 @@ void verifySafepointIR(Function &F);
> /// Create an instance of the safepoint verifier pass which can be added to
> /// a pass pipeline to check for relocation bugs.
> FunctionPass *createSafepointIRVerifierPass();
> -
> -/// Create an instance of the safepoint verifier pass which can be added to
> -/// a pass pipeline to check for relocation bugs.
> -class SafepointIRVerifierPass : public PassInfoMixin<SafepointIRVerifierPass> {
> -
> -public:
> - explicit SafepointIRVerifierPass() {}
> -
> - PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
> -};
> }
>
> #endif // LLVM_IR_SAFEPOINT_IR_VERIFIER
>
> Modified: llvm/trunk/lib/IR/SafepointIRVerifier.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/SafepointIRVerifier.cpp?rev=357201&r1=357200&r2=357201&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/SafepointIRVerifier.cpp (original)
> +++ llvm/trunk/lib/IR/SafepointIRVerifier.cpp Thu Mar 28 11:34:34 2019
> @@ -197,17 +197,6 @@ protected:
> static void Verify(const Function &F, const DominatorTree &DT,
> const CFGDeadness &CD);
>
> -namespace llvm {
> -PreservedAnalyses SafepointIRVerifierPass::run(Function &F,
> - FunctionAnalysisManager &AM) {
> - const auto &DT = AM.getResult<DominatorTreeAnalysis>(F);
> - CFGDeadness CD;
> - CD.processFunction(F, DT);
> - Verify(F, DT, CD);
> - return PreservedAnalyses::all();
> -}
> -}
> -
> namespace {
>
> struct SafepointIRVerifier : public FunctionPass {
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=357201&r1=357200&r2=357201&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Thu Mar 28 11:34:34 2019
> @@ -56,7 +56,6 @@
> #include "llvm/IR/Dominators.h"
> #include "llvm/IR/IRPrintingPasses.h"
> #include "llvm/IR/PassManager.h"
> -#include "llvm/IR/SafepointIRVerifier.h"
> #include "llvm/IR/Verifier.h"
> #include "llvm/Support/Debug.h"
> #include "llvm/Support/FormatVariadic.h"
>
> Modified: llvm/trunk/lib/Passes/PassRegistry.def
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=357201&r1=357200&r2=357201&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassRegistry.def (original)
> +++ llvm/trunk/lib/Passes/PassRegistry.def Thu Mar 28 11:34:34 2019
> @@ -231,7 +231,6 @@ FUNCTION_PASS("verify<domtree>", Dominat
> FUNCTION_PASS("verify<loops>", LoopVerifierPass())
> FUNCTION_PASS("verify<memoryssa>", MemorySSAVerifierPass())
> FUNCTION_PASS("verify<regions>", RegionInfoVerifierPass())
> -FUNCTION_PASS("verify<safepoint-ir>", SafepointIRVerifierPass())
> FUNCTION_PASS("view-cfg", CFGViewerPass())
> FUNCTION_PASS("view-cfg-only", CFGOnlyViewerPass())
> FUNCTION_PASS("transform-warning", WarnMissedTransformationsPass())
>
>
> _______________________________________________
> 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