| Issue |
185313
|
| Summary |
Polly BlockGenerator::generateScalarStores crashes when compiling svt-av1
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
jaschiu
|
Hi, this issue is basically a re-opening of #179135, where I had [vibe-coded fix](https://github.com/user-attachments/files/24996007/fix.patch) that successfully fixes it. The official fix for the issue (#179433) omitted the other half of my fix and I now have a test file that reproduces the LLVM crash for this unaddressed case.
My [vibe-coded fix](https://github.com/user-attachments/files/24996007/fix.patch) for #179135 solves it already.
```
ninja: job failed: /usr/lib/llvm/21/bin/clang -DARCH_X86_64=1 -DEN_AVX512_SUPPORT=1 -DEXCLUDE_HASH=0 -DHAVE_BUILTIN_EXPECT=1 -DHAVE_ELF_AUX_INFO=0 -DHAVE_VALGRIND_H=0 -DREPRODUCIBLE_BUILDS=0 -DSAFECLIB_STR_NULL_SLACK=1 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/. -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/API -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Codec -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/C_DEFAULT -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/third_party/fastfeat -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Globals -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSE2 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSSE3 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSE4_1 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_AVX2 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_AVX512 -march=native -O3 -flto -ftrapping-math -Werror=odr-Werror=strict-aliasing -fno-semantic-interposition -fopenmp -fpass-plugin=LLVMPolly.so -fplugin=LLVMPolly.so -mllvm=-polly -mllvm=-polly-vectorizer=stripmine -mllvm=-polly-omp-backend=LLVM -mllvm=-polly-parallel -mllvm=-polly-num-threads=17 -mllvm=-polly-scheduling=dynamic -std=gnu99 -fPIC -fvisibility=hidden -MD -MT Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o -MF Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o.d -o Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o -c /tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Codec/sequence_control_set.c
clang: /tmp/portage/llvm-core/polly-21.1.8/work/polly/lib/CodeGen/BlockGenerators.cpp:1324: auto polly::RegionGenerator::generateScalarStores(ScopStmt &, LoopToScevMapT &, ValueMapT &, isl_id_to_ast_expr *)::(anonymous class)::operator()() const: Assertion `(!isa<Instruction>(NewVal) || DT.dominates(cast<Instruction>(NewVal)->getParent(), Builder.GetInsertBlock())) && "Domination violation"' failed.
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: /usr/lib/llvm/21/bin/clang -DARCH_X86_64=1 -DEN_AVX512_SUPPORT=1 -DEXCLUDE_HASH=0 -DHAVE_BUILTIN_EXPECT=1 -DHAVE_ELF_AUX_INFO=0 -DHAVE_VALGRIND_H=0 -DREPRODUCIBLE_BUILDS=0 -DSAFECLIB_STR_NULL_SLACK=1 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/. -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/API -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Codec -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/C_DEFAULT -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/third_party/fastfeat -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Globals -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSE2 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSSE3 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_SSE4_1 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_AVX2 -I/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/ASM_AVX512 -march=native -O3 -flto -ftrapping-math -Werror=odr -Werror=strict-aliasing -fno-semantic-interposition -fopenmp -fpass-plugin=LLVMPolly.so -fplugin=LLVMPolly.so -mllvm=-polly -mllvm=-polly-vectorizer=stripmine -mllvm=-polly-omp-backend=LLVM -mllvm=-polly-parallel -mllvm=-polly-num-threads=17 -mllvm=-polly-scheduling=dynamic-std=gnu99 -fPIC -fvisibility=hidden -MD -MT Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o -MF Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o.d -o Source/Lib/Codec/CMakeFiles/CODEC.dir/sequence_control_set.c.o -c /tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Codec/sequence_control_set.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,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-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;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-hoist-loads-stores-with-cond-faulting;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<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-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,loop(loop-idiom,indvars,extra-simple-loop-unswitch-passes,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine<max-iterations=1;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;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,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 "/tmp/portage/media-libs/svt-av1-3.1.2/work/SVT-AV1-v3.1.2/Source/Lib/Codec/sequence_control_set.c"
4. Running pass "polly::FunctionToScopPassAdaptor<llvm::PassManager<Scop, ScopAnalysisManager, ScopStandardAnalysisResults &, SPMUpdater &>>" on function "svt_aom_b64_geom_init"
#0 0x0000777233eed31a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x28ed31a)
#1 0x0000777233eebf7d llvm::sys::RunSignalHandlers() (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x28ebf7d)
#2 0x0000777233dda3a4 (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x27da3a4)
#3 0x0000777230e44440 (/usr/lib64/libc.so.6+0x44440)
#4 0x0000777230eaafab pthread_kill (/usr/lib64/libc.so.6+0xaafab)
#5 0x0000777230e44306 raise (/usr/lib64/libc.so.6+0x44306)
#6 0x0000777230e25315 abort (/usr/lib64/libc.so.6+0x25315)
#7 0x0000777230e2527e __assert_perror_fail (/usr/lib64/libc.so.6+0x2527e)
#8 0x000077722e76ff81 (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x16ff81)
#9 0x000077722e76c762 polly::BlockGenerator::generateConditionalExecution(polly::ScopStmt&, isl::set const&, llvm::StringRef, std::function<void ()> const&) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x16c762)
#10 0x000077722e76fb1c polly::RegionGenerator::generateScalarStores(polly::ScopStmt&, llvm::DenseMap<llvm::Loop const*, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Loop const*, void>, llvm::detail::DenseMapPair<llvm::Loop const*, llvm::SCEV const*>>&, llvm::DenseMap<llvm::AssertingVH<llvm::Value>, llvm::AssertingVH<llvm::Value>, llvm::DenseMapInfo<llvm::AssertingVH<llvm::Value>, void>, llvm::detail::DenseMapPair<llvm::AssertingVH<llvm::Value>, llvm::AssertingVH<llvm::Value>>>&, isl_id_to_ast_expr*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x16fb1c)
#11 0x000077722e77b78d polly::RegionGenerator::copyStmt(polly::ScopStmt&, llvm::DenseMap<llvm::Loop const*, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Loop const*, void>, llvm::detail::DenseMapPair<llvm::Loop const*, llvm::SCEV const*>>&, isl_id_to_ast_expr*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x17b78d)
#12 0x000077722e78ac13 polly::IslNodeBuilder::createUser(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18ac13)
#13 0x000077722e78e8f1 polly::IslNodeBuilder::createForSequential(isl::ast_node_for, bool) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18e8f1)
#14 0x000077722e78a0bb polly::IslNodeBuilder::createMark(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a0bb)
#15 0x000077722e78e8f1 polly::IslNodeBuilder::createForSequential(isl::ast_node_for, bool) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18e8f1)
#16 0x000077722e78a3ca polly::IslNodeBuilder::createFor(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a3ca)
#17 0x000077722e78acd8 polly::IslNodeBuilder::createBlock(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18acd8)
#18 0x000077722e78e8f1 polly::IslNodeBuilder::createForSequential(isl::ast_node_for, bool) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18e8f1)
#19 0x000077722e78a3ca polly::IslNodeBuilder::createFor(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a3ca)
#20 0x000077722e78a193 polly::IslNodeBuilder::createMark(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a193)
#21 0x000077722e78e8f1 polly::IslNodeBuilder::createForSequential(isl::ast_node_for, bool) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18e8f1)
#22 0x000077722e78a3ca polly::IslNodeBuilder::createFor(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a3ca)
#23 0x000077722e78d1e9 polly::IslNodeBuilder::createForParallel(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18d1e9)
#24 0x000077722e78acd8 polly::IslNodeBuilder::createBlock(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18acd8)
#25 0x000077722e78a193 polly::IslNodeBuilder::createMark(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18a193)
#26 0x000077722e78acd8 polly::IslNodeBuilder::createBlock(isl_ast_node*) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x18acd8)
#27 0x000077722e797a8a (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x197a8a)
#28 0x000077722e7981d8 polly::CodeGenerationPass::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x1981d8)
#29 0x000077722e7c3c9d (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x1c3c9d)
#30 0x000077722e769004 llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x169004)
#31 0x000077722e7c584d (/usr/lib/llvm/21/bin/../lib64/../lib64/LLVMPolly.so+0x1c584d)
#32 0x00007772341ba5c1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x2bba5c1)
#33 0x000077723703b1a1 (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x5a3b1a1)
#34 0x00007772341c0a28 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x2bc0a28)
#35 0x000077723703d8b1 (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x5a3d8b1)
#36 0x00007772341b6f74 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/llvm/21/bin/../lib64/libLLVM.so.21.1+0x2bb6f74)
#37 0x000077723ad72b88 (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x2b72b88)
#38 0x000077723ad696df clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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*) (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x2b696df)
#39 0x000077723b1a68c2 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x2fa68c2)
#40 0x0000777239524a19 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x1324a19)
#41 0x000077723bcb548f clang::FrontendAction::Execute() (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x3ab548f)
#42 0x000077723bc06a10 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x3a06a10)
#43 0x000077723bd5d36a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm/21/bin/../lib64/libclang-cpp.so.21.1+0x3b5d36a)
#44 0x000064e29778a060 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm/21/bin/clang+0x16060)
#45 0x000064e297785927 (/usr/lib/llvm<truncated>Please see the issue for the entire body.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs