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

    <tr>
        <th>Summary</th>
        <td>
            `__builtin_shufflevector` runs into an assertion if no integer expressions are passed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            clang:frontend
      </td>
    </tr>

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

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

<pre>
    See https://godbolt.org/z/M5x5Kdnc3, which uses a test case adapted from `test/Sema/constant_builtins_vector.cpp`.

```console
clang++: /root/llvm-project/clang/include/clang/AST/Expr.h:4483: llvm::APSInt clang::ShuffleVectorExpr::getShuffleMaskIdx(const clang::ASTContext&, unsigned int) const: Assertion `(N < NumExprs - 2) && "Shuffle idx out of range!"' 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-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++2b <source>
1.      <source>:22:66: current parser token ';'
 #0 0x00000000039a1548 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x39a1548)
 #1 0x000000000399f22c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x399f22c)
 #2 0x00000000038f0288 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000072fd01a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000072fd01a969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x000072fd01a42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x000072fd01a287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x000072fd01a2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x000072fd01a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
```

We should just check for this case in Sema and reject it.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vluv4yYQ_jXkZeTIxpc4D3nIuURdtbs9albt4xGGsc0GgwV4N6e_vgL7XLxbVTpVGzlWMsx88_ENMDDnZKcRD6S8IeXdhk2-N_bgG4YCrd00RjwdzojQez86kh8JPRF66oxojPJbYztCT38SevpYXsufheY5obfwrZe8h8mhAwYenQfOHAITbPQooLVmAFKlYYTQ0xkHRuiJG-080_6xmaTyUrvHr8i9sVs-jqRKtyS9I-lxeVfp_IQgo3C2csV0R-hNePIjEHqyxoQMSn0dktGaL8jD38XvJDVXk8A3luP5M6Gn--totz3Jj0VR5wEpxIe558fjw_mD9jD7R8u5n9pW4e-Ra4iczR36ZeQjc5cP4kpoHWf4NvZ4_nxrtMerJ7QKwk06lkOA1J7QPcSIwODoHFovjQ66EVp_ApLfwqdpCBkdJECDe0SpgFC65AYprmAmD6YFy3SHhGaEUkJ30DKpUCyqPvxyfzzfg5uaQXpg0EwdWByN9eDN97WXvp-aLTfDouyPAkvnJnSEnoDpMJcoM_gegVvmemgYv3jLOIY5jxZHazg6hwKcmexsDpHMOcMlC2vGThoct3L0C-WzZ_wCYhrGwCyawhrZP1jTWTYAs900oPZuWQpmjKU3wygV2gSvozIW7XPxE_assEu8nfSF0FMj9evaCKsKkk58Y7ZNCkg6SEzAZeMY0Cc_Tn7rIBmCFpAk17pKmBsS96Q9u5L8TmqPCpIzJEnHeeKNUbxnUpP87h_pBWen2eh64yFpuVHGJkKyThvnJXeQtNokUdi12XlB8js-U6dNWDGLvPn9LFgWBFuZ8yOlJD9WVVCNT9ai9jAy69CCNxfUQOiO5DfhHSGA0DyF9Jo-f_I9y8qifrNn3JObfzxYqX2s2-e5-PWrk2XfHo3zFtmw7IVlCxBa_0fVI_QmvS70CN2_8s_W_Pctpfzv-N8qZHoaf9Vn2WmmCK1f9qsyIcv_wDaSWbGlK7Z1m9K6httQ_t-Qm69on2Z6PzEtVEhaL0qufJZzJx6u-TGN35cU-ZJiR1uRZqygJU2XqSnZEHq61tVjVSRK6umadHqaB_jWmW0ViceQFe1ijbmv9i2H0fcWmXi8SKXelyDGrxKU35MudhV0LmrxXvLFrlphV2tsWu_aHFgTzsd3IcfAFfLuB-SseTdm1qww6zVmvsd99T7MGPKC-dJt37bgPxBcbyYl4MsUulqP_AKtseB76eZ-LzWE3h6PcouhN4D024045GKf79kGD9kuK-s8o1m96Q9C0KzgTcWRpRWypuKsQJZyyrEu95xu5IGmtEjLrErzoirrbUkzxkqWNgUVbSYaUqQ4MKm2YfOGy8kmdqLDnuYF3SjWoHLxpkNpZ4yAVlrnIfrErnhLKH1uz60NO0SLMFDebewh9rhm6hwpUiWdd69ZvPQKD6RKH58vL49ubsDzFYZUaWhgLpxpBpiGlwMAZAvaBDt2aAGvo0XnwskAzCKMwVFsJqsO_74Jx9n_FQAA__9yWxD2">