Skip to content

Segfault in polly::ScopDetection::hasPossiblyDistributableLoop #113772

@wctrl

Description

@wctrl
Error message
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: clang -Wp,-MD,fs/exfat/.exfat_core.o.d -nostdinc -isystem /home/user/clang/build/llvm/final/lib/clang/19/include -I../arch/arm64/include -I./arch/arm64/include/generated -I../include -I../drivers/misc/mediatek/include -I./include -I../arch/arm64/include/uapi -I./arch/arm64/include/generated/uapi -I../include/uapi -I./include/generated/uapi -include ../include/linux/kconfig.h -I../fs/exfat -Ifs/exfat -D__KERNEL__ -Qunused-arguments -mlittle-endian -DKASAN_SHADOW_SCALE_SHIFT=3 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 --target=aarch64-linux-gnu -integrated-as -Werror=unknown-warning-option -fuse-ld=lld -fno-PIE -mno-implicit-float -DCONFIG_AS_LSE=1 -DCONFIG_VDSO32=1 -DCONFIG_CC_HAS_K_CONSTRAINT=1 -fno-asynchronous-unwind-tables -fno-pic -Wno-asm-operand-widths -DKASAN_SHADOW_SCALE_SHIFT=3 -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -Wno-address-of-packed-member -Wno-tautological-compare -Wno-format -O2 -march=armv8.2-a+dotprod -mcpu=cortex-a55+crypto+crc -mllvm --polly -mllvm --polly-detect-full-functions -mllvm --polly-optimized-scops -mllvm --polly-pattern-matching-based-opts -mllvm --polly-postopts -mllvm --polly-register-tiling -mllvm --polly-reschedule -mllvm --polly-tiling -mllvm --polly-vectorizer=stripmine -mllvm --polly-stmt-granularity=store -mllvm --polly-dce-precise-steps=-1 -mllvm --polly-delicm-max-ops=0 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=2800 -fstack-protector-strong -Wno-format-invalid-specifier -Wno-gnu -Wno-duplicate-decl-specifier -Wno-tautological-compare -mno-global-merge -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -Wno-pointer-sign -Wno-array-bounds -Wno-empty-body -Wno-fortify-source -Wno-ignored-attributes -Wno-incompatible-pointer-types -Wno-int-conversion -Wno-misleading-indentation -Wno-non-literal-null-conversion -Wno-parentheses-equality -Wno-pointer-bool-conversion -Wno-pointer-integer-compare -Wno-pointer-to-int-cast -Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-variable -fno-strict-overflow -fno-merge-all-constants -fno-stack-check -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -fmacro-prefix-map=../= -Wno-initializer-overrides -Wno-unused-value -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-uninitialized -Wno-pointer-to-enum-cast -Wno-unaligned-access -Wno-cast-function-type-strict -Wno-enum-compare-conditional -Wno-enum-enum-conversion -DTARGET_PRODUCT_MERLINCOMMON -I../drivers/misc/mediatek/include -DKBUILD_BASENAME=\"exfat_core\" -DKBUILD_MODNAME=\"exfat\" -c -o fs/exfat/.tmp_exfat_core.o ../fs/exfat/exfat_core.c
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,polly::CodePreparationPass,polly::FunctionToScopPassAdaptor<llvm::PassManager<Scop, ScopAnalysisManager, ScopStandardAnalysisResults &, SPMUpdater &>>,sroa<modify-cfg>,early-cse<memssa>,speculative-execution<only-if-divergent-target>,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,aggressive-instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,reassociate,constraint-elimination,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop(loop-idiom,indvars,simple-loop-unswitch<no-nontrivial;trivial>,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,jump-threading,correlated-propagation,adce,memcpyopt,dse,move-auto-init,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop(loop-rotate<header-duplication;no-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-use-loop-info;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-use-loop-info;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;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "../fs/exfat/exfat_core.c"
4.	Running pass "polly::FunctionToScopPassAdaptor<llvm::PassManager<Scop, ScopAnalysisManager, ScopStandardAnalysisResults &, SPMUpdater &>>" on function "free_upcase_table"
 #0 0x00005c7684f621f5 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) Signals.cpp:0:0
 #1 0x00005c7684f62053 llvm::sys::CleanupOnSignal(unsigned long) (/home/user/clang/build/llvm/final/bin/clang-19+0x3f7b053)
 #2 0x00005c7684f2c19e (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #3 0x00005c7684f2c31e CrashRecoverySignalHandler(int) (.llvm.1103187361377165362) CrashRecoveryContext.cpp:0:0
 #4 0x000079bd2a64c1d0 (/usr/lib/libc.so.6+0x3d1d0)
 #5 0x00005c76858b4faf polly::ScopDetection::hasPossiblyDistributableLoop(polly::ScopDetection::DetectionContext&) const ScopDetection.cpp:0:0
 #6 0x00005c76858af8d2 polly::ScopDetection::isProfitableRegion(polly::ScopDetection::DetectionContext&) const ScopDetection.cpp:0:0
 #7 0x00005c76858aef5e polly::ScopDetection::detect(llvm::Function&) ScopDetection.cpp:0:0
 #8 0x00005c76858b613a polly::ScopAnalysis::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/user/clang/build/llvm/final/bin/clang-19+0x48cf13a)
 #9 0x00005c768588e470 llvm::detail::AnalysisPassModel<llvm::Function, polly::ScopAnalysis, llvm::AnalysisManager<llvm::Function>::Invalidator>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#10 0x00005c768310d307 llvm::AnalysisManager<llvm::Function>::getResultImpl(llvm::AnalysisKey*, llvm::Function&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2126307)
#11 0x00005c768588b0bc polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#12 0x00005c768588b04d llvm::detail::PassModel<llvm::Function, polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#13 0x00005c768311214d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/user/clang/build/llvm/final/bin/clang-19+0x212b14d)
#14 0x00005c7683111e6d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) X86CodeGenPassBuilder.cpp:0:0
#15 0x00005c768357ec29 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2597c29)
#16 0x00005c768357ea0d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) X86CodeGenPassBuilder.cpp:0:0
#17 0x00005c768357b399 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2594399)
#18 0x00005c7684186116 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#19 0x00005c768418dbe4 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/user/clang/build/llvm/final/bin/clang-19+0x31a6be4)
#20 0x00005c7683dc14d5 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#21 0x00005c7682dec209 clang::ParseAST(clang::Sema&, bool, bool) (/home/user/clang/build/llvm/final/bin/clang-19+0x1e05209)
#22 0x00005c7683f44bfc clang::FrontendAction::Execute() (/home/user/clang/build/llvm/final/bin/clang-19+0x2f5dbfc)
#23 0x00005c7683f44649 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2f5d649)
#24 0x00005c7683f28294 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/user/clang/build/llvm/final/bin/clang-19+0x2f41294)
#25 0x00005c7683f2625c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/user/clang/build/llvm/final/bin/clang-19+0x2f3f25c)
#26 0x00005c7683f2db48 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#27 0x00005c7685457eb9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#28 0x00005c7684555163 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/user/clang/build/llvm/final/bin/clang-19+0x356e163)
#29 0x00005c7684554f93 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/user/clang/build/llvm/final/bin/clang-19+0x356df93)
#30 0x00005c7683f2fba4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/user/clang/build/llvm/final/bin/clang-19+0x2f48ba4)
#31 0x00005c7683f2f0aa clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2f480aa)
#32 0x00005c7683f2995d clang_main(int, char**, llvm::ToolContext const&) (/home/user/clang/build/llvm/final/bin/clang-19+0x2f4295d)
#33 0x00005c76841f74d2 main (/home/user/clang/build/llvm/final/bin/clang-19+0x32104d2)
#34 0x000079bd2a634e08 (/usr/lib/libc.so.6+0x25e08)
#35 0x000079bd2a634ecc __libc_start_main (/usr/lib/libc.so.6+0x25ecc)
#36 0x00005c7684872e05 _start (/home/user/clang/build/llvm/final/bin/clang-19+0x388be05)
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
ClangBuiltLinux clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/user/clang/build/llvm/final/bin
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/exfat_core-7f3f9e.c
clang: note: diagnostic msg: /tmp/exfat_core-7f3f9e.sh
clang: note: diagnostic msg:

********************

Files:
files.zip

By experimental way found that --polly-detect-full-functions causes crash.

Metadata

Metadata

Assignees

Labels

crashPrefer [crash-on-valid] or [crash-on-invalid]polly

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions