Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang crashes on valid code at -O3: Assertion `(OtherPrev == It->second || It->second->comesBefore(OtherPrev)) && "found OtherPrev must either match the original one or come after " "it"' failed #54233

Closed
zhendongsu opened this issue Mar 6, 2022 · 0 comments

Comments

@zhendongsu
Copy link

Related to: #54227

[507] % clangtk -v
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 17a68065c378da74805e4e1b9a5b78cc9f83e580)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
[508] % 
[508] % clangtk -O2 small.c; ./a.out
[509] % 
[509] % clangtk -O3 small.c
clang-15: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Analysis/IVDescriptors.cpp:930: llvm::RecurrenceDescriptor::isFirstOrderRecurrence(llvm::PHINode*, llvm::Loop*, llvm::MapVector<llvm::Instruction*, llvm::Instruction*>&, llvm::DominatorTree*)::<lambda(llvm::Instruction*)>: Assertion `(OtherPrev == It->second || It->second->comesBefore(OtherPrev)) && "found OtherPrev must either match the original one or come after " "it"' 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: /local/suz-local/software/local/clang-trunk/bin/clang-15 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model static -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/20220306-clangtk-m64-O3-mllvm-enable-constraint-elimination-build-151849/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0 -I /usr/local/include/csmith -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../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=/local/suz-local/software/emitesting/bugs/20220306-clangtk-m64-O3-mllvm-enable-constraint-elimination-build-151849/delta -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-b9cfab.o -x c small.c
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x0000556a2115344f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000556a21150c0d SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fc65dd38980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007fc65c9e9e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007fc65c9eb7f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007fc65c9db3fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
 #6 0x00007fc65c9db472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x0000556a2020d6fa (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x2b976fa)
 #8 0x0000556a21427ed2 llvm::LoopVectorizationLegality::canVectorizeInstrs() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3db1ed2)
 #9 0x0000556a214295a6 llvm::LoopVectorizationLegality::canVectorize(bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3db35a6)
#10 0x0000556a21384953 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3d0e953)
#11 0x0000556a213879b1 llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AAResults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3d119b1)
#12 0x0000556a21387f49 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3d11f49)
#13 0x0000556a2237cff1 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4d06ff1)
#14 0x0000556a208b912c llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x324312c)
#15 0x0000556a1ed55d51 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x16dfd51)
#16 0x0000556a208b8b4a llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3242b4a)
#17 0x0000556a1ed566b1 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x16e06b1)
#18 0x0000556a208b7304 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3241304)
#19 0x0000556a21490170 (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> >&) (.constprop.836) BackendUtil.cpp:0:0
#20 0x0000556a21493142 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3e1d142)
#21 0x0000556a221a1f7b clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b2bf7b)
#22 0x0000556a230ad729 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x5a37729)
#23 0x0000556a221a0a78 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b2aa78)
#24 0x0000556a21b38411 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x44c2411)
#25 0x0000556a21ad29ba clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x445c9ba)
#26 0x0000556a21c06303 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4590303)
#27 0x0000556a1ea93b01 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x141db01)
#28 0x0000556a1ea8f999 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#29 0x0000556a1e9be559 main (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x1348559)
#30 0x00007fc65c9ccc87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#31 0x0000556a1ea8f50a _start (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x141950a)
clang-15: error: unable to execute command: Aborted
clang-15: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 17a68065c378da74805e4e1b9a5b78cc9f83e580)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clang-15: note: diagnostic msg: 
********************

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

********************
[510] % 
[510] % cat small.c
int a, b, c, d, e;
int main() {
  int f = 0;
 L:
  a = e | f;
  f = (d ^ e << b) & a;
  b = e ^ d;
  e = ~e & 1;
  if (d < 0)
    if (c && f)
      goto L;
  return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants