<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126417>126417</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLP][DebugInfo] "!DIAssignID attached to unexpected instruction kind" after store => @llvm.experimental.vp.strided.store conversion
</td>
</tr>
<tr>
<th>Labels</th>
<td>
debuginfo,
llvm:SLPVectorizer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
asb
</td>
</tr>
</table>
<pre>
I'm filing this issue rather than attempting a patch directly as I'd appreciate a second opinion on who is at fault here. Looking at [the docs on debug assignment tracking](https://llvm.org/docs/AssignmentTracking.html), SLPVectorizer's use of `mergeDIAssignID` when converting the stores to the strided store intrinsic seems (to my non-expert-in-debuginfo eye!) in line with the advice. Possibly the check in `Verifier::visitDIAssignIDMetadata` is simply overzealous (it checks `isa<AllocaInst>(I) || isa<StoreInst>(I) || isa<MemIntrinsic>(I)`). If so - would there be any concerns about adding `|| isa<IntrinsicInst>(I)` and assuming any intrinsic it is attached to acts like a store?
Thanks to @mikhailramalho for noting the issue when compiling SPEC with `-g`.
This is a reduced test case:
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @main_argv() #0 {
entry:
%sar_height.i = getelementptr i8, ptr null, i64 24
store ptr %sar_height.i, ptr null, align 8
%vui.i = getelementptr i8, ptr null, i64 44
%0 = load i32, ptr %vui.i, align 4
%sar_width.i = getelementptr i8, ptr null, i64 20
%1 = load i32, ptr %sar_width.i, align 4
%i_sar_width.i = getelementptr i8, ptr null, i64 48
store i32 %1, ptr %i_sar_width.i, align 8, !DIAssignID !4
%2 = load i32, ptr %sar_height.i, align 4
store i32 %2, ptr %vui.i, align 4
ret void
}
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-b,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 21.0.0git", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, globals: !2, splitDebugInlining: false, nameTableKind: None)
!1 = !DIFile(filename: "x264.c", directory: "/home/asb/llvm-test-suite/build.clang-head-di-repro", checksumkind: CSK_MD5, checksum: "a24a70e9a69b8d18ca4f64525db2c55f")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
!4 = distinct !DIAssignID()
```
Just do `~/llvm-project/build/default/bin/opt -passes=slp-vectorizer -S < reduced.ll` to get:
```
!DIAssignID attached to unexpected instruction kind
call void @llvm.experimental.vp.strided.store.v2i32.p0.i64(<2 x i32> %1, ptr align 4 %i_sar_width.i, i64 -4, <2 x i1> splat (i1 true), i32 2), !DIAssignID !4
!4 = distinct !DIAssignID()
LLVM ERROR: Broken module found, compilation aborted!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
....
```
CC @OCHyams @SLTozer
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycWFtz4yj2_zTkhbJLQrZiP-TBsTv_f3bSM12T3t7HLoSOLNZcFECK44f97FtcJDsdz-xMV7nEj8M5B84FzIFay_cK4A4t79Fyd0N712pzR211U-n67e4RkVuJGy642mPXcou5tT1gQ10LBruWKkydA9k5z0FxRx1rcc0NMCfeMLXYq6gx7ToDjFMHmGILTKsa644rrhXWCr-2GnOLqcMN7YXDLRiY4yetD0Gtw2h571rAtWbW89dQ9XscVy9BOewMZZ4XLXeIrFrnOouKDSIPiDwIMci5NntEHrw8Ig-bSfBrkpu3TgpE1ohs8fPTl2_AnDb8BAaRW4t7C1g3GJWZBLOH3WNU8LhDZYZfW1CYaTWAcdFNgK3TBix2OvUMr6GOVMyVM1xZzrAFkBYjsnIayzestJrBsQPjZlzNgolcNRrDGyCSI7LGXGHBFeBX7tqgmdYDZzDHX7S1vBJvgchaYAfPi8rsGxjecDDeGcVm4Ja78-o_g6M1ddRbwS22XHbiDesBzAmo0H1YG3dRofXquKWo2G6E0Iw-KutQ8QmR1aNfG7rdotstjhzP3tI_Y_gM8nH0w5kHlRki6zl-bLDVeIZfdS9qb5MBXAGm6s07moFRFtNK9w7TuvY-94KX6ifd79fgDaWq9onTy5BZ6u0iHtzFJHSUtVD76FHmLBb8ELLW24SKB5RtULb52lJ1CBFGi0zyQ0u5MFRS0WrcaIOVnpIhbpmUJrKLm-n5y6dtjCMqs9keldl8VBx2GabYQN0zvw6wDjNqwQcx8Hhz4y_bOGr24LCPo6Bv3ieo2GFECMwkKjYw61CxKRfhM-MTyMkKFZucrGaqIJH27GmEnHU6wzsBoz7DLRvKxaxXB6Vf1Uxw1R9ne9VHGZRtamh8dg6a18ErlKvv1OwH5PWuMSJFhtHtPco2oJx5i-ZgRJaWmu8t8H3r5jxMtwcHAvwG7ZzBfOW3pUeqF8JjXi4wWXjptKn84A-KfpShgu8VXgUhRJZDz__GZIvFKJcFGaFpjXlBRt5R4XmiScCv6ZXXrv07tmWjdP5H012o_WFSRJb8-8_MulhdeJQXJMx_MeU7rZcuJVuMSH4-WHxvsp_8mQWXwbr027s1_E8vG3Ah63wa3u5iMlLnDK96BzYlns_i23ufyTG9Zw1Q1xuwPn-Lnf-S-3JRcYfIFpF7GhsWmzo2TWxkbAwIeoxwiM2JUqlHKIxN0ifOrBlhA4oBTz0pe5HgAAVpLvBxwuWivsDNBZ54RE5W1dQpyBmXC49n4QPh4_9juE8FKma2hqO7QnWG7z-SJXPmI9VepQ79wX2c7_jCOL1OZVfJTPDrdHmdbP-A_HGFns7VR-M9XejrZHt9Vis-Tnuigl6Z9cRZw0V3nW6vqBkqVpCPjjwNh33gbv3HtjQ2TPfKgQH1Gvt76ro05AYqEhzsmTzYdwNuAFaHjqQxUlayGgTsE7aGq8RQV8KZLmLoZEKykxGoERgleUTWUQegQseO-i1jzX5EXcwla5luOtmM-J1V9mIR9mIRdpzRju2LtjzxvZvaX8mYi9ix1E5uuHCC7cvFUQTYJ6UDrWEEfQQVNYnE1UAj-6Bop-MUQ1fJhIYuTndkAxV9QhWfgJNU8S51QbwmJOkoJUEmZLkMazxK3lkm9QBTT9iowjYM_MUh4oGN1KFRhgneHZuXZiK9SsrYy8vLSHjx_VrX7_ovOo3zhnsnccuoqWuhFVzSG9Hb9kx1LdC6ohe4usD2jFk4PceOVrXUw5nQSJC8Pp4Jo1ti58dBkB3l5kywb-qCfahjdI6D31CK-tl0F9fyytrAeaI5WRkbYbkYURV324kymiiS5mUV4WviiuaeoqWnKuqrDql7GPvH2EYZFmVYZIopeGIQmyY2UncJjG0w41RzFXU1UUlTNZKrCNvUTISRt70E4yhn6T_jxFml5YS6CZ0SYlRqOmLejCgdkx6amH0nzlTc2CfuHR1Ry5VTTpw7He1H_rZLOkZ7D_GrUlOnFlIbTTzEOQ42NZDYbBqOrnI2ZNlpSMEZUnSGC595_Cppwu3YTsMpkMNhn9qRrtgI0uTDQU08KXE8GuXt2I5ydpKzo1xa_pDWP4g8IylEg8jLYjV1SLZYTXhZjrAgt-VEX2TraWCZkxGWy2Ux0Vf52g8QPF2oEMlDJV1X-znrU1WQ-_s8ybPElVikrnsB80bQvX3PWFyqi5eymlvHFXPxCrkNFRL8U_lr2EpQte_p3lc-ePev70-bX__v-zYPd9KGi0BGJPY7o325ZCKNMC-KBzCWa4VJPs_m2d7rDJdJbn_rHJf8BLXnd6b3aYRNrxyX8C1K-ZHMk0Fy6wm_-P-cYoMfeiF2vjz3g3uhKypsWkrQbjvBXWB4VIIrrvZ-tKEi5DZWVMJXWgkY9f0ajsl1dEo-Omz3-OBNJCtvqZdJlh1JuZizZEh8adGhmMKB9tBqCYg8UFult4-ZLyBntuf-OvZQ9VzU8-CemT8GZzWfGeiMThpjsd_LQ1rc9vmX7593y8uhNBclC3qbwZqW62pV5ytGF025WJJlXRG2XDZBYbKKXKbBmCvFBdFf9UkqJBAhwXv4UTUaj9FIkSsILiYNiysZNL3NhKrzh2oZZZt_9NbhWvu6-z-jhzqj_w3-PhDdg8hDDeElylP8jn_QncOzjloLFhU7K7rZML0R4dkzRsV2LNjnQqAyw077outqzf6-WLp8cOiVv-QxBzXmyjrTM-fzNwTDVzqMCjEV2GGvXV4K50M3T49N81BBzQfCCzLvsrmv_H3JvyX4GOqw4tO78i6VU1fLPF8bzhYhOEk-9-K2E9SFJ6I87aD1GCGS8NWq8K_G7enp22f86ffff_vdJ9y90QdQOB4tuNF9-AdILyo0eIlW2jh_eOYo23x5-rR5_oRtX0nuMMU-nwx02jjv5_cvhHvu2r6aM_9fFxLiY16ERxyLyEN4QOKKib6G-NxmqG1xRdnBGcpgjrLNs6PsgOtedjH88_l8_jERt1sfxN-2__9GpfXw-emr9ul0U98V9bpY0xu4y2-LdZ6t83V5095VRVlWANVtlpNsWVC4zZbrfFECVOv1gq1u-B3JyDIj2TovlkVeztekWBJYLRYVLVZskaFFBpJyMR8fRW-CYXc5KRf57Y2gFQgbXoMJmV4g49ZDhATXFJsfHkgJWu5uzF1wWNXvrc9Mbp09z-G4E-GN-fnpC1ru0PI-nY6NRstdPLd-ZkcQgmnjwKTnAl_F-7T-Kzsjvdj6k-WmN-Lu5xMiuW64I_8NAAD__9njb9M">