<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87897>87897</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash compiling RISC-V Vector code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bscarlet
</td>
</tr>
</table>
<pre>
```
$ clang --version
clang version 19.0.0git (https://github.com/llvm/llvm-project.git fa8a7266724f26d27820f8876b504d7a4f166948)
...
```
[Full stack dump](https://github.com/llvm/llvm-project/files/14895116/stack-dump.txt). Top of stack dump:
```
#0 0x000055c11459608b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/bscarlet/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:727:3
#1 0x000055c114593eb4 llvm::sys::RunSignalHandlers() /usr/local/google/home/bscarlet/src/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#2 0x000055c114500638 HandleCrash /usr/local/google/home/bscarlet/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#3 0x000055c114500638 CrashRecoverySignalHandler(int) /usr/local/google/home/bscarlet/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:62
#4 0x00007fab6bc5a510 (/lib/x86_64-linux-gnu/libc.so.6+0x3c510)
#5 0x000055c113c1ab0f llvm::MCRegisterInfo::DiffListIterator::operator++() /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:216:24
#6 0x000055c113c1ab0f llvm::MCSuperRegIterator::operator++() /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:588:24
#7 0x000055c113c1ab0f llvm::MCSuperRegIterator::MCSuperRegIterator(llvm::MCRegister, llvm::MCRegisterInfo const*, bool) /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:581:10
#8 0x000055c113c1ab0f llvm::MCRegisterInfo::superregs(llvm::MCRegister) const /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:793:20
#9 0x000055c113c1ab0f llvm::MCRegisterInfo::isSuperRegister(llvm::MCRegister, llvm::MCRegister) const /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:599:32
#10 0x000055c113c1ab0f llvm::MCRegisterInfo::isSubRegister(llvm::MCRegister, llvm::MCRegister) const /usr/local/google/home/bscarlet/src/llvm-project/llvm/include/llvm/MC/MCRegisterInfo.h:457:27
```
Source, (manually simplified from code in google highway, also in attached tarball, along with bugpoint output):
```c++
#pragma clang riscv intrinsic vector
unsigned long out_of_line_vsetvl() { return __builtin_rvv_vsetvlimax(2, 7); }
template <class Unused>
__rvv_float32mf2_t function1(__rvv_float32mf2_t f0_vf0) {
const unsigned f1_vl0 = __builtin_rvv_vsetvlimax(2, 7);
const __rvv_float32mf2_t f1_vf1 = __riscv_vfsgnjx_vv_f32mf2(f0_vf0, f0_vf0, f1_vl0);
const __rvv_uint32mf2_t f1_vu0 = __riscv_vreinterpret_v_f32mf2_u32mf2(f1_vf1);
const __rvv_uint32mf2_t f1_vu1 = __riscv_vmv_v_x_u32mf2(0, f1_vl0);
const __rvv_float32mf2_t f1_vf2 = __riscv_vreinterpret_v_u32mf2_f32mf2(f1_vu1);
const __rvv_bool64_t f1_vb0 = __riscv_vmflt_vv_f32mf2_b64(f1_vf2, f0_vf0, f1_vl0);
const __rvv_uint32mf2_t f1_vu2 = __riscv_vmv_v_x_u32mf2(1, f1_vl0);
const __rvv_uint32mf2_t f1_vu3 = __riscv_vmv_v_x_u32mf2(2, f1_vl0);
const __rvv_uint32mf2_t f1_vu4 = __riscv_vmerge_vvm_u32mf2(f1_vu2, f1_vu3, f1_vb0, f1_vl0);
const __rvv_uint32mf2_t f1_vu5 = __riscv_vadd_vv_u32mf2(f1_vu0, f1_vu4, f1_vl0);
const __rvv_float32mf2_t f1_vf3 = __riscv_vreinterpret_v_u32mf2_f32mf2(f1_vu5);
const __rvv_float32mf2_t f1_vf4 = __riscv_vfmv_v_f_f32mf2(3, f1_vl0);
const __rvv_uint32mf2_t f1_vu6 = __riscv_vmv_v_x_u32mf2(0x7f800000, f1_vl0);
const __rvv_float32mf2_t f1_vf5 = __riscv_vreinterpret_v_u32mf2_f32mf2(f1_vu6);
const __rvv_uint32mf2_t f1_vu7 = __riscv_vreinterpret_v_f32mf2_u32mf2(f1_vf3);
const __rvv_uint32mf2_t f1_vu8 = __riscv_vadd_vv_u32mf2(f1_vu7, f1_vu7, f1_vl0);
const __rvv_uint32mf2_t f1_vu9 = __riscv_vsrl_vx_u32mf2(f1_vu8, 24, f1_vl0);
const __rvv_int32mf2_t f1_vi0 = __riscv_vreinterpret_v_u32mf2_i32mf2(f1_vu9);
const unsigned vl1 = out_of_line_vsetvl();
const __rvv_bool64_t f1_vb1 = __riscv_vmslt_vx_i32mf2_b64(f1_vi0, 0xff, vl1);
const __rvv_float32mf2_t f1_vf6 = __riscv_vmerge_vvm_f32mf2(f1_vf5, f1_vf4, f1_vb0, f1_vl0);
const __rvv_float32mf2_t f1_vf7 = __riscv_vmerge_vvm_f32mf2(f1_vf6, f1_vf3, f1_vb1, f1_vl0);
return f1_vf7;
}
void function0(const unsigned num, float* buf) {
const unsigned f0_vl0 = __builtin_rvv_vsetvlimax(2, 7);
const __rvv_float32mf2_t f0_vf0 = __riscv_vfmv_v_f_f32mf2(*buf, f0_vl0);
const __rvv_float32mf2_t f0_vf1 = __riscv_vle32_v_f32mf2(buf, f0_vl0);
const __rvv_float32mf2_t f0_vf2 = __riscv_vfmv_v_f_f32mf2(*buf, f0_vl0);
const __rvv_bool64_t f0_vb0 = __riscv_vmfeq_vv_f32mf2_b64(f0_vf1, f0_vf0, f0_vl0);
const __rvv_bool64_t f0_vb1 = __riscv_vmnot_m_b64(f0_vb0, f0_vl0);
const int f0_i0 = __riscv_vfirst_m_b64(f0_vb1, f0_vl0);
const bool f0_b0 = f0_i0 < 0;
if (__builtin_expect(f0_b0, 0)) function1<void>(f0_vf2);
out_of_line_vsetvl();
}
```
[llvm-rvv-crash-2024-04-06.tar.gz](https://github.com/llvm/llvm-project/files/14894673/llvm-rvv-crash-2024-04-06.tar.gz)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWVtv67gR_jX0C2GDInV98IPj1OgBukCR7O6rQMmkzC1FuiSl4_TXF9TFF8VxYvecbgsYtkJS33zzzXA4Uqi1olKMLUH0BKLnGW3cTptlYUtqJHOzQm_fliBGwwc9A7QCOISlpKqC83nLjBVa9RP94DAEg2yBFqgSDgKc7pzbW0BWAG8A3lTC7ZpiUeoa4I2U7fgz3xv9Byvdwt_FaUoTHMcJDjmOtzhJMeJpmsRFhMJtQkMexHEWpgBnvfnFYjEQnPCNnjaNlNA6Wv4Dbpt6D6LnuzkBvOFCMgvwJgjTLAqCGOBNhzn3mAt3cABnC_ir3kPNz62R1VVeEGCCIDoghFAUlUEQRlmM0gJ21skKkJV9s_3F341Q7tVD_mpoyQBOT4sM_Z5r6wyjNcAxwGsolKcCAd401ng_dEml91HrSjKANztd-58xzN4RU753eJRBFABvXpv9Xhs__JsSBz8gKkWlXQhVArJKcALIipxcCyauEVaE11x7aVSP9FeqtpIZC3D6M9mPtMu9j0yAIkBW-Cwk-JI3QjFJYc9tbajd_TRiHfoLK3XLzNtaK8cObmCZEEBW0Ykjucbx4v4LSQFOf3JK3OBOMgTIKsYn9uHAPuG0iIsyolGAYBf1AfeQxnkczqVQzWFeqaafKBdWL2KAn9CBlFGAjhvfY0bnipAyoAXiZ9n2y_qFVcI6Zr4prvuxZ8H534R13xwz1GnTj-r98Bd-6j4_NBeFKmWzZaeBX9bd1zm5xc4nZBD77_DkYPyZg6_NnpkXVv0vuhOl6cSd5DF3royfl8KTaV8GPwo_LLWyDuCVX1RoLf8kTYKu_pw0Se_PYevVMKyyH8qQ9d7-9_1LMjKprNn9_gk7xntw565g_4neR1nmax8eWyYSoMe8L_7_fA8j3wrg5GrX86ob4xuYta_4NVUNlfINWlHvpeCCbSE3uoal3jIoFOypwp2odt_pm7-LSqv9DHWOlju2hY6agkrZz2lVwe_C7WDRVHstlIO6cfvGn33v27ByKIpjiPaGVjUdelsjbNn6TsoIZUUJW1b6atOv7b4b1fXOW9hZ1Y3LNc-lUCxvLXOtHItt8gQNc41RMM-LRkgnVG7adlglanoAOMWef9LRfIIgeT435Fi9l9QxCMi6lNRa-JtqLNsC8pd-Qd7hcampI7jmOHeQN6p0QqsA4PTaNMpbjgZ6ww7ts-XoFQ_yViIIyPNXeZ9zhgPcNdtB3vJgAO5kzltuK_XHIfdLu2UApyPFNTy76jidW7u00wh1YaZBl2YME8oxszfM5aOpvDla7IjdgT5xom7zNj-c8L5E-b00-BbnHvxMpY7Hx_D-eIvDAbqYyFFz6U6a50Ucjirg_1B3fFuZ4CFQchsUPwQaTkCZqVjetvVlWjRH8IaMV8Vj0kSXBul260Nwae2I3ISP5RC5O4eie-AnovEuFPyESB5SJv5kOx0SnvoT9MF9Fd2tSXwBf5N7cnehIXcok34hZ5JjziQPqZ9d2rBG5u1hYiP1yPijnDyHn6CLm4V4EF9c2MqucT-eTq3si-9Hx-6XyuG0fltfDg8Dj7NyKLqMQwfO_W8rb9Tb92k3zepjgbnINR6NovLw0wJz22DyNYPx0eCpon1Yl4cGpsc_HfWXfUqrxfbYeCCA00nMVFN3-J4xwCtYNPyyA3nXgqDHWpBbIenOtE_KF8Crjtt6YHAP9iSnJCM4P-tqHsbFP4zzaQ-gay0B--f7lgD1jdFFS3CXlelOU9rl9Rl68Qmm7-Q5yqdlhAtjJ0DBbSBPy08Pfo-Ya4jOlgoOu7Z5TDl22HdPQml3Y1cLPDbOztpssvbp71vyQS98Yf7TOnXaS5O31-M77O6hzLTtvDTU7uYY4XCOwjmKF46aRfWvH_BSO4wTMq64ZWl88TbbLsk2IxmdsWWQBDgMMSLpbLdMOCmLNE14GUSUxBiXaBvTIC0RxhGOi5lYelQUohhjf88iLIoMoziMOArSIAtBiFhNhVx4MgttqpmwtmHLNEmzZCZpwaTt_mmBsWLfYTcJMAbR88wsOweKprIgRFJYZ08oTjjJlv2L3FLXeyGFquDLt9f1_Hf4e_eM1z18zhojl3eL2dHwanY0_x0AAP__h1Tmsg">