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

    <tr>
        <th>Summary</th>
        <td>
            [LV][SCEV] Crash in ScalarEvolution::createNodeForPHI
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            vectorizers
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          sjoerdmeijer
      </td>
    </tr>
</table>

<pre>
    See also https://godbolt.org/z/Tdj56eqKj

This input:

```
char a, e;
short b;
extern short c[];
long long d[16];
long long *f;
void g(bool h[][9][9]) {
#pragma clang loop interleave(enable)
  for (short i = 0; i < 16; i += 2) {
    c[i] = f[i];
    for (short m = 0; m < 016; m += 4)
 for (int j = 2; j < 15; j++)
        d[j] = e;
  }
  for (short k = 0; k < 9; k++)
    for (short l = 0; l < 19; l += 1) {
      a = 0;
      for (int n = 2; n; n += 4U)
        b = h[k][k][4];
    }
}
```

Crashes SCEV:

```
clang++: warning: argument '-Ofast' is deprecated; use '-O3 -ffast-math' for the same behavior, or '-O3' to enable only conforming optimizations [-Wdeprecated-ofast]
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: /opt/compiler-explorer/clang-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -fno-verbose-asm -S -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-12.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-12.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot -fcolor-diagnostics -fno-crash-diagnostics -std=c++11 -Ofast -mcpu=grace <source>
1.      <eof> parser at end of file
2.      Optimizer
3.      Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "<source>"
4.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "_Z1gPA9_A9_b"
 #0 0x0000000003c90a38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c90a38)
 #1 0x0000000003c8e40c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c8e40c)
 #2 0x0000000003bde738 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007ad6cd242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000002c7c69e simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) InstructionSimplify.cpp:0:0
 #5 0x0000000002c7cdaf llvm::simplifyInstruction(llvm::Instruction*, llvm::SimplifyQuery const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2c7cdaf)
 #6 0x0000000002d85d3a llvm::ScalarEvolution::createNodeForPHI(llvm::PHINode*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d85d3a)
 #7 0x0000000002d86d7c llvm::ScalarEvolution::createSCEV(llvm::Value*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d86d7c)
 #8 0x0000000002d87bdd llvm::ScalarEvolution::createSCEVIter(llvm::Value*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d87bdd)
 #9 0x0000000002db0580 llvm::ScalarEvolution::LoopGuards::collectFromBlock(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db0580)
#10 0x0000000002db24aa llvm::ScalarEvolution::LoopGuards::collectFromPHI(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::PHINode const&, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, llvm::SmallDenseMap<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards, 4u, llvm::DenseMapInfo<llvm::BasicBlock const*, void>, llvm::detail::DenseMapPair<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards>>&, unsigned int)::'lambda'(unsigned int)::operator()(unsigned int) const ScalarEvolution.cpp:0:0
#11 0x0000000002db2672 llvm::ScalarEvolution::LoopGuards::collectFromPHI(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::PHINode const&, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, llvm::SmallDenseMap<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards, 4u, llvm::DenseMapInfo<llvm::BasicBlock const*, void>, llvm::detail::DenseMapPair<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards>>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db2672)
#12 0x0000000002db1a30 llvm::ScalarEvolution::LoopGuards::collectFromBlock(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db1a30)
#13 0x0000000002db2aa9 llvm::ScalarEvolution::applyLoopGuards(llvm::SCEV const*, llvm::Loop const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db2aa9)
#14 0x00000000057072bc llvm::LoopVectorizationCostModel::computeMaxVF(llvm::ElementCount, unsigned int)::'lambda'(unsigned int)::operator()(unsigned int) const (.isra.0) LoopVectorize.cpp:0:0
#15 0x000000000572af63 llvm::LoopVectorizationCostModel::computeMaxVF(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x572af63)
#16 0x000000000574d51b llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x574d51b)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWV9z47YR_zTwCwYaCtTfBz9IstXcNOm5cXqZ6cvNElxSOIMAC4CynU_fAUBZos658_WU9CUeWaKAxe5vd3-7AEVwTtYa8ZpM12R6cwWd3xl77T4ZtGWD8hPaq8KUz9f3iBSUM3TnfetIviJ8S_i2NmVhlB8ZWxO-_Y3w7S_lp-kM__P3TyRbkWz1y046KnXb-bAmDpFZ1r-yldiBpUD4hiLJ1yRbuZ2xnhbpCz55tJqmMZEgphlldE3jW0mm6_HslQnCV1Ua2xtZ0prwRWGMortez3S9PPngS0rmQZjwvLVQN0CFgqjLtFRqj1Yh7JHwBWooFBK-JNmK0spYSvgiYZSU5Dc0I_k6Xm7oeNZf83WY4Uc7lNLokiTTm7iq6r8kzGF6oLo5qm6i6izpbg66Jz2ifpXUnn6iyWi-jpcbOp7G67AivJa9ofAX4vjpgAUPIMj85nMvH45QHqLaZbw81zpYo45rVIKy7K8T-vEwMpTCy4KXoRPP9NEzHd9eovCvoVtFFAw5f0jZ7j8mg0gnN_v3E3qSbLWx4Hbo6P3m9sPrFA406X3PV_QRrJa6Dpdg665B7Snhc_a-AucJn1PpaImtRQEey4C9c5gkcsqqIMUa8LsgGhz2O6QOGqQF7mAvjQ3FEgMRVgQpb2iiJDVaPVNhdGVsI3VNTetlI38DL412lEzX7NejaWYiomnw-e7H29X9LXVd0UhPgRZdTS22IXH-s5KXftcVI2EawrdK7Q8frLXmEwpP-FY616EjfEtBl1RqoboSoyciRJMWIB68BYHBl9Zia41A57CkznQ2DYeV4JwRMoClttPUCStbPyLZ6t6DeKBl17QpJdmIZMs7a2oLzUvYA2RK-Na0AZMwTSsVWoZPrTIWbRgLqWPedvqB8G0h9WEspZOyunwEW7EJZTVlJiiDtg0qO992fuQoq7Rhe7SFccjANZTdU-bB1ugpgBW72YQpqbsnVuuOMlYLwbwxSuxAapLffBEe2GY2CREXgo35iI-yMNhr7fSDNo96oN09O2uMv6zer8z1NimrhFHGslJCrY3zUvTRiSkfDjtfkvxGpCiPxzQVB2WNaDuS39SBGqFJ9GzIb0m2GocUk3yDpiL5LW3BOrQUPEVdUlPRSiok2YoHsfeJ92hJtsrDwM-dDkVJW3COEs6rTotQFEEf1GiZ1Ptghi8qZcBzqT3hG2Ue0TJhtPOgPZPaW6mdFI7wjdjZKGFawhfhg1njwSPJNzuEEi0ru1ZJAcnMWhsWiA4WWWUsU95Ee1EDK1FhlOPLlyHpvJVF50MxSB0Ki3klWQNtK3XtDnJ7FN5Y-VswrA07blTBjAhVrtVzsv8iejaVgEhdoWWgZK1D8Rz0KwMlQyWbKOK8ME0hdbDWwBOTHm3qLiS_GR_MWFk9s0o-tSbEMWp3smmVrJ5FVZN8UxjdORbUMb-z6HZGlb2CythHsCVzj9KLXQh-6JH9Nwu6RuYNkyJU_mHYG6aMeejaBOABMeA2oWetd0Y6z4RpGqOjRZeE0njwzjHnjUXHHqVPBlkFnfKxia-d1A_ny12LolPgkRXKiIc41PuX1hcWtNglQ0fhTrcWSyl86NWuj4s6SWFgVPrCDmH-rqDHBHbaGqVIvnmfp1FvQbuwQ7DDVsU3zhog-aa16NDukcU0vc6K78XTOAehZKRoSL4BpczjIUSxUm5TEbyYZJU1DQPnuqZNRnpFITM9nkP0Cd-Ucs8sNqwFaYOoB6kEKNVT-M081IZ9ExVDpj9n44CKL6w7o9NbqRhMfBcbv0jFJeGcGk0bU3YqHEj4oAFzTrLV5LVeetE2FCEcunPQ_vHf4_putfy4Wn4sEghKeJ7R7Ck7_OVimUG-oPEskq9IvnLPLl3cWal9PCz8ko4bi6OQhcePxnmL0BA-C0eO2PWX4Yj5PacGwtfZU4-pP4sSno-HiBc4ycRriDcKQXfte30vaw2K8EWn4y1aGe9qLocvIjji4wN8RYnzfEHj2fdnFGaP9jkB-gF0qYKZRR-tgczGaI9PfiTacDDL4n_Sn_f651DORMknfMqz3hMlC8K3T4vZx9PDUpoQI2dGswg5LjkCnpwC5mIuZkukB-K_087bLpLoV-l371u0oEs3yP-JDOGrkP_j3MpaeP4ZK5JvjoMfQHUYRGMzO5G-763-s0Mbz9_hoB8Z9ZK7PlgnNg-LXonV9Ny1EqpTrnzu5Jsd-z2ol2FVj_WYpNnAk3IxLXM4RSNAgb3dG9Wl5h8GhUXw-A9T4tbYux_eDXy7--FdmIl-XQhzQnXEPD_DPCvn4m2Y4y3iKdoXxlwOa0BzxLo4wzovyvLtWN_5WMh_KN6A6Ih3OcRbZNNF9jW8PxrT_q0DW_YdUhilUPitNc06bHgDD841pDJ8u4Vz-TU4KaKZQ7GsvlHgvgGl7ry9R_-uadWgo7y2ODSXV3vHZRISQ54SEnal7CwhfAJfLdAvJOS8XC-djr78Bz32AqE-U3GD2uFP0H5Vwbf5sqGTbrjkYOidrsxbjO2NLD_bfUoMZ9yhwjuQ9rLo89vfZWaSJXyuoClKIHx-emo5lTFhH_bGRiovP5dK2OgZlrMdMtB2fE7b2Zz_Rdu_aPsttL1UQw3cOzZUfsbMMeR_7XB_7g4XQn5MSH7eKgCWXwsXtK16Po3Zafw3tx9-JxBhxcnU5RgGsDw6NLjxmc6zOS_EGYgP_S12_EllY5z_yZSoDuRq2s7jT_D0YTtw7FZhg9pvTBd_5_nDuzzhi5F0FkYhWfQUNr7S8adDrzlUs_xP8PoiKezhHlM4GzozKafj4kvO3CnQGm2abRXo_4MLEWTvwuHp11V5nZfLfAlXeD2eT_Msnyxn06vd9TxbLDksMM-nwOcI43E-hjlm48VkzHFZXslrnvFpNufZeJEt-XTEK17xYl7ihC8w8GuSYQNSjYKfI2Prq_hQ6Xo8Wc757EpBgcrFp9acH39AdYRzMr25stfxiVTR1Y5MMiWdd0dFXnoVH3j_-CE9C4z3bdOb9FMGlfr8APL6felVZ9X1__5orHdkf83_GwAA___1G_Mo">