Skip to content

opt -gvn fails with Assertion `!isa<IndirectBrInst>(TI) && "Cannot split critical edge from IndirectBrInst"' #49237

@mikaelholmen

Description

@mikaelholmen
Bugzilla Link 49893
Version trunk
OS Linux
Attachments bbi-b4783.ll reproducer
CC @fhahn

Extended Description

Reproduce with:
opt -S -gvn -o - bbi-54783.ll

Result:

opt: ../lib/Transforms/Utils/BreakCriticalEdges.cpp:117: llvm::BasicBlock llvm::SplitKnownCriticalEdge(llvm::Instruction , unsigned int, const llvm::CriticalEdgeSplittingOptions &, const llvm::Twine &): Assertion `!isa(TI) && "Cannot split critical edge from IndirectBrInst"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: /repo/uabelho/master-github/llvm/build-all/bin/opt -S -gvn -o - bbi-54783.ll
#​0 0x000000000294ad33 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x294ad33)
#​1 0x00000000029489ee llvm::sys::RunSignalHandlers() (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x29489ee)
#​2 0x000000000294b1f6 SignalHandler(int) Signals.cpp:0:0
#​3 0x00007f14f6ed0630 __restore_rt sigaction.c:0:0
#​4 0x00007f14f4603387 raise (/lib64/libc.so.6+0x36387)
#​5 0x00007f14f4604a78 abort (/lib64/libc.so.6+0x37a78)
#​6 0x00007f14f45fc1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
#​7 0x00007f14f45fc252 (/lib64/libc.so.6+0x2f252)
#​8 0x0000000002974451 llvm::SplitKnownCriticalEdge(llvm::Instruction
, unsigned int, llvm::CriticalEdgeSplittingOptions const&, llvm::Twine const&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x2974451)
#​9 0x0000000002654f87 llvm::GVN::splitCriticalEdges(llvm::BasicBlock
, llvm::BasicBlock*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x2654f87)
#​10 0x000000000265c52f llvm::GVN::addDeadBlock(llvm::BasicBlock*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x265c52f)
#​11 0x000000000265a77f llvm::GVN::processFoldableCondBr(llvm::BranchInst*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x265a77f)
#​12 0x0000000002659ddd llvm::GVN::processInstruction(llvm::Instruction*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x2659ddd)
#​13 0x000000000265b305 llvm::GVN::processBlock(llvm::BasicBlock*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x265b305)
#​14 0x000000000265a870 llvm::GVN::iterateOnFunction(llvm::Function&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x265a870)
#​15 0x0000000002650a6d llvm::GVN::runImpl(llvm::Function&, llvm::AssumptionCache&, llvm::DominatorTree&, llvm::TargetLibraryInfo const&, llvm::AAResults&, llvm::MemoryDependenceResults*, llvm::LoopInfo*, llvm::OptimizationRemarkEmitter*, llvm::MemorySSA*) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x2650a6d)
#​16 0x000000000265022c llvm::GVN::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x265022c)
#​17 0x0000000002bfe79d llvm::detail::PassModel<llvm::Function, llvm::GVN, llvm::PreservedAnalyses, llvm::AnalysisManagerllvm::Function >::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) crtstuff.c:0:0
#​18 0x000000000217c769 llvm::PassManager<llvm::Function, llvm::AnalysisManagerllvm::Function >::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x217c769)
#​19 0x0000000000a8a3cd llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManagerllvm::Function >, llvm::PreservedAnalyses, llvm::AnalysisManagerllvm::Function >::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) crtstuff.c:0:0
#​20 0x0000000002180f66 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x2180f66)
#​21 0x000000000077563d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManagerllvm::Module >::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) crtstuff.c:0:0
#​22 0x000000000217b5cb llvm::PassManager<llvm::Module, llvm::AnalysisManagerllvm::Module >::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x217b5cb)
#​23 0x000000000076e543 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRefllvm::StringRef, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x76e543)
#​24 0x000000000077f236 main (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x77f236)
#​25 0x00007f14f45ef555 __libc_start_main (/lib64/libc.so.6+0x22555)
#​26 0x0000000000769705 _start (/repo/uabelho/master-github/llvm/build-all/bin/opt+0x769705)
Abort

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillacrashPrefer [crash-on-valid] or [crash-on-invalid]llvm:GVNGVN and NewGVN stages (Global value numbering)

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions