Skip to content

opt: ../lib/Analysis/MemorySSA.cpp:1766: [...] Assertion `Def == DefCheck && (Def || Use == UseCheck) && "Invalid template"' failed. #58719

@mikaelholmen

Description

@mikaelholmen

LLVM commit: 71e4e35
Reproduce with:

opt -passes="require<globals-aa>,cgscc(instcombine),function(loop-mssa(loop-simplifycfg)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>))" bbi-75359.ll -o /dev/null

Result:

opt: ../lib/Analysis/MemorySSA.cpp:1767: llvm::MemoryUseOrDef *llvm::MemorySSA::createNewAccess(llvm::Instruction *, AliasAnalysisType *, const llvm::MemoryUseOrDef *) [AliasAnalysisType = llvm::AAResults]: Assertion `Def == DefCheck && (Def || Use == UseCheck) && "Invalid template"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: build-all/bin/opt -passes=require<globals-aa>,cgscc(instcombine),function(loop-mssa(loop-simplifycfg)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>)) /home/uabelho/bbi-75359.ll -o /dev/null
 #0 0x0000000002e59633 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2e59633)
 #1 0x0000000002e5734e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2e5734e)
 #2 0x0000000002e599b6 SignalHandler(int) (build-all/bin/opt+0x2e599b6)
 #3 0x00007f2c71336630 __restore_rt (/lib64/libpthread.so.0+0xf630)
 #4 0x00007f2c6ea7d387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f2c6ea7ea78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f2c6ea761a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f2c6ea76252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000001df37e2 llvm::MemoryUseOrDef* llvm::MemorySSA::createNewAccess<llvm::AAResults>(llvm::Instruction*, llvm::AAResults*, llvm::MemoryUseOrDef const*) (build-all/bin/opt+0x1df37e2)
 #9 0x0000000001df311d llvm::MemorySSA::createDefinedAccess(llvm::Instruction*, llvm::MemoryAccess*, llvm::MemoryUseOrDef const*, bool) (build-all/bin/opt+0x1df311d)
#10 0x0000000001e0a9f4 llvm::MemorySSAUpdater::cloneUsesAndDefs(llvm::BasicBlock*, llvm::BasicBlock*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > const&, llvm::SmallDenseMap<llvm::MemoryPhi*, llvm::MemoryAccess*, 4u, llvm::DenseMapInfo<llvm::MemoryPhi*, void>, llvm::detail::DenseMapPair<llvm::MemoryPhi*, llvm::MemoryAccess*> >&, bool) (build-all/bin/opt+0x1e0a9f4)
#11 0x0000000001e0bbef llvm::MemorySSAUpdater::updateForClonedLoop(llvm::LoopBlocksRPO const&, llvm::ArrayRef<llvm::BasicBlock*>, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > const&, bool) (build-all/bin/opt+0x1e0bbef)
#12 0x0000000002d0fe42 unswitchNontrivialInvariants(llvm::Loop&, llvm::Instruction&, llvm::ArrayRef<llvm::Value*>, llvm::IVConditionInfo&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) (build-all/bin/opt+0x2d0fe42)
#13 0x0000000002d061c3 unswitchBestCondition(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) (build-all/bin/opt+0x2d061c3)
#14 0x0000000002d01dc9 unswitchLoop(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, bool, bool, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::ProfileSummaryInfo*, llvm::BlockFrequencyInfo*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) (build-all/bin/opt+0x2d01dc9)
#15 0x0000000002cffb75 llvm::SimpleLoopUnswitchPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x2cffb75)
#16 0x00000000031cf6fd llvm::detail::PassModel<llvm::Loop, llvm::SimpleLoopUnswitchPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x31cf6fd)
#17 0x00000000038246af llvm::Optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::Loop, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > > >(llvm::Loop&, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > >&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (build-all/bin/opt+0x38246af)
#18 0x00000000038243b3 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithoutLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x38243b3)
#19 0x00000000038239e8 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x38239e8)
#20 0x000000000319c1fd llvm::detail::PassModel<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x319c1fd)
#21 0x000000000382551d llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x382551d)
#22 0x00000000031cddad llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x31cddad)
#23 0x00000000026689bc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x26689bc)
#24 0x0000000000af02bd llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0xaf02bd)
#25 0x000000000266cc9e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x266cc9e)
#26 0x0000000000af009d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0xaf009d)
#27 0x0000000002667c6c llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x2667c6c)
#28 0x0000000000721cd9 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (build-all/bin/opt+0x721cd9)
#29 0x00000000007311c1 main (build-all/bin/opt+0x7311c1)
#30 0x00007f2c6ea69555 __libc_start_main (/lib64/libc.so.6+0x22555)
#31 0x000000000071a940 _start (build-all/bin/opt+0x71a940)
Abort

bbi-75359.ll.gz

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions