https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103926
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|ice-on-valid-code |ice-on-invalid-code
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The constraint is not documented even because it looks like an internal only
one:
;; Lq/stq validates the address for load/store quad
(define_memory_constraint "wQ"
"@internal Memory operand suitable for the load/store quad instructions."
(match_operand 0 "quad_memory_operand"))
Note your inline-asm is broken but GCC should not be crashing.
I think the following will work:
__int128 f(void *ptr)
{
__int128 v;
asm volatile("lq %0, 0(%1)" : "=&r" (v) : "wQ" (*(__int128 *)ptr));
return v;
}
But there still some other stuff that you need to do.
The constraint is failing because you don't have a memory passed to the
inline-asm only the register and it is the wrong size, it is a 64bit rather
than 128bit.