Skip to content

[SLP][regression] Segfault when building a Fortran workload after PR #152787 #156522

@pawosm-arm

Description

@pawosm-arm

After PR #152787 I'm experiencing the following segfault when trying to compile WRF:

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llvm/bin/flang -fc1 -triple aarch64-unknown-linux-gnu -emit-llvm-bc -I . -I ./netcdf/include -I ./inc -flto=full -mrelocation-model pic -pic-level 2 -pic-is-pie -ffast-math -target-cpu neoverse-v2 -target-feature +outli
ne-atomics -target-feature +sha2 -target-feature +sve-sha3 -target-feature +sve-aes -target-feature +sha3 -target-feature +aes -target-feature +v9a -target-feature +bf16 -target-feature +ccidx -target-feature +complxnum -target-feature +crc -target-feature +dotprod -tar
get-feature +ete -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fpac -target-feature +fullfp16 -target-feature +i8mm -target-feature +jsconv -target-feature +lse -target-feature +mte -target-feature +neon -target-feature +pauth -target-feature +perf
mon -target-feature +rand -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +spe -target-feature +ssbs -target-feature +sve -target-feature +sve-bitperm -target-feature +sve2 -target-feature +trbe -fveclib=ArmPL -fstack-arrays -vectorize-lo
ops -vectorize-slp -fversion-loops-for-stride -fconvert=swap -resource-dir llvm/lib/clang/22 -mframe-pointer=non-leaf -O3 -o module_mp_fast_sbm.fppized.o -x f95 module_mp_fast_sbm.fppized.f90
1.      Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "FIRModule"
2.      Running pass "slp-vectorizer" on function "_QMmodule_mp_fast_sbmPcoal_bott_new"
 #0 0x0000509e7509b948 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (llvm/bin/../lib/libLLVMSupport.so.22.0git+0x21b948)
 #1 0x0000509e75098f8c SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x0000509e7398a8f8 (linux-vdso.so.1+0x8f8)
 #3 0x0000509e7c03f2dc (anonymous namespace)::InstructionsCompatibilityAnalysis::buildOperands((anonymous namespace)::InstructionsState const&, llvm::ArrayRef<llvm::Value*>) SLPVectorizer.cpp:0:0
 #4 0x0000509e7c040d7c canConvertToFMA(llvm::ArrayRef<llvm::Value*>, (anonymous namespace)::InstructionsState const&, llvm::DominatorTree&, llvm::DataLayout const&, llvm::TargetTransformInfo&, llvm::TargetLibraryInfo const&) SLPVectorizer.cpp:0:0
 #5 0x0000509e7c042850 (anonymous namespace)::HorizontalReduction::getReductionCost(llvm::TargetTransformInfo*, llvm::ArrayRef<llvm::Value*>, bool, llvm::FastMathFlags, llvm::slpvectorizer::BoUpSLP const&, llvm::DominatorTree&, llvm::DataLayout const&, llvm::TargetLibraryInfo const&) SLPVectorizer.cpp:0:0
 #6 0x0000509e7c0787c4 (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&, llvm::AssumptionCache*, llvm::DominatorTree&) SLPVectorizer.cpp:0:0
 #7 0x0000509e7c07b530 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (llvm/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x21b530)
 #8 0x0000509e7c07d3e0 bool llvm::SLPVectorizerPass::vectorizeCmpInsts<std::reverse_iterator<llvm::CmpInst* const*>>(llvm::iterator_range<std::reverse_iterator<llvm::CmpInst* const*>>, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (llvm/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x21d3e0)
 #9 0x0000509e7c07fe4c llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (llvm/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x21fe4c)
#10 0x0000509e7c0851f4 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#11 0x0000509e7c085a1c llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (llvm/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x225a1c)
#12 0x0000509e78738ef0 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#13 0x0000509e7b60fd60 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (llvm/bin/../lib/../lib/libLLVMCore.so.22.0git+0x3efd60)
#14 0x0000509e7873ba40 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#15 0x0000509e7b613594 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (llvm/bin/../lib/../lib/libLLVMCore.so.22.0git+0x3f3594)
#16 0x0000509e78735700 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilder.cpp:0:0
#17 0x0000509e7b60b030 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (llvm/bin/../lib/../lib/libLLVMCore.so.22.0git+0x3eb030)
#18 0x0000509e73b33804 Fortran::frontend::CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream&) (llvm/bin/../lib/libflangFrontend.so.22.0git+0x153804)
#19 0x0000509e73b363bc Fortran::frontend::CodeGenAction::executeAction() (llvm/bin/../lib/libflangFrontend.so.22.0git+0x1563bc)
#20 0x0000509e73b2270c Fortran::frontend::FrontendAction::execute() (llvm/bin/../lib/libflangFrontend.so.22.0git+0x14270c)
#21 0x0000509e73a2c288 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (llvm/bin/../lib/libflangFrontend.so.22.0git+0x4c288)
#22 0x0000509e739b3fbc Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (llvm/bin/../lib/libflangFrontendTool.so.22.0git+0x13fbc)
#23 0x0000badef85d5114 fc1_main(llvm::ArrayRef<char const*>, char const*) (llvm/bin/flang+0x15114)
#24 0x0000badef85d44a0 main (llvm/bin/flang+0x144a0)
#25 0x0000509e753673fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x0000509e753674cc call_init ./csu/../csu/libc-start.c:128:20
#27 0x0000509e753674cc __libc_start_main ./csu/../csu/libc-start.c:379:5
#28 0x0000badef85d2bf0 _start (llvm/bin/flang+0x12bf0)
flang-22: error: unable to execute command: Segmentation fault (core dumped)
flang-22: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 22.0.0git (https://github.com/llvm/llvm-project.git 3219fb098995385d5e97449a898a8aadfc8d6be3)

Reverting 74230ff on top of the current main makes the segfault go away.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions