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

    <tr>
        <th>Summary</th>
        <td>
            wasm assembler does not support v128 global definition
        </td>
    </tr>

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

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

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

<pre>
    Consider this minimum repro:

```asm
        .hidden __R1
        .globl __R1
        .section .data.__R1,"",@
        .globaltype __R1, v128
__R1:
```

When attempting to compile it with `clang --target=wasm32 -c test.s`, it'll panic with the following error:

```
unexpected type
UNREACHABLE executed at /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/WasmObjectWriter.cpp:1676!
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: /workspace/wasi-sdk/build/install/opt/wasi-sdk/bin/clang -c test.s
 #0 0x000055bc2f4459fd llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x000055bc2f445e8b PrintStackTraceSignalHandler(void*) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x000055bc2f444236 llvm::sys::RunSignalHandlers() /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/Signals.cpp:104:5
 #3 0x000055bc2f4452ee llvm::sys::CleanupOnSignal(unsigned long) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:367:1
 #4 0x000055bc2f37f845 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:0:7
 #5 0x000055bc2f37fbe2 CrashRecoverySignalHandler(int) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
 #6 0x00007f265c851cf0 (/lib/x86_64-linux-gnu/libc.so.6+0x3bcf0)
 #7 0x00007f265c8a826b __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #8 0x00007f265c8a826b __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #9 0x00007f265c8a826b pthread_kill ./nptl/pthread_kill.c:89:10
#10 0x00007f265c851c46 raise ./signal/../sysdeps/posix/raise.c:27:6
#11 0x00007f265c8387fc abort ./stdlib/abort.c:81:7
#12 0x000055bc2f387700 llvm::install_out_of_memory_new_handler() /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/ErrorHandling.cpp:193:0
#13 0x000055bc2efae6f5 (anonymous namespace)::WasmObjectWriter::writeOneObject(llvm::MCAssembler&, llvm::MCAsmLayout const&, (anonymous namespace)::WasmObjectWriter::DwoMode) /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/WasmObjectWriter.cpp:0:13
#14 0x000055bc2efaac52 (anonymous namespace)::WasmObjectWriter::writeObject(llvm::MCAssembler&, llvm::MCAsmLayout const&) /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/WasmObjectWriter.cpp:1448:5
#15 0x000055bc2eeeffdc llvm::MCAssembler::Finish() /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/MCAssembler.cpp:941:37
#16 0x000055bc2ef5fd04 llvm::MCObjectStreamer::finishImpl() /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/MCObjectStreamer.cpp:936:1
#17 0x000055bc2ef92716 llvm::MCWasmStreamer::finishImpl() /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/MCWasmStreamer.cpp:222:1
#18 0x000055bc2ef85640 llvm::MCStreamer::finish(llvm::SMLoc) /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/MCStreamer.cpp:1014:1
#19 0x000055bc2efeba81 (anonymous namespace)::AsmParser::Run(bool, bool) /workspace/wasi-sdk/src/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:0:9
#20 0x000055bc2d9c31b2 ExecuteAssemblerImpl((anonymous namespace)::AssemblerInvocation&, clang::DiagnosticsEngine&) /workspace/wasi-sdk/src/llvm-project/clang/tools/driver/cc1as_main.cpp:579:12
#21 0x000055bc2d9c1770 ExecuteAssembler((anonymous namespace)::AssemblerInvocation&, clang::DiagnosticsEngine&) /workspace/wasi-sdk/src/llvm-project/clang/tools/driver/cc1as_main.cpp:587:8
#22 0x000055bc2d9bfa40 cc1as_main(llvm::ArrayRef<char const*>, char const*, void*) /workspace/wasi-sdk/src/llvm-project/clang/tools/driver/cc1as_main.cpp:665:45
#23 0x000055bc2d9a25b6 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /workspace/wasi-sdk/src/llvm-project/clang/tools/driver/driver.cpp:362:5
#24 0x000055bc306c5b85 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0::operator()() const /workspace/wasi-sdk/src/llvm-project/clang/lib/Driver/Job.cpp:428:34
#25 0x000055bc306c5b55 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) /workspace/wasi-sdk/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#26 0x000055bc2df450f9 llvm::function_ref<void ()>::operator()() const /workspace/wasi-sdk/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#27 0x000055bc2f37f66a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /workspace/wasi-sdk/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:427:3
#28 0x000055bc306c533b clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /workspace/wasi-sdk/src/llvm-project/clang/lib/Driver/Job.cpp:428:7
#29 0x000055bc30663f5f clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /workspace/wasi-sdk/src/llvm-project/clang/lib/Driver/Compilation.cpp:199:15
#30 0x000055bc30664167 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /workspace/wasi-sdk/src/llvm-project/clang/lib/Driver/Compilation.cpp:253:13
#31 0x000055bc3067dd28 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /workspace/wasi-sdk/src/llvm-project/clang/lib/Driver/Driver.cpp:1856:7
#32 0x000055bc2d9a1f78 clang_main(int, char**) /workspace/wasi-sdk/src/llvm-project/clang/tools/driver/driver.cpp:562:9
#33 0x000055bc2d9d4e72 main /workspace/wasi-sdk/build/llvm/tools/clang/tools/driver/clang-driver.cpp:11:35
#34 0x00007f265c839510 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#35 0x00007f265c8395c9 call_init ./csu/../csu/libc-start.c:128:20
#36 0x00007f265c8395c9 __libc_start_main ./csu/../csu/libc-start.c:368:5
#37 0x000055bc2d98eca5 _start (/workspace/wasi-sdk/build/install/opt/wasi-sdk/bin/clang+0x3cbdca5)
clang-16: error: clang integrated assembler command failed with exit code 134 (use -v to see invocation)
clang version 16.0.0 (git@gitlab.haskell.org:ghc/llvm-project.git 82c72626485a390ecf787a7fb920d24d5dcadac0)
Target: wasm32-unknown-wasi
Thread model: posix
InstalledDir: /workspace/wasi-sdk/build/install/opt/wasi-sdk/bin
clang-16: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```

The error comes from https://github.com/llvm/llvm-project/blob/main/llvm/lib/MC/WasmObjectWriter.cpp#L1676, so it's clear that the wasm assembler doesn't support v128 global definition yet. v128 globals can be defined in the wasm binary format spec, so it's a bug in clang.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWllv27j2_zTKC2FDIrX5IQ8eJ8ZMkf6naDP_eRQoipJ5Q5ECSWX59hckZWupk3ZSt8DFvUVQS1yOfmc_XLDWrBGUXgfJb0Fyc4V7c5Dq-p4qJdUHTB6uSlm9XO-k0KyiCpgD06BlgrV9CxTtlAzQNghvgvD4fxr6P6zbY_tmfWBVRQUois_R2NhwWfJFm6bEMCnAusIGr10f3AUQur9dEIfz6Zibl46CYRx4jGDuB7gWtMQ0Bfr3gQqAjaFtZ5hogJGAyLZjnAJmwBMzBxCkIeFYNGC1Mlg11ATo5gnrFkGwIsBQbdbaUoU7wEwAM85BhwUjfrY5UFBLzuWTJe8E-pqs_Gsv6HNHiaEVsFz5xr_-7_Ptdvf79re7W0CfKeltNzYggPsnqR50hwm1z1izla4eArjXigRwz_lju-qU_BclZni1P6wM4P7jLoD7v7Fu_yxt99-KGarWpOsCtI3SLA3goJFPd7fbL7dA92XLDMCg7BurdKmMFdfBmE5bluA-gPuGmUNfrolsJ5-bg2Ba91QHcA-wqAAThPcVdXIiCusDKDF5MMoxtAOdsy5CtaYV0LJXvtnOxFpLwrCVhOoF0ESxzqw95C8GkwdQ9W13Ena4Bu7fJyUbhVuAVdO3VBiL_Q05lj3jlUUttMGcB3AvO7MYwkQA94ONnCzCfRQEEIUgfA7DMEySksA6jpNNXQEnGrQN0Fa_aP_wSTFhHPB7z30-DlL4qZDaKIrbAKbO1IQJ4OaHDOBL31klBnD_l2DPtoE1AnO9ZoIEaJukmbWEaOQkWnJC8xIsYHsav2NRcaoCmD9KVgVw-5OxprH18wlUuIAaQ5SeE_rnXswQ6wDml8N6BDk4VRhbsY4g0VKekNJzIHecYtF3fw5QA5j3wgXsCnApmp8sW-TtYIQdz2CjrM7jBAQwx0KKl1b2Ggjc0gHKZmDBuvZnSuQjVS87KQx9Nn-0Hfe9XvhuTABzZ9o78JN4PIdkUFAYoG028pks-SwpBLPpS2O_qFO-ARRtFuaeDlCzGqYJyZOI1CFwpjyQfc7TIo1XnIn-edWI3neQtZbrNIC_hc-oJHVo1XWimc1p4hymJSiKzhwUxVXxwDgvWNtxaqMo9vk6gHvRGRslp8PW1oxia_xZOtLPv4e-MFQJzN-knOXOuUbKm3OUp9PeJJdvJuRs1Au_Em6cAoWZpo6OHpxyv3ZvL7qinU1vndTOm9xIRxlaR0pHwtGcMMqzmgBc2sTqSJnKK881eWzRaKKWwjzMoTzLwnASQYakVcjeFLIuWtpK9VII-lQcTjZ7OYO9tcWNcwYmmmPM2yDnWCfEs5hHa0zT-pvBY1mk-NYn-_ynoL5nli4_7rZa07Z0HLp0Oe9r7_CL7A0gUmgzjHgXhpsn-VFW9Edl-FYpZoNShEYBxgsBYpLAHxHgJaT387iP4jgfk6blfxaVKaV1XRFwHrxr2DPBXFq5CMwJ-QHhxpUeaOKU6VxDSV2F8Qyh5_OLK-eOMGsH06XEi0Gdf-eIF6Vj7rBwszncDcyidAbXqubng51-ZYAKIZxDzedQ8ySNwxnUczBntv3l450kF0K8QBuFUTyHu5nDpSXOo2-56la3n7DSRxY-9yKAeSklt37ofy8CfvgI3J8-OIk3mxMPcLZ6qTYERSUEt34JenKFkyV8g7XjcPEoiasYhvji1k5DRGW4EVIbRvStaJig7wswniLcGym5TcaVYo-OXUIirIsWMzHwm2Qu38OR5WjBcpRl4Vcs_8eym9siJB-5hXNuyxrHIRinzbxnqxR--UzrAO3IAatjBtgG6NbxNWuDO_D-xd_3M5Smia0uxwwB0ZwjDJMyPepvt4vunRNNY0KLOf9_Soz0hnyOuYsqxT8ca_kUzhIcnCZ4FKYkKfNkajIDGb-s2kU72bZYVP594PI1pWkzjJOdNUdseZ3IwSgmGjfydtDoaUJRkOfnKPIvJdaMFNoNH6Q1G2wbCqMwM_rYvSCHObcuIdWk3w7ZjlHOWY3XgZsSwLgIj-ipcpNd8hlSkBv6XhX50HhzVNAHWQ7aiaEtP1A8qif5Sj1J4gx9kojqXrgNzEI5sbveAaxl1MkIc15i8lDUwsrgf-r16r21vP3Qen_YUBwbtjf3dplyf7cftIL57bNRWK8PPnDMvG9WvFV1nIT15p9p9nLW-T6O0nnBDLPlNkaa4glH57YZxr0xXFP-MrO3tyXwK3Y_YreOHpdEMF-6JELlf3XE_ElhcFzjwM1c5Cmqk_pVkbsDFV8ATWV-1APMX59oB8yW6d83dDuMPhbMl5TKhJ3TJocrIUefm-35W_HEUZr9U_F8kKV-XTYfZHnH9HwL462S5mRIHWbWhoZN1u8V52Btv1CoMEHznY_Z8QMK06yqYP4aAzeT59HcTnJ-y-TGQb9OqO-uLRdivJlWllGepDOvRYtaH0d1NkjwWOsfOXABanvh2n1W9yau7h1XmmhRtlcxzSCwsL7jdG5IIscvvr56sB2rGQ4XotHEd-PFruwmiUJQFJyVNoJjZQpbuzmBuW1aovuvN3-HzeVzk1ySzuJZCjudNYwfJRvgpjDBzPI7_tESXznibm84cjEajnuty1MBT3TGyTkmzhJHi6oCZXNt5ZTgBHiqw8HDRQ5U_dkEKSuCk9PphNdiZI37dKLuzRgwYWij3KEwPq6_ARkcr8aM08qfy9NnZoNnRUGEYou41xSsHoGRQFMK2GTNPv0qeKRKMylAlK7DtTtjaZgJ4rBhhuNyfcD6gXK-lsoGgOawdI91wwzIIclgCtM4TzDahJTUWZ7hrC43MKxgXCUVwRUm43HM_XDvYAv8xYNVLx6EfBIrK7RhiDvFAK2sKLcD_emD6_rDS5pWN0xd5LD7KyUIaaj9rU67GaDVVgDAnQmAhgpbEzPRnD_Qz7UNMysg5KQfl9zqoeuNXr9xg-P-QL0RWDVTDWol239-KaHk0gZSHwW_d3saojt_UWIHtPSXPzQgnGIFzAEbd6fBKmxiipWkWgQwM0D7UtfdVgH-FguoaG3d3drXCzXraZ8GBAtQUj-GVoCJkX7JBFYvoJaqxQbojpI5Jn9ngwnvJOur6hpVG7TBV_Q6SvMwRFGYRleH6zgOE4zDDCZJmWGa1XQTJ3GYVBmFsIyiK3YNQ4hCBPNoE2VxtKYxTqI4SbMNogRFWRCHtMWMr60IrRdcuese12mUZeiK45JyfbxlpK6dEsq-0UEccqaNHqcZZji9PiM9a2zfEN5Vr_j1---lOKz_DgAA___Z2ZAU">