Skip to content

Crash at -Os : Assertion `isAvailableAtLoopEntry(LHS, L) && "LHS is not available at Loop Entry"' failed. #58662

@shao-hua-li

Description

@shao-hua-li
% clang-tk -v
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 12c9cb6cc9699eaa77f07f2c8ad03dac822ef0f3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/shaoli/compilers/ccbuilder-compilers
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
%
% clang-tk -Os a.c
clang-16: /zdata/shaoli/compilers/ccbuilder-repos/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:11333: bool llvm::ScalarEvolution::isLoopEntryGuardedByCond(const llvm::Loop*, llvm::CmpInst::Predicate, const llvm::SCEV*, const llvm::SCEV*): Assertion `isAvailableAtLoopEntry(LHS, L) && "LHS is not available at Loop Entry"' 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-assertion/bin/clang-16 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name simple.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 -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/zdata/shaoli/RealSmith/synthesizer/bugs/clang_work31 -resource-dir /zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/lib/clang/16.0.0 -internal-isystem /zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/lib/clang/16.0.0/include -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 -Os -fdebug-compilation-dir=/zdata/shaoli/RealSmith/synthesizer/bugs/clang_work31 -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/simple-9e52b7.o -x c simple.c
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x0000564c274f0984 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000564c274ee134 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f2256504420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f2255f5500b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f2255f34859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007f2255f34729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007f2255f45fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x0000564c2645d60f llvm::ScalarEvolution::isLoopEntryGuardedByCond(llvm::Loop const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e8a60f)
 #8 0x0000564c26468a20 llvm::ScalarEvolution::isKnownOnEveryIteration(llvm::CmpInst::Predicate, llvm::SCEVAddRecExpr const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e95a20)
 #9 0x0000564c2645e9e3 llvm::ScalarEvolution::getZeroExtendExpr(llvm::SCEV const*, llvm::Type*, unsigned int) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e8b9e3)
#10 0x0000564c2645785d llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e8485d)
#11 0x0000564c2645cb27 llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value const*, bool, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e89b27)
#12 0x0000564c2645ca41 llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value const*, bool, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e89a41)
#13 0x0000564c26457ebe llvm::ScalarEvolution::isLoopBackedgeGuardedByCond(llvm::Loop const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e84ebe)
#14 0x0000564c2645e9ca llvm::ScalarEvolution::getZeroExtendExpr(llvm::SCEV const*, llvm::Type*, unsigned int) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e8b9ca)
#15 0x0000564c26457905 llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e84905)
#16 0x0000564c2645cb27 llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value const*, bool, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e89b27)
#17 0x0000564c26457ebe llvm::ScalarEvolution::isLoopBackedgeGuardedByCond(llvm::Loop const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e84ebe)
#18 0x0000564c2646c032 llvm::ScalarEvolution::isKnownViaInduction(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e99032)
#19 0x0000564c2646c16a llvm::ScalarEvolution::isKnownPredicate(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2e9916a)
#20 0x0000564c2647460f llvm::ScalarEvolution::willNotOverflow(llvm::Instruction::BinaryOps, bool, llvm::SCEV const*, llvm::SCEV const*, llvm::Instruction const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2ea160f)
#21 0x0000564c2647c5d4 llvm::ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp(llvm::OverflowingBinaryOperator const*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2ea95d4)
#22 0x0000564c276d0504 (anonymous namespace)::SimplifyIndvar::simplifyUsers(llvm::PHINode*, llvm::IVVisitor*) SimplifyIndVar.cpp:0:0
#23 0x0000564c276d1ad2 llvm::simplifyUsersOfIV(llvm::PHINode*, llvm::ScalarEvolution*, llvm::DominatorTree*, llvm::LoopInfo*, llvm::TargetTransformInfo const*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&, llvm::SCEVExpander&, llvm::IVVisitor*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x40fead2)
#24 0x0000564c271c469a (anonymous namespace)::IndVarSimplify::run(llvm::Loop*) IndVarSimplify.cpp:0:0
#25 0x0000564c271c6b24 llvm::IndVarSimplifyPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x3bf3b24)
#26 0x0000564c28887186 llvm::detail::PassModel<llvm::Loop, llvm::IndVarSimplifyPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x52b4186)
#27 0x0000564c2aa552ff llvm::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&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x74822ff)
#28 0x0000564c2aa554e6 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&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x74824e6)
#29 0x0000564c2aa5684d 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&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x748384d)
#30 0x0000564c2aa57a8d llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x7484a8d)
#31 0x0000564c28884356 llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x52b1356)
#32 0x0000564c24cff2d4 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>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x172c2d4)
#33 0x0000564c2628db56 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2cbab56)
#34 0x0000564c24ce57c6 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x17127c6)
#35 0x0000564c262854a7 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2cb24a7)
#36 0x0000564c26da2016 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x37cf016)
#37 0x0000564c26289954 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2cb6954)
#38 0x0000564c26da1fc6 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x37cefc6)
#39 0x0000564c26287974 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x2cb4974)
#40 0x0000564c26da8a9a llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x37d5a9a)
#41 0x0000564c28883b26 llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x52b0b26)
#42 0x0000564c26c66d6a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x3693d6a)
#43 0x0000564c278c05f0 (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>>&) BackendUtil.cpp:0:0
#44 0x0000564c278c2b82 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>>) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x42efb82)
#45 0x0000564c28818c7b clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x5245c7b)
#46 0x0000564c29706835 clang::ParseAST(clang::Sema&, bool, bool) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x6133835)
#47 0x0000564c288176a8 clang::CodeGenAction::ExecuteAction() (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x52446a8)
#48 0x0000564c280ab1b9 clang::FrontendAction::Execute() (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x4ad81b9)
#49 0x0000564c2803235e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x4a5f35e)
#50 0x0000564c28190673 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x4bbd673)
#51 0x0000564c249918e4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x13be8e4)
#52 0x0000564c2498a9f8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#53 0x0000564c2498de97 clang_main(int, char**) (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x13bae97)
#54 0x00007f2255f36083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#55 0x0000564c2498a5fe _start (/zdata/shaoli/compilers/ccbuilder-compilers/clang-assertion/bin/clang-16+0x13b75fe)
clang-16: error: unable to execute command: Aborted
clang-16: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 12c9cb6cc9699eaa77f07f2c8ad03dac822ef0f3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/shaoli/compilers/ccbuilder-compilers
clang-16: note: diagnostic msg: 
%
% cat a.c
int a, b, d, e;
short f;
char g;
int h(int i) {
  int c;
  while (c < 7 && (i >>= 1))
    c++;
  return c;
}
char(j)(char i, char k) { return i - k; }
char l() {
  f = 0;
  for (;; f = f - 8) {
    d = ++a & b;
    e = h(f - 6);
    if (j(d - 10, e + 7))
      return g;
  }
}
%

Compiler explorer: https://godbolt.org/z/vcc6sG761

Metadata

Metadata

Assignees

No one assigned

    Labels

    crashPrefer [crash-on-valid] or [crash-on-invalid]llvm:SCEVScalar Evolution

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions