Issue 71308
Summary Clang crash: Assertion `DT.dominates(RHead, LHead) && "No dominance between recurrences used by one SCEV?"' failed.
Labels clang
Assignees
Reporter shao-hua-li
    clang at -O3 crashes on the test case.

Bisected to dae5cd73cb38b7176f10ffa527ae4d083fdc0efe, which was committed by @fhahn 

Compiler explorer: https://godbolt.org/z/4Pjqc7noM

```console
% cat a.c
int a, b, c, d, e, f;
long g, i;
static char j;
char k;
int l[100][10];
static char *m = &j;
static char **n = &m;
int o() {
 if (d)
    return 1;
  if (b || c && a)
    e = 0;
  return e;
}
int p() {
  int h = o();
  return h;
}
void q() {
 for (;;) {
    f = 26;
    for (; f >= 9; f--)
      **n = 0;
 for (; i; i = **n + i)
      for (; (char)(p() + g + f + *m); k = k + 1)
        l[f + **n + i][k] = 3;
  }
}
void r() {
  q();
 *n = 0;
}
int main() {}
%
% clang -O3 a.c
clang-17: /tmp/tmpugc75gu1/tmpuqgk6cd5/llvm/lib/Analysis/ScalarEvolution.cpp:739: std::optional<int> CompareSCEVComplexity(llvm::EquivalenceClasses<const llvm
::SCEV*>&, llvm::EquivalenceClasses<const llvm::Value*>&, const llvm::LoopInfo*, const llvm::SCEV*, const llvm::SCEV*, llvm::DominatorTree&, unsigned int): As
sertion `DT.dominates(RHead, LHead) && "No dominance between recurrences used by one SCEV?"' 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: /zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/clang-17 -cc1 -triple x86_64-unknown
-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name a.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=n
one -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcover
age-compilation-dir=/zdata/shaoli/realsmith/watchdir/reduced/case_3fHl3yik -resource-dir /zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f1
0ffa527ae4d083fdc0efe/lib/clang/17 -internal-isystem /zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/lib/clang/17/i
nclude -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -fdebug-compilation-dir=/zdata/shaoli/realsmith/wa
tchdir/reduced/case_3fHl3yik -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1
 -o /tmp/a-8db52a.o -x c a.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'a.c'.
4.      Running pass 'Loop Pass Manager' on function '@q'
5. Running pass 'Loop Strength Reduction' on basic block '%for.body'
 #0 0x00007f9d0fa6e47f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d08
3fdc0efe/bin/../lib/libLLVM-17git.so+0x91147f)
 #1 0x00007f9d0fa6bbd4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f9d0ed72090 (/lib/x86_64-linux-gnu/libc.so.6+0x43090)
 #3 0x00007f9d0ed7200b raise /build/glibc-BHL3KM/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #4 0x00007f9d0ed51859 abort /build/glibc-BHL3KM/glibc-2.31/stdlib/abort.c:81:7
 #5 0x00007f9d0ed51729 get_sysdep_segment_value /build/glibc-BHL3KM/glibc-2.31/intl/loadmsgcat.c:509:8
 #6 0x00007f9d0ed51729 _nl_load_domain /build/glibc-BHL3KM/glibc-2.31/intl/loadmsgcat.c:970:34
 #7 0x00007f9d0ed62fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x00007f9d118ff85f CompareSCEVComplexity(llvm::EquivalenceClasses<llvm::SCEV const*, std::less<llvm::SCEV const*>>&, llvm::EquivalenceClasses<llvm::Value
const*, std::less<llvm::Value const*>>&, llvm::LoopInfo const*, llvm::SCEV const*, llvm::SCEV const*, llvm::DominatorTree&, unsigned int) ScalarEvolution.cpp:
0:0
 #9 0x00007f9d1191314a void std::__merge_adaptive<llvm::SCEV const**, long, llvm::SCEV const**, __gnu_cxx::__ops::_Iter_comp_iter<GroupByComplexity(llvm::Smal
lVectorImpl<llvm::SCEV const*>&, llvm::LoopInfo*, llvm::DominatorTree&)::'lambda0'(llvm::SCEV const*, llvm::SCEV const*)>>(llvm::SCEV const**, llvm::SCEV cons
t**, llvm::SCEV const**, long, long, llvm::SCEV const**, long, __gnu_cxx::__ops::_Iter_comp_iter<GroupByComplexity(llvm::SmallVectorImpl<llvm::SCEV const*>&,
llvm::LoopInfo*, llvm::DominatorTree&)::'lambda0'(llvm::SCEV const*, llvm::SCEV const*)>) ScalarEvolution.cpp:0:0
#10 0x00007f9d11913398 void std::__stable_sort_adaptive<llvm::SCEV const**, llvm::SCEV const**, long, __gnu_cxx::__ops::_Iter_comp_iter<GroupByComplexity(llvm
::SmallVectorImpl<llvm::SCEV const*>&, llvm::LoopInfo*, llvm::DominatorTree&)::'lambda0'(llvm::SCEV const*, llvm::SCEV const*)>>(llvm::SCEV const**, llvm::SCE
V const**, llvm::SCEV const**, long, __gnu_cxx::__ops::_Iter_comp_iter<GroupByComplexity(llvm::SmallVectorImpl<llvm::SCEV const*>&, llvm::LoopInfo*, llvm::Dom
inatorTree&)::'lambda0'(llvm::SCEV const*, llvm::SCEV const*)>) ScalarEvolution.cpp:0:0
#11 0x00007f9d119138a3 GroupByComplexity(llvm::SmallVectorImpl<llvm::SCEV const*>&, llvm::LoopInfo*, llvm::DominatorTree&) ScalarEvolution.cpp:0:0
#12 0x00007f9d1192f007 llvm::ScalarEvolution::getAddExpr(llvm::SmallVectorImpl<llvm::SCEV const*>&, llvm::SCEV::NoWrapFlags, unsigned int) (/zdata/shaoli/comp
ilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libLLVM-17git.so+0x27d2007)
#13 0x00007f9d11931086 llvm::ScalarEvolution::getAddExpr(llvm::SmallVectorImpl<llvm::SCEV const*>&, llvm::SCEV::NoWrapFlags, unsigned int) (/zdata/shaoli/comp
ilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libLLVM-17git.so+0x27d4086)
#14 0x00007f9d10b40996 llvm::ScalarEvolution::getAddExpr(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV::NoWrapFlags, unsigned int) (/zdata/shaoli/compilers
/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libLLVM-17git.so+0x19e3996)
#15 0x00007f9d1192e5e0 llvm::ScalarEvolution::getMinusSCEV(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV::NoWrapFlags, unsigned int) (/zdata/shaoli/compile
rs/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libLLVM-17git.so+0x27d15e0)
#16 0x00007f9d1106c7bb (anonymous namespace)::LSRInstance::NarrowSearchSpaceByPickingWinnerRegs() LoopStrengthReduce.cpp:0:0
#17 0x00007f9d1108c948 (anonymous namespace)::LSRInstance::LSRInstance(llvm::Loop*, llvm::IVUsers&, llvm::ScalarEvolution&, llvm::DominatorTree&, llvm::LoopIn
fo&, llvm::TargetTransformInfo const&, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::MemorySSAUpdater*) LoopStrengthReduce.cpp:0:0
#18 0x00007f9d1108dc8f ReduceLoopStrength(llvm::Loop*, llvm::IVUsers&, llvm::ScalarEvolution&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::TargetTransformInf
o const&, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::MemorySSA*) LoopStrengthReduce.cpp:0:0
#19 0x00007f9d11090dd2 (anonymous namespace)::LoopStrengthReduce::runOnLoop(llvm::Loop*, llvm::LPPassManager&) LoopStrengthReduce.cpp:0:0
#20 0x00007f9d1185281b llvm::LPPassManager::runOnFunction(llvm::Function&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d08
3fdc0efe/bin/../lib/libLLVM-17git.so+0x26f581b)
#21 0x00007f9d0fc24dc1 llvm::FPPassManager::runOnFunction(llvm::Function&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d08
3fdc0efe/bin/../lib/libLLVM-17git.so+0xac7dc1)
#22 0x00007f9d0fc25009 llvm::FPPassManager::runOnModule(llvm::Module&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc
0efe/bin/../lib/libLLVM-17git.so+0xac8009)
#23 0x00007f9d0fc25882 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libLLVM-17git.so+0xac8882)
#24 0x00007f9d160eeb33 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>>) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libclang-cpp.so.17git+0x1f5cb33)
#25 0x00007f9d1657b362 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libclang-cpp.so.17git+0x23e9362)
#26 0x00007f9d14b7f7f9 clang::ParseAST(clang::Sema&, bool, bool) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib/libclang-cpp.so.17git+0x9ed7f9)
#27 0x00007f9d16579968 clang::CodeGenAction::ExecuteAction() (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/.
./lib/libclang-cpp.so.17git+0x23e7968)
#28 0x00007f9d17198429 clang::FrontendAction::Execute() (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/../lib
/libclang-cpp.so.17git+0x3006429)
#29 0x00007f9d171196e6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10f
fa527ae4d083fdc0efe/bin/../lib/libclang-cpp.so.17git+0x2f876e6)
#30 0x00007f9d17230326 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa52
7ae4d083fdc0efe/bin/../lib/libclang-cpp.so.17git+0x309e326)
#31 0x0000559bfb3b009c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/clang-17+0x1609c)
#32 0x0000559bfb3ac02a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#33 0x0000559bfb3ad54c clang_main(int, char**, llvm::ToolContext const&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/clang-17+0x1354c)
#34 0x0000559bfb3a6dc5 main (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/clang-17+0xcdc5)
#35 0x00007f9d0ed53083 __libc_start_main /build/glibc-BHL3KM/glibc-2.31/csu/../csu/libc-start.c:342:3
#36 0x0000559bfb3a6e0e _start (/zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/bin/clang-17+0xce0e)
clang: error: unable to execute command: Aborted
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git dae5cd73cb38b7176f10ffa527ae4d083fdc0efe)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/shaoli/compilers/ccbuilder-compilers/clang-dae5cd73cb38b7176f10ffa527ae4d083fdc0efe/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/a-1c3813.c
clang: note: diagnostic msg: /tmp/a-1c3813.sh
clang: note: diagnostic msg:

********************
%
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to