<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/54254>54254</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang crashes on valid code at -Os and above: Assertion `(EarlierIt == SinkAfter.end() || EarlierInst->comesBefore(OtherPrev)) && "earlier instructions in the chain must come before later ones, " "except for the first one"' 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 the closed https://github.com/llvm/llvm-project/issues/54227.

```
[544] % clangtk -v
clang version 15.0.0 (https://github.com/llvm/llvm-project.git f4368487aaaea43aba428eb0fc71200cbdea3c9a)
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
[545] % 
[545] % clangtk -Os small.c
clang-15: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Analysis/IVDescriptors.cpp:925: llvm::RecurrenceDescriptor::isFirstOrderRecurrence(llvm::PHINode*, llvm::Loop*, llvm::MapVector<llvm::Instruction*, llvm::Instruction*>&, llvm::DominatorTree*)::<lambda(llvm::Instruction*)>: Assertion `(EarlierIt == SinkAfter.end() || EarlierInst->comesBefore(OtherPrev)) && "earlier instructions in the chain must come before later ones, " "except for the first one"' 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-094442/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 -Os -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20220306-clangtk-m64-O3-mllvm-enable-constraint-elimination-build-094442/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-df5d6b.o -x c small.c
1.      <eof> parser at end of file
2.      Optimizer
 #0 0x000055bb7b658ecf PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055bb7b65668d SignalHandler(int) Signals.cpp:0:0
 #2 0x00007efcd8bf3980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007efcd78a4e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007efcd78a67f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007efcd78963fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
 #6 0x00007efcd7896472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055bb7a712128 llvm::RecurrenceDescriptor::isFirstOrderRecurrence(llvm::PHINode*, llvm::Loop*, llvm::MapVector<llvm::Instruction*, llvm::Instruction*, llvm::DenseMap<llvm::Instruction*, unsigned int, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, unsigned int> >, std::vector<std::pair<llvm::Instruction*, llvm::Instruction*>, std::allocator<std::pair<llvm::Instruction*, llvm::Instruction*> > > >&, llvm::DominatorTree*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x2b7d128)
 #8 0x000055bb7b92da12 llvm::LoopVectorizationLegality::canVectorizeInstrs() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3d98a12)
 #9 0x000055bb7b92f0e6 llvm::LoopVectorizationLegality::canVectorize(bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3d9a0e6)
#10 0x000055bb7b88a493 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3cf5493)
#11 0x000055bb7b88d4f1 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+0x3cf84f1)
#12 0x000055bb7b88da89 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3cf8a89)
#13 0x000055bb7c883051 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+0x4cee051)
#14 0x000055bb7adbdc3c 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+0x3228c3c)
#15 0x000055bb79255ed1 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+0x16c0ed1)
#16 0x000055bb7adbd65a llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x322865a)
#17 0x000055bb79256831 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+0x16c1831)
#18 0x000055bb7adbbe14 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+0x3226e14)
#19 0x000055bb7b995cb0 (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 0x000055bb7b998c82 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+0x3e03c82)
#21 0x000055bb7c6a7fdb clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b12fdb)
#22 0x000055bb7d5bc149 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x5a27149)
#23 0x000055bb7c6a6ad8 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b11ad8)
#24 0x000055bb7c03e331 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x44a9331)
#25 0x000055bb7bfd88da clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x44438da)
#26 0x000055bb7c10c223 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4577223)
#27 0x000055bb78f93aa1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x13feaa1)
#28 0x000055bb78f8f939 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#29 0x000055bb78ed8239 main (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x1343239)
#30 0x00007efcd7887c87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#31 0x000055bb78f8f4aa _start (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x13fa4aa)
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 f4368487aaaea43aba428eb0fc71200cbdea3c9a)
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-e8a20d.c
clang-15: note: diagnostic msg: /tmp/small-e8a20d.sh
clang-15: note: diagnostic msg: 

********************
[546] % 
[546] % cat small.c
int printf(const char *, ...);
int main() {
  int b = 0, c = 0, d = 0, e, f = 0, g;
 L:
  b = f % ~d;
  d = c ^ 1;
  f = b ^ 1;
  c = printf("%d", b);
  if (f)
    goto L;
  return 0;
}
```

@fhahn 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW1tv27gS_jXOCyFDd8kPeXCcpA2QboIk2wXOi0GRlK2tLOmQkuv0158ZUrIlxU3SNgH2coo0lnmZ-ebCmaHIJCV_PL0TOa0FJ3VJ6rUgLC8VfFvXdaUm3nziXsLPKqvXTTJl5Qa-5Pm2-7AqWf4pWA1fM6UaoeAh8F03mk7s84k9b3-HdvtjvgZnge9PgnMycQPgR4tV_YVYW9Orv5OtkCorC-IEU3tqw8D4xwBNYQBJfS-M_TiilArqezShvhuLxE5Z5Li2zRIuqMdmdOLODO8HKleiBiZkF4fL0Lea4ktRfi2sPCuanbUqmnbcWgrKyabkIsfRVamynem6KlRN81zw80xiF-IqGc3hUzXfrO65rNLm2zd4SLLCTLwsm4ITRguecbAH-bBYkMwQozWooiXWKIkkswSVwBgqPozDHkD3Mv5Fgq3sfZLhO5Ccgmnfnmz0DiTfB2lrpnuRg7_CinsjiIs9uE2T1xlOBELTiXc28e1N6D83ynPbYfDwzLDdftyuG7iX4jmmeuEH3cI_1rYPBjeKqA1oYsp6UcFygmeWlCrT-iuVAh716KTJcv40TnXBQit0XtD8UWUYtq4-nwvFZFbVpVRTVlXAauZqhnoKRB5vfidYI6UomDgMNj2Zusykqm8kF_IwCuLWYfLtx6vfIGJMXIhhix7R67KsnjR-otVnAIzkF4dWjC6yYdo9xjNGfd7FxA2HI87LTVZQoPkghYExMx3Ig24STgd4x8xmSBPUMVdKSGwlGNLd-ILKPBPyqiYT7xx-yH1WfJmntZBTUYAFYphKJtECfkg3FkhbQA7it1BnIi3RbPEN5B95K8UWeeEcFCCED1eYaXp9tJAUfDEJa03hadOomiA5kmhyBJOaJGWBOWmBNDSdHRMVJIZS6qkpmgzHQNfEjUhKM4jcbe66vb6Y318Q1SQbyCWUJM2KSFGVssZU-fP5kcCaAuwsb7gwAkiq1iSh7EstKfrMglTASJZMKEzFqmykacaZVKmSZTpjy6YgxgtbyPc1ECG82aDzmiYbuma3slxJuiGQ3pqNKGr1umXUNZnFB4ovvrQZq2tzAmIx5hDozKpcfDdtEkuAEq0y-ZNY1kZCxbGz4DfQN6a0eKZokgsrBc8EkjkY3KLgI8aYFioHfIlYG7C1lYKVrIKCrdsYQTTNlpql0zKBQFpn2JOC5MKqyqwAhwD3LMDexEo3tF5bQsqihC9pZbGyQPVD9j8Hz7bSorQkRvsMxMSxQAmGGPcrAVyeUSUAedoUX7OCWzXiB8Weu6ANXUdYrGpQI1boQ1NTCN2wEoWQGhg6CGpO0NpSoGmjgGwnOOJCHsoCSxSAABQkwP9WQiIhaAA-K54Ad1ZCqURXQLvcVJnJHKBNFPRlA6NRhKqRHti1WaF7urbr2p4dWm0stiB8WzeegWuJQqM0mgBb1JbIMx1VkK8OuZY9830f1tMlmKGmBAxtPBhh_bTXmXit2-CzLQutq16GbKe1KwsHKxBv3Q56JdNuXVraWyA7WJl6VLXYvCnwlxgdlejZoa8pD9zL6fTpryPDnzIUO3xgTxkftD2m8_zsH2ehawIr1evgL-zsqVm6OK4mzgwaQBfMavczANSfulNHL9wcxvGMrooSUDEQbqsTfvZNAPyyGjSovII5lHMgA9HgfLmEcnH5cf75Ynn-x_zu0l0uLq-W8_tPwAGol6i-GtIAaABDpMXTgIfJFGLdjrBhaeVghoAKQJQpZGRSUQnpndCaYMAtU4LR1ox0ceRNVYNs3yCU6jZg5NnE3tnwLwiSJErCIBYsJbcSFKYT0gNmtftsBVb-CBksh6luvC0zbqoKYrq6msvW__e0nRHtMIw5GRMDTi8ScltCkUgZj5PUm8U2WS4hOIGKxRKyuq5U2qV0ZFVAR1Xrjd9Ulbiczuyd4wKV_fYR2Xh9NlFMfRFHBJxHCaLdztSkKyDGrOY_jff1fv_VnboRGkxL0S1PWA1cVOirEPd3pmGr0QAy-NSkwZTePHCGAvsjJGGUOoQmpZb0dUhqbrShZ2km8YhJMGQyC72UglapLhGXWE8tE_p62c28_YNhORuyDMcs_ch9he0YWi3UVvNsmDKwWtT3Mho5ruPGf8-yf1jwi0IJIPkCsaZAnxNYldbHCVwVafkCEb2gcdPRn89FDS4wpHVLs5ekGwCCmNTSBX80M7adivYt1ctEn90p9YhDaMRK8i3pk97_1-zKOnf-9fJc-7ubRNzR27CDx8eDuDpzOXXckXN-brOPTnfXYgUlb_1ouhktul6hpVXdNu9NgXt8FgOuAfDZCHhqi_DngAPWpCzzd4FNAdUeNqaxYY6MITHMvO_AFrcQ_Vq3M5tAEyriI7HjzaGzNABkA-jOCDr3IZG8CB14XG2qfAAbcli7KkZr4B63P_JiW-bN0X7koWPQuMO8sYUKo1CwUdwcHTNaYKPeM9DNl0sp_ttA5H58hsl1lkgq2xFPAu0GihHBzzLYW4-nzyF_qCY_1qMU7NVR4gVl6w7bPuiknbr6gQdVMWfoFYiE6OLUvCV54h9h-85mzLYt4fTyuAPk8ssFVKu4Ox6PvJUlln_3zWbTF_0dvC4Gpxp4nTv2OhrPXuV1r_O47s3fJ1rA7nkY2_eTWt29h7ggzUBcry8ui2PPDpzvJFKU9pM5ejgG-snCGappZF8BddZWcKMOoX5KScS8GPy7qN9nQoB2B-r3BwUgTzjzWF9PqPLnoP4L1Oa5bgxaGagt6Ktt5gaB4G_hte-n7v97vxMyG6w0MGM49v4woP1NScmbXDyUHTQ0z5zTwy5oLLiZ8ENit1Pe0XdBpoHQ0ch3w9j7Md_tpFy8UlVv5Xt7VX3f8_5yBgCvc0C_AwPEI69LBIThl4PAMbX_09QF_hqCNgbqGm18ZgFL9MUIWpTF46ZsFMEjEVXpI6T2YA_rOjyu2yT540eRV6JdsHdN0S8Cb7NK5Bkeg8XmRbWpjM2hy3wfcveFaVNkUC4vq3qoE0m_LquvMqvFUuGxxmYwiYuUQhW8hGUkavHCxMFe-SW-D7CLu2nqqqkvM-MZr2E6mtXjqK051ZU1bMCqaezpxlYfv9dZ_vQVI75htEcWilnskp5C0RotEcN4qO_zw7vgi2KlzaHF7w35KCgX8l5QydY3lTk763YAo6ELiFcfRPHCKLO1eWHQNTwdG9Lbv9UyK1Z3Ij0WDdvd0l_Ms958yQrbA3v3l6w72DmzkEYpT47oYQE6bTbd2jSvtfWW1pxw_F5kI0-Z3z_AnFrs6vcpkBPHBaQDUQbbMR4kzPFnfVFu8dgAcA2B3sPusnUW86ql-3xryAF1I0A0gOyNtB9SHh9ZIa0XmhW6E6ypReeY7_BKC3TrAI4B0MHmg9me8KAS6QG9lGjs_XrpI30fjD6decNk7Q4q_STluCEfKhNP5MzNDoqvwI_q8_tCvYsf-74X80HV5w5KXebYzAU_6cdog_ggzra9VjBE_0Tc93gt4gdRBPAG-AdVa5zOPErBV5izxJsRg6JmLiV9xJDsLdiayi5yz9tt0LCte4H_HmI4XioA5UCMeCgGCjIjne4XzoMOEj1h7vHE0rzI0G8Vj8mkPYjLbCvk8fw8qKBiwWN8m4x6e3OBfYg-g2C0PyNtT63iiMURWS7xYAoyE5X1sgXyqnMypvBUSx8QmkfdqenoMzPP9weiD49RUd8-pcQwfntrUyC-F75_c0-fjeNDo0_W8R6VMDbHq1v4ChU753jaKPgz080d4bSNIN3c9voW4Y2mbM5RUbpGCWJtdZsQJOst6T7Gf-Gd475yixJLpzk53EggG7XS5Fov-oWf3mXw9lrd_OFhvvhIHj5ekMub6-ubP65--0Aur64v7snDjW4--_0Dubu4vbl7QAuYuceuxcUK1_13r8btB-CdQDQ89NJ6T_KVKhjephAxdW1-7G7qj5JQ65-wxFvZA6_ehkeu4-7bQFvDuyJZUZMKL3akmA4x-Jo80qaQKUakGd763Y9u05K5Atq2EzzXJQleFyW2zkWHR3541Du59PB9tSdMrvf2Iy2d1AgRXfDDqJYYUA8uiNNrN0STJ-0Gx15AfSs04PoDCte-aCACcozTw9kk_FuVEGOue4OkqBtZAPyuaRKdH_-bCPPbt9M1XRfkhJ96HFIiPamzOhenJkDpi6JCEYhRW5pnGPi4wJs6eDVKL4Ck3GrX-adf0SUnjcxPf-lvVAL_ZH3KWMgSOxEOnflhIIRIoiCBAJ1GoW_baXyS00Tk6hSWBfAvxFeiSSCW4PwkO23vj0VOFNhBNKWJHwWhsEXgRGlAfbAnbICyfIo4pqVcnchTDUlfP_PtPFO1OnRC_MJrD0KzA_q0qdelPP22BhuVxUo1J5r7qUb_P5CgDyw">