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

    <tr>
        <th>Summary</th>
        <td>
            [WASM] Backend crash with "Unexpected all-undef build_vector" when targeting `bleeding-edge`
        </td>
    </tr>

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

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

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

<pre>
    ## Description

When targeting WASM `bleeding-edge`, the following code crashes backend with assertion `CommonIt != Counts.end() && "Unexpected all-undef build_vector"` failed during `WebAssembly Instruction Selection`.

The code can successfully compile when targeting WASM without specifying `-mcpu=bleeding-edge`.

## Minimal Reproduction

https://godbolt.org/z/Gv5jT4bYs

### Code

```ll
define i8 @f(ptr %0, ptr %1) {
BB:
  store <3 x i8> zeroinitializer, ptr %0
  %S = shufflevector <3 x i128> zeroinitializer, <3 x i128> <i128 0, i128 1, i128 2>, <3 x i32> undef
  %C = icmp ule <3 x i128> %S, zeroinitializer
  %C1 = zext <3 x i1> %C to <3 x i8>
  %E = extractelement <3 x i8> %C1, i32 0
  %B = sdiv <3 x i8> <i8 1, i8 3, i8 5>, %C1
  store <3 x i8> %B, ptr %1
  ret i8 %E
}
```

### Stack Trace

```console
llc: /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp:2025: auto llvm::WebAssemblyTargetLowering::LowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG &)::(anonymous class)::operator()(auto &) const [Counts:auto = llvm::SmallVector<std::pair<llvm::SDValue, unsigned long>, 16>]: Assertion `CommonIt != Counts.end() && "Unexpected all-undef build_vector"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./llvm-project-latest/build-debug/bin/llc -mtriple=wasm64 -mcpu=bleeding-edge ./crash-reports/dagisel-wasm64/bleeding-edge/2.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-wasm64/bleeding-edge/2.ll'.
2.      Running pass 'WebAssembly Instruction Selection' on function '@f'
 #0 0x00007f89924d6f2a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x00007f89924d70db PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x00007f89924d5756 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00007f89924d7805 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:412:1
 #4 0x00007f8990c6b980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f898ff67e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f898ff697f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f898ff593fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f898ff59472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x00007f899f70e172 auto llvm::WebAssemblyTargetLowering::LowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG&) const::$_2::operator()<llvm::SmallVector<std::pair<llvm::SDValue, unsigned long>, 16u>>(llvm::SmallVector<std::pair<llvm::SDValue, unsigned long>, 16u>&) const /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp:0:5
#10 0x00007f899f70a979 llvm::WebAssemblyTargetLowering::LowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG&) const /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp:2052:3
#11 0x00007f899f707898 llvm::WebAssemblyTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp:1422:12
#12 0x00007f8992a6e41d (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1294:29
#13 0x00007f8992a6ea33 llvm::SelectionDAG::LegalizeOp(llvm::SDNode*, llvm::SmallSetVector<llvm::SDNode*, 16u>&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:5155:10
#14 0x00007f89929054be (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1607:12
#15 0x00007f8992904fff llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:25586:3
#16 0x00007f8992cd6f8c llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:925:3
#17 0x00007f8992cd5bbd llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:701:1
#18 0x00007f8992cd564d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1641:11
#19 0x00007f8992cd2b27 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:480:3
#20 0x00007f899f6f75aa (anonymous namespace)::WebAssemblyDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp:61:5
#21 0x00007f8995ceb1d5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#22 0x00007f8994e33676 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#23 0x00007f8994e384a2 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#24 0x00007f8994e33f49 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#25 0x00007f8994e33abd llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:535:16
#26 0x00007f8994e38781 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#27 0x0000000000419b16 compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:737:41
#28 0x0000000000417eaa main /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:418:13
#29 0x00007f898ff4ac87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#30 0x00000000004176aa _start (./llvm-project-latest/build-debug/bin/llc+0x4176aa)
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWl1zozgW_TXKi8oukEDAQx4cO-7prWQ7lWS6a_fFJUDYmhEShUQ--tdvScI20MkkM5VOeqemY4HQ1Tn3Xo4uAqo130rGTkF8BuLVCe3MTrWnv9Hvj2uudye5Kh9PAcIAYbhiumh5Y7iSIFiBYOH_ftsxCQ1tt8xwuYXfFjeXEJAgF4yVXG5nrNwyQAKAltDsGKyUEOreXlmoksGipXrHNMxp8SeTJbznZgep1qy181hDS1XXSn42EKAQ4BVcqk4aPWeyBCgFKIMAEYAIBAj9LtlDwwrDSkiFmHWyZBXMOy7KzR0rjGoBQoAEsKJcsBKWXWtxABJ8Y_lCa1bn4hF-ltq0XeGmv2GCuRYgwXxI-nbHevxUQt0VBdO66oR4hIWqGy4YvH_CLZac6gzUDSt49dhPPquLpgN4NfXYaMI-Bpdc8poKeM2aVpUe5fCynTGNBngB0Bqg9VaVuRJmrtotQOvvAK0_3cV_3Eb5f_SPtq35pSrZqIcE_n8h_ImSVVwyyFMIoqACKG1MCwGKXXj7duiCkpz5EWdnFo5rQqiNahkEeInhA-QpwOfwO2sVl9xwKvh31g7sBPtRAMU30IZe77qqEszH8mAmRM8ZmlwB8NI2oQPrWuGhhQA-Hw7B9gR0GTSAsXQweFE3sBPsB_sovrE2pkgG40Nn4Dt7MMfB_dAlNGrkmsG4czeMPZiWFoYJVjNpxm50xh0bjODQc2fecyW_mwzAS753QApx_xvv3eDMPR81a3gU8v7SlhmXHCju4YNkNUmlpzPvxtDiT3jb0uLpBCyU1Er0fUIUAC8gQOudqpn9YbJ9BGhNK9GITtt_M66ZAGgtxF09a1r1ByvMTFDDtOnP2h-eA7S-dXcpQOuBDIyPPt8wcaHumdWLedE0AC9QgGILgnZGQWcOLwBeDAZ5s_thvtsdnf3--WK1-Xq-vP1yDVB6HHyz-kpFx6xjByf3GrRafPJal_kOgFIqlXysVadhIajWhy7VsJY6vbMKaS-0KP1gaF1pIIjPvJICvPC9eDWctaZCfPWiiZfalP50Q7k9fhJyJ91aUkKhLF2XRyGxjXhlPbX4maqOkl7Ve9W8ujhf3JxD3eU1N5DCvNvCljWqNfY2m8gkN7sunxeqHmTGIG0AWnOtO6YBWkMqS8hlIbqSufXMLWBu-bI3J-un9-lcdnVzUD-r59lVq7YtrSFtt529iS0IOH82TR3LWcnyzgp4zqW7soCz2rS8EQzg1T3VNYngk4uIs-wAzjx3y6CkW3trzPxAa3a07qA1mu_VPrSQrzsp7UrVUK0hQMm6k35xvLInLqmkW6u2CVQS1qp0uoiSfz6zHetmR0_N_vJK7ZFUe5QAJX6pSnqNAggHMHgIgiBIqjTLUFSSCtFB7utH7RtXLZfGhdIL0_Beben9RmnTMlq7VF1CLo1P3LdRpZuusY4DaP275A_2BN9KKvScS6t-MUkAXoThkVU4YZUEZQ4nFLyN36gshQ1aeqd4CdDiHXGTKLS4j7DRBHacxOSpYFx3coReH4TirXHvAXuhD4PIuvsIGE_9nAYxnDr2fZMhCtHYqdEQY1CQPEsDuNm0zK3lm9bqbnqw_pCSDYlmgsvuYbaVne9ozK5ltJxrNQ8AOgseQpSlgV1PDtPEg2nSqiIJSxPYUq6tBnj1svoqeF7Mll__df_f_HCI5igBaK0dD4DWc6sY-lGXrLFa0Xma-lHfOTSys4fO9Nylv82i4IiETJBkSRVCmivH9HVITOm94Ua5SdLJJMl4kjjDFYWbjX9c2dj1Z5PT13P34w4NP2U2njKdThkl6BWxK2zUiIsaDqIEjaKWDZOjSgIWJuh965hhJbIvZqINerJ4GVUbb1WVdLZlD9KfZXxUa31koRoc1csuEsEk-DRLsg-J-0eX77FNN3x0TDhxTJJm6d90zBeXua4I-f_0Shght5Cgo1vGyzMlLApLOHr0kLRmunH1UfYjuQu2dY_BvZv6oy_NxEX_ViV740JkqUr2idmSeezs9R7EavFpzxtldpHfi6Tljae8KcbPxe-V1JbT56sbZg5688yIkZp8gGfiMI5dEXT0zKi2QFkQRzl7KSNWi09LVedcsvZQzY3c1PdesDtL4h2oDhDtk4AEyST54wnVqKqqv0yC3uRfUBsmwWJxzXQn7MPRJD162F8as0-uj_MLiuOUjLWSjPxSlKRKi2f8YlVmxGkhy_OaGzfbmxbwz1Kawul5ZW4DZ8AqmbCK87x8kZU_e0Y1L86EKv4chZ4Lrs2Gm76gGd7lvqtkhvLeklQl2yi3v65Hlw6ec90ueusXk4oK7RruIc4XH4dz7iJ_7heDkysl3kvPnol8EgyeQW3k02nkSfTayC-EOAZfj6J_2Cnxde7Hcg77B-8B62zCGuUoeZF128kv8pIWOy7ZnuCI9Q99H0o7SoPRTY7G9S-pkpjSl1avQdG0Wny6Vb-SQ15X5-1h914h4eihAI1q37hgeVjG8FkGV1TrAfcnSf_08D-Baa_rllx6JDeqYCOGMUmGG0zrKzt2v4_5MbQ-X_fFV_E4AHMoyrHNYTRIYjyhlEYUvYLSpdueHSdnf-o96STE6dGRTjSNUBVlL92Tl780xziKJyGLpxzpqLgQzlK_7Xy097lujjLzwaRiHE_iRqZpmKThy5x-FT4hScZbAGhfAPr_ojDLQ7J_oX_Iq2JHW1evT0r2i4uvl0slDXt4u6XeKCW0f-fj_-4LGJy4Xd8j9HQCPWGUwppy-RNRRGFq3ThwYDberYxokSZwsxE8Lzba0NZs9pBesz9a6G6_MeybrtPZcXulOIqOm6UA4cN7nYMTCKXQT2zl5G-_Z3P7p97MYQN18h77pDzFZYYzesJOQ5KEcZISTE52p2FapSzJSIlJlcZFgvOAFmVAU0ZSkrH8hJ-iAKEQocAKekzmOCckSZI4iaKqwhEFUcBqysXcYp6rdnvi3kKexhlB5ETQnAntvttBSLJ76DoBQiBenbSnjmfebTWIAlva66MVw41wH_x8W9xcgngFz_pvb_yrTPcFzitfu06_cnniu5-TrhWn__x9qyP7vwAAAP__ua9f_A">