| Issue |
202343
|
| Summary |
clang crashes on valid code at -O{s,2,3} on x86_64-linux-gnu: Assertion `(isa<SCEVCouldNotCompute>(ConstantMaxNotTaken) || isa<SCEVConstant>(ConstantMaxNotTaken)) && "No point in having a non-constant max backedge taken count!"' failed
|
| Labels |
clang
|
| Assignees |
|
| Reporter |
zhendongsu
|
Compiler Explorer: https://godbolt.org/z/E4cPdf4Mh
Note:
- fails: 21.1.0 till trunk
- works: 20.1.0 and earlier
```
[520] % clangtk -v
clang version 23.0.0git (https://github.com/llvm/llvm-project.git 86940d72a1eba54d0a6a01bc5d418e6864344d64)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/home/suz/suz-local/software/local/clang-trunk/bin
Build config: +assertions
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda, version 12.1
[521] %
[521] % clangtk -O3 small.c
clang-23: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:9078: llvm::ScalarEvolution::ExitLimit::ExitLimit(const llvm::SCEV*, const llvm::SCEV*, const llvm::SCEV*, bool, llvm::ArrayRef<llvm::ArrayRef<const llvm::SCEVPredicate*> >): Assertion `(isa<SCEVCouldNotCompute>(ConstantMaxNotTaken) || isa<SCEVConstant>(ConstantMaxNotTaken)) && "No point in having a non-constant max backedge taken count!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and dumped files.
Stack dump:
0. Program arguments: /local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23 -cc1 -triple x86_64-unknown-linux-gnu -O3 -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/bug265 -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/bug265 -resource-dir /local/home/suz/suz-local/software/local/clang-trunk/lib/clang/23 -I /usr/local/include -I /local/suz-local/software/local/include -internal-isystem /local/home/suz/suz-local/software/local/clang-trunk/lib/clang/23/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fmessage-length=150 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -fdwarf2-cfi-asm -o /tmp/small-3aa288.o -x c small.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(drop-unnecessary-assumes,float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto;check-exit-count>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,drop-unnecessary-assumes,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-arithmetic;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;aggregate-to-vector>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,mergeicmps,expand-memcmp,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;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 "small.c"
4. Running pass "loop(loop-rotate<header-duplication;no-prepare-for-lto;check-exit-count>,loop-deletion)" on function "main"
#0 0x000055fef9d9af40 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x4555f40)
#1 0x000055fef9d97b0c llvm::sys::RunSignalHandlers() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x4552b0c)
#2 0x000055fef9d97c72 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x000055fef9d97d2c SignalHandlerTerminate(int, siginfo_t*, void*) Signals.cpp:0:0
#4 0x00007efe20147520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007efe2019b9fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x00007efe2019b9fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#7 0x00007efe2019b9fc pthread_kill ./nptl/pthread_kill.c:89:10
#8 0x00007efe20147476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#9 0x00007efe2012d7f3 abort ./stdlib/abort.c:81:7
#10 0x00007efe2012d71b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007efe2013ee96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x000055fef8c90ce4 llvm::ScalarEvolution::ExitLimit::ExitLimit(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, bool, llvm::ArrayRef<llvm::ArrayRef<llvm::SCEVPredicate const*>>) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x344bce4)
#13 0x000055fef8cf8793 llvm::ScalarEvolution::howManyGreaterThans(llvm::SCEV const*, llvm::SCEV const*, llvm::Loop const*, bool, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x34b3793)
#14 0x000055fef8cb89a9 llvm::ScalarEvolution::computeExitLimitFromICmp(llvm::Loop const*, llvm::CmpPredicate, llvm::SCEVUseT<llvm::SCEV const*>, llvm::SCEVUseT<llvm::SCEV const*>, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x34739a9)
#15 0x000055fef8ccf0b7 llvm::ScalarEvolution::computeExitLimitFromICmp(llvm::Loop const*, llvm::ICmpInst*, bool, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x348a0b7)
#16 0x000055fef8cb9525 llvm::ScalarEvolution::computeExitLimitFromCondImpl(llvm::ScalarEvolution::ExitLimitCache&, llvm::Loop const*, llvm::Value*, bool, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3474525)
#17 0x000055fef8cb9a6a llvm::ScalarEvolution::computeExitLimitFromCondCached(llvm::ScalarEvolution::ExitLimitCache&, llvm::Loop const*, llvm::Value*, bool, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3474a6a)
#18 0x000055fef8cb9cf8 llvm::ScalarEvolution::computeExitLimitFromCond(llvm::Loop const*, llvm::Value*, bool, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3474cf8)
#19 0x000055fef8cb9fd0 llvm::ScalarEvolution::computeExitLimit(llvm::Loop const*, llvm::BasicBlock*, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3474fd0)
#20 0x000055fef8cba39e llvm::ScalarEvolution::computeBackedgeTakenCount(llvm::Loop const*, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x347539e)
#21 0x000055fef8cbb0ee llvm::ScalarEvolution::getBackedgeTakenInfo(llvm::Loop const*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x34760ee)
#22 0x000055fef8cdc6c5 llvm::ScalarEvolution::getBackedgeTakenCount(llvm::Loop const*, llvm::ScalarEvolution::ExitCountKind) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x34976c5)
#23 0x000055fefe16308a llvm::LoopDeletionPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x891e08a)
#24 0x000055fefb067986 llvm::detail::PassModel<llvm::Loop, llvm::LoopDeletionPass, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x5822986)
#25 0x000055fef9b9a9af std::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&) (.isra.0) LoopPassManager.cpp:0:0
#26 0x000055fef9b9bed0 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&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x4356ed0)
#27 0x000055fef9b9c26c 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&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x435726c)
#28 0x000055fef9b9d2ba llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x43582ba)
#29 0x000055fef6c9bc26 llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x1456c26)
#30 0x000055fef96ac197 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3e67197)
#31 0x000055fef6c9ddc6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x1458dc6)
#32 0x000055fef96aa164 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3e65164)
#33 0x000055fef6c9e4b6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x14594b6)
#34 0x000055fef96aad07 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x3e65d07)
#35 0x000055fefa1c506c (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
#36 0x000055fefa1c91fe 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*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x49841fe)
#37 0x000055fefa8a8742 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x5063742)
#38 0x000055fefc3b626c clang::ParseAST(clang::Sema&, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x6b7126c)
#39 0x000055fefac0e631 clang::FrontendAction::Execute() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x53c9631)
#40 0x000055fefab87d65 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x5342d65)
#41 0x000055fefad09563 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0x54c4563)
#42 0x000055fef67ca722 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0xf85722)
#43 0x000055fef67c00fa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) driver.cpp:0:0
#44 0x000055fef67c451e clang_main(int, char**, llvm::ToolContext const&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0xf7f51e)
#45 0x000055fef6685691 main (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0xe40691)
#46 0x00007efe2012ed90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#47 0x00007efe2012ee40 call_init ./csu/../csu/libc-start.c:128:20
#48 0x00007efe2012ee40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#49 0x000055fef67bf815 _start (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-23+0xf7a815)
clangtk: error: unable to execute command: Aborted
clangtk: error: clang frontend command failed with exit code -2 (use -v to see invocation)
clang version 23.0.0git (https://github.com/llvm/llvm-project.git 86940d72a1eba54d0a6a01bc5d418e6864344d64)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/home/suz/suz-local/software/local/clang-trunk/bin
Build config: +assertions
clangtk: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
clangtk: note: diagnostic msg: /tmp/small-604098.c
clangtk: note: diagnostic msg: /tmp/small-604098.sh
clangtk: note: diagnostic msg:
<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