https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98601
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- For some reason we have (insn 5 9 12 2 (set (mem (reg/v/f:DI 0 x0 [orig:92 b ] [92]) [0 *b_2(D)+0 A8]) (asm_operands ("") ("=Q") 0 [] [] [] t.c:3)) "t.c":3:3 -1 (expr_list:REG_DEAD (reg/v/f:DI 0 x0 [orig:92 b ] [92]) (nil))) on x86_64 we get (with a "=m" constraint): (insn 6 3 12 2 (parallel [ (set (mem (reg:DI 5 di [83]) [0 *b_2(D)+0 A8]) (asm_operands ("") ("=m") 0 [] [] [] t.c:2)) (clobber (reg:CC 17 flags)) ]) "t.c":2:3 -1 (expr_list:REG_DEAD (reg:DI 5 di [83]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) I suppose we could special-case the VOIDmode/unknown-size and make it possibly trapping (conservatively so). I'm sure rejecting the code will break existing code. That said, I can't reproduce on x86_64. Target independent testcase (still ICEs on aarch64): void a(void *b) { asm("" : "=m"(*b)); }