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

    <tr>
        <th>Summary</th>
        <td>
            [LV] dyn_cast on a non-existent value
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Compiling this:

```
#include <algorithm>
int a;
short c;
char b;
void h(char d, short e[][1], char f[][7]) {
  for (short g = 0; g < 17; g++) {
    a -= b * (2 / d);
    if (std::min(0, -6) ? d ? e[g][g] : 0 : 0)
      ;
    else
      c ^= std::min((unsigned)10,
                    std::min(unsigned(e[g][g]), 9 ? unsigned(f[g][g]) : 0));
  }
}
```

with `-Ofast -mcpu=grace -std=c++11` results in:

```
clang++: /llvm-project/llvm/include/llvm/Support/Casting.h:662: decltype(auto) llvm::dyn_cast(From *) [To = llvm::VPWidenRecipe, From = llvm::VPRecipeBase]: As
sertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' 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: /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 -Ofast -mcpu=grace -std=c++11 <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 "_Z1hcPA1_sPA7_c"
 #0 0x0000000003c7a1b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c7a1b8)
 #1 0x0000000003c77b8c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c77b8c)
 #2 0x0000000003bc7eb8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000076613ac42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00000000058a2290 llvm::VPPartialReductionRecipe::computeCost(llvm::ElementCount, llvm::VPCostContext&) const::'lambda0'(llvm::VPWidenRecipe*)::operator()(llvm::VPWidenRecipe*) const VPlanRecipes.cpp:0:0
 #5 0x00000000058a2682 llvm::VPPartialReductionRecipe::computeCost(llvm::ElementCount, llvm::VPCostContext&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x58a2682)
 #6 0x00000000058a9c56 llvm::VPRecipeBase::cost(llvm::ElementCount, llvm::VPCostContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x58a9c56)
 #7 0x000000000586d897 llvm::VPBasicBlock::cost(llvm::ElementCount, llvm::VPCostContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x586d897)
 #8 0x0000000005871e34 llvm::VPRegionBlock::cost(llvm::ElementCount, llvm::VPCostContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5871e34)
 #9 0x0000000005872a3b llvm::VPlan::cost(llvm::ElementCount, llvm::VPCostContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5872a3b)
#10 0x0000000005733e9c llvm::LoopVectorizationPlanner::cost(llvm::VPlan&, llvm::ElementCount) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5733e9c)
#11 0x000000000574263f llvm::LoopVectorizationPlanner::computeBestVF() (.part.0) LoopVectorize.cpp:0:0
```

See also: https://godbolt.org/z/KPGa64vbK
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWN9u27jSfxrmhqAhUbYkX-TCduLvA3aBBs0iBzg3AUWNJG4oUiApJ-nTHwwlx7G33XZPA5wGjm0NhzO_-csxhfeqNQDXZLUlq5srMYbOumv_pwVX96D-BHdV2fr1emf7QWllWho65Um2IUl85cn8SjaEZ8pIPdZASbYTurVOha4n2S1JNsoEKki2JcnGd9YFKqcH2QlHq-n7waqadoSXkVgTvqMTL0zoyGqb4gff0cjRvJGLSF5TUqAcShvrKOHltLulJLuhCcm28euOpkX8Tvg2vk7bKBWUIXNFCd-gBE4J3yOU9QQReVQTZYcavZBtemUILxNExfIoLdvTOr4j7nZCiB-UZBuaTO8ocRJH6Uk0aA9vZEnJ6hbRXKgivBxNDBviSlHz257zv4uNp13lBTJEw3d0wv6OrfkL2wn9ySWkuMHwT-_vEyLZPKvQUZIn7FMjfKCsl8NIspvWCQmURXw3cgpEmpI8oQ78qIOnynw1x6QW5hi4DCO01_rQs8HZP0GG-ZHw_ZyIJ8L9OAzWIcdO-KBMu-hItslzjmJqkDq8DkB4KcZg0cy4LfqufjWPUvhAeLl3tsfMiH5Ybf-wMbNOrA93_1I1mM8gFQrb0WnDBc-0vBUe0KXZhm48VgW4oKxBZ9UQhNITu_J3DjwYVP8gdNTMc8JzSjg_QqPWUEGNNQxelA9gAj0IPQLhnPCCNkJpqEmyufv9dnN_S_1Y9SpQQauxpQ7QLzRY2oUwxMrme8L3rQrdWC2k7U9OvPC18n4EjwUiTE2PtR86oNIJ39FKyKeAkUZXDA4GZyV4DzX1dnQTGXcK761UIkBN3Wiol04NYUGSzX0Q8onWYz9MyZAsSLK-c7Z1oqfCtWMPJvg5EeyAmGTsU-AYvAzaOnBIw6RhwY3mifB9hbWwf5dIlLX1s3ANW1LWUmZRmBgGFDmGYQwLT1ljLDuAq6wHJnxP2T1lQbgWAhXCyS5fMq3M-MJaM1LGWilZsFbLTmAi3_wtPOH6fIkel5KlfMEXCRJnqaN5MvbZnEn3r95ZGz5W7nfWZp2UNdJq61itRGusD0rO3okhPyf_SM1jQ56zIZ4TKYaYZDuwDclu6SCcB0dFoGBqahvaKI0dkiPbpyGoXn0BR5JNhoTPozF4RA3Ce6yPZjQSiwrliRYcU-aAanjZaCsCV1hWO22fwTFpjQ_CBKZMcMp4JT3hO9m5yGEHwkv8YM4GEYBkuw5EDY7V46CVFJOarbEME104YI11TAcb9UUJrAYNkS9224mkfHCqGgMWgzJYWCxoxXoxDMq0_sh3ABmsU19QsbGIEZwGcYhqJNTMGv066X9jvViagCjTgGNCq9b0MJtvB6atqBlo1UcWH6TtK2VQWy9emArgooWeZDfpUY1TzStr1Mtg0Y9Rulf9oFXzKpuWZLvKmtEzFMdC58B3VtezgMa6Z-Fq5p9VkB06vybZdn5ywrTAgmVKYuUfycEybe3TOEwAngAQt8Wete2s8oFJ2_fWRI1-YproaJ1nPlgHnuGRFBWyRowajwJUoczT5XY_gBy1CMAqbeVTJM32TfsrJ4zsJkUn5tEMDmolg6g0-Nkv-l0IMaOmB3Z08085PQZwNM5qTbLdp2yiBieMb6zr2bNwWBUIw1lBst2AJ4o7AIth-npW_Cye3nuBJaNkH4dBbZ-PLoqVcjsVwZtK1jjbM-H92A-TklkQRmbGc_Q-4btaHZiDng1COWTFA1MKrecU_uE8NJb9o1TESP81G89S8S3rLtLpR1MRVfxUNv5tKq4J5zgu9LYeNWCTPGvAnJNks_xaL_3QNhQhHLszSn_8d9rJu0366O82xaOccFDCs4QmL8nxL5OFSKvy3TTlX_305c4pE-K88Mc0cZQnJieeH60PDkQfZ6cdjY0fJ6nyZwYHwrfJy4xpnucJz9ILxEVVyq8h3mkQZhw-mXvVGpzs3uZzqi2q-DB8iOCEj5_hq2QBVUl3eHp_BmkP4F4nQP8vTK1RTTl764xnZ02Al7CQA85mSfyf5Gez_CLP00zIJV_xZLZEq4rw_UuZP76fl6YFufB2kUfIccsJ8PI94FUpOF8nZwP1nXBBCf0Z6jEm1Dx_x1V02xhgZ-MAf9p1qwHbzs6Osd2dyUPm2b6YL2sah4NpmfBCi76qRUJ4cSbyYvrfxF9IuGAH7JzWRSesv7dnUkYf7rSY6f4rXl5dOiUv-f_CKR-SozP-U8jzC-vWcpV_6zfUbNFPmfJBRiDMkxHFuRF5Xa6LMxxb4ZXcYjf_hYyIME9GlOdGFClky4tItMqaX82KiPNkxfrCCi6y6gyHFuZXQo_4JvR4oJydgasiy2D9_kT53drhYT5t43SF1hhw3zBoMnY6B79l5ocW9wT4ZE56bs6S51nzD8yJrWsLPjzsp4aKKBeDcAF_4K7p-_1w0TkvbqfuAajQ3pJsc3n7YevK6rCwriV8_4Xw_W93_yfy5aH67aq-zup1thZXcJ0WK54tc86XV911WZdFnhRlk2RZVhaQJ01S1SJfp6lYp2Vypa55wldJkfK0XCV8uaiSWkghpSySIuFpQZYJ9ELpBXoDdV_FK5brdFlm5fpKiwq0j1e1nBt4pnEVZ6XVzZW7jrcz1dh6sky08sGfxAQVdLzj_f2BrG7o9-6Nrkanr__766AZ7uGa_ycAAP__G58NbA">