<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54233>54233</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
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
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhendongsu
</td>
</tr>
</table>
<pre>
Related to: https://github.com/llvm/llvm-project/issues/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;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW1tv27gS_jXOCyFD98tDHhw7aQKkmyDJdoHzYlAiZWsrSzqUlEt__X4kZVtS3CRtE2DP7ikcWyKHc-cMh2Tjkj0d3_CcNpyRppw4M7JumqrGw8Q-w2eVNes2niblBi95fr_9MSpR_smTBq9ZXbe8xoPn2nYwMRcTc9Z9-2b30a_eiWcGE29BJrZHkpwWq-YrMe51r3on91zUWVkQy5uaUxOA4Y_xMwUAsQLqh6bvJU4QMhq4oelxl1txRL04CJMkSkOHe6E5sSNN-46KFW-k9I-hv_Rdoy2-FuVDYeRZ0T4aq6Lt4NaCU0Y2JeO5hK7KOnvUXRdF3dA852yRCdkl-SoTmuO3br8Z2-eySttv3_AQZ4UeeFa2BSMJLVjGYAbyaT4nmUZGG6iiQ9bWQqLMYqmEJJF690O_x6B9Fv4iwk72Pkr_A1BOYdr3Rxt8AMqP4bQz0y3P4a-Ydu_E4nzH3KbNm0wOBKLpxDmZuObGd1-CcuwODA8vgD3u4B63gDspXiKqJn64nfiH2nbB4Mom9QaamCbAAUT2GZ2WbdMbEx3AEz3H4-zw7KOLYXkvTM26TJsHKjgeFXTcZjl7Hu62QUcZZlbQ_KnOZPS7-LLgdSKyqilFPU2qCqQix5QE1RBEMGd2w5NWCF4kfA-se7L6LBN1cyUYF3soxL_94Ovzi98QeSY2YuG8h_SyLKtnjZ9p9QUMS_TzfauMUqJNlJuNR4z6nNOJ7Q8hFuUmKyhw3gmu2Yh0h6RBNzGjA37HxCKJE-qY1TUXspXI1GCHV82ai2vB78nEWeBDLhoDoDVPSky6STDHZ9Amn5ABeH3C01IabI9CUrEjolj38WOnaubuSWzauiE8k-9kQ5tkTfBISpGtIFpOykK-EImd0LQBEHDIvwy2tyd2QFKaIcpPtVtdX57Obk9J3cYb5B1K4nZFBK9K0SCb_kIqJZh_CApJ3jKuGEwErdckpsnXRlDpF3NSgZAoEw5tMlKXrdDNciSt6zLJVFIXbUG0p3Us3zZAQli7kQ6qm0x0RdeiXAm6IUiF7YYXTf22qbJt0hMM9i6-dtlt22Z5xEgSi6Azq3L-3RRLDA4lGmX8JzGMjcCi5NHAN_BLX6mJwbKaxjk3UngfUOacCoPWjRErLzCkcjiENzY0K4wUVjIKCjN2cYAonB02Q6VwgqDbZLInheTcqMqsgMnhgoX0AyOFg6wNLkRR4iWtDDifVD9WCgt4r5EWpSGkf2UQU8ICE0C015dgLs9ozcF52hYPGfy2kfxDsQsb2lBrDiOpWqkRw3fR1BZcNax4wYViTDqI1BynjVFD01oB2SNnki9JozZgiQIcQEEc_rfiQiJCA-isWAzqSYllFV0Bd7mpMp1loE0p6OsGlkbhdSPxwa7tSrqnbdq26Zi-0cVbA6EeIVeza_BCcak1AVs0Bs8zFTkkXRVW4RRW6GKqnsEMDSUwtPZgydZPe52OyaoNv90S0rjoZdNuWDezJHAN8dYd0BuJbuelobwFUcPI6qe64Zt3Zfw1QgclehH0LUsJ-2w6ff51APw5Qf4oH5LnhPfaHuN5efSPk1B530jVPPgbO3uqp66EQ7ESoQG6SIyu9gGj7tSeWmri5oBjGV0VJbhKEEruVVLPvnGwX1aDhjqvMIYyBjSIBovlEkvL5fnsy-ly8cfs5sxezs8ulrPbz6AA7KVUX4M0AA3IEGnEUZLSeIpY90iS4fLJkhkCWZ6XKXIvqahACicUmRQBt0yJjLYa0paQV1UD2b4hlKo2EHJMYj6a-Od5PrUty3NcNyXXAgpTCelOZrXbbAUrnyOD5Rhqh_dlxvTKgeiu7brKVH873NYIt5mYjIyRgdKriOwOUZAmvseYE0ahSZZLBCeomC-R1YFoN5UOzAp0VI0qEqd1KafTiflo2VGv1JRknD6ZJOIRDwMC56k5UW6n150rIEuM9j-t83C7e7WnKLFhMCXFdnpiNjBeSV9F3H_UDfeKG3CGX4VarqhnnjUU2B1xEgepRWhcKknfxknDtDbUKEUkHBHxhkRY7KQUWqVqGbiU66llTN8uux63e9AkoyFJf0zSDew32C6RVvOV1RwTQwZWC_peZtom8yFGh_PX10iKqB1HAbAOyIYD53btgDN7tPj_0oUAFXMu-QrrjuZJd6Nk3fZytR6vFcfROzPusNgCXwPGoxHjkUf9n2McvMZlmX8I2w642rEtY8kwUDkI3J7zHbb5NVxQN3crcV2KhQdqs_dn3eTgbMC6NWI9iGLrddZB42JT5QO2EUi6um1UAt7KNag4vS_z9mC_pHFRpOWzDr3FhjBf1Fitbw7CjOrLUe8JdPP1TPD_tqiMn14gcpnFgooOYlTkLvgGGYGzkwwFznj4DPV53eaHelCYbSop8Zwm6y1viH26O92qq19rS1XMEukVkhOiVgi6KH3mH35XHI_JdnlUTY8bcC6-nmLJIEuUMSSqN5mDb9vNpi_6-3udZcGpBl5nj70udaM3ed3bPG67xfKZFihhhtsZu0Gd7j5C3FSu3HriOn1xkRWSNO1PMsYbJLTOKJD2s94rPsT0s4kzVNPIvhzJ7p4zrQ5e_5SSiN6B-V9Rv8tMH9odqN8dZOEwjiw76etJqvwlVv8FanNsF7MyGajN66kNmdrzmPceXvtx6v6_91s-S2GlgRn9kfeHsUv7m74la3N-V25Zk-aZMbrfZR4Lrgf8kNjdkI_zXRsyDYQORr7r-_GP-e5WyvkbVfVevrdT1fc9729nAMvnpj_K8OHI6wIUR28IAofU_k9TF_zVgjYG6hoVPpFpBeokmxZl8bQp25rIfem6Uvv43QmKXNfJc5FNnD-d87zi3YS9aYv-IvA6qzhqVlkR6d1CvTLWO9-zXcjdLUzbIsNyeVk1Q50I-rCsHkTW8GUt95Y3g0GMpxSr4CWmEW_4KwO34dp_C907VHFXbVO1zVmmPeMtREejehSVNadqZY0CrJqGjmrs9PF7k-XP93nkNo85shCWFTbpKVRao0OiCQ_1vdhvyJ0WK2UOJX4P5JxTxsUtpyJZX1X6AGNbAYxA54hXn3jxCpQubV4BusTTIZBe_daIrFjd8PRQNOyqpb-ZZ737lOUWg737U9YeVM62Ra00iA_oYQ6dtpvt3NR7i6qk1dvMvxfZyFNmt3cY0_DH5mMWyLEdg9OBKINyzDEpC0C2x9K13LsFX0NGb1Fdds6it1q2v-_NskedILAHJZXtjLRv0iA8MEM6L9Qz9JEnbcO3jvkBW1rQLQUfA0YHxYcVO6FrWX1Gz4Q09m6-9Dn9GB7dBPlnkKxtb8AjZXYU06Ey5bEIF-rCkrxicFCf3xfqQ_zY9RKwOZBjsNS1EtN3TGcQozXHe3Huu7PdIffPxP2IbRHXi0ywN-B_uGqlkROb8JXEWsrj6cGiZiYEfZIh2Zknayq2kXvWlUHDNjT0jkXeee3nWgxcDsQIh2KEaRRFZKv7uXWngkRPmFt5bKQ3MtSu4iGZlAcxkd1zcTg_RwOiUcw9LyJSb-8tsOOGQN0XeHdQ1R0dJEkSBmS5lKcDyExUNMuOkTcdViS1PFpQpzT6UXUqPOrgwnHdgeiDsyylb8-kRBN-f2tHQL4Tvn9FSh1QyodWHW_Kyyxc21xejZFbqLJzJo98OHthuL7UmXYRZDu2u0NDWKsw68MsKV1bc2LcqzbOSdab0n0e_4WXRPvKLUq5dJqR_bEw2dQrha7zol_49G7vdnebZnd3s_k5uTs_JWdXl5dXf1z89omcXVye3pK7K9V88vsncnN6fXVzJy2gxx66mxTWct5_937SDkBwou7poJc2O5RvVMHwSDu0Ise3Dl0C_FEU9fonLPFe9vBOPMt8fu9x3wZtDQ_ss6IhVK3iVAqRX0x-cXk1cwfRpSKVSYKunRDZk8q7eMTcQZPLnSEIoaqTy6t5JN2DdIOAkJGJdyoBnDk-kgd1JQ8c7YHjLRJAsl4710iCU66GWL2uLO2QA2fvRJ1se5Ltvb900EnIqkRIuexhErxpRdGTbxIsRnfWj9ixwyInokdN1uT8WIcedQ-P1wTR557mmQxpjMuLEMaVM_mH3G08akV-_Ev_DcBxjtbHnu_yxPU8GqIMiYOY-RGWqzQwecpsO0qPchrzvD6GJ4N8wR-IQiFZ8RZH2fH23o0V2ojOU49xTgM_jAMae0GSTFwTNQsqfMnHtBSrI3GsWFLXdlwzz-qm3nci5CDNcK7IAT9tm3Upjr-tkZfKYlW3R4r6seL-L_hOIjc">