https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127326
--- Comment #10 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #7)
> Even with the patch, compiler still errors out with slightly changed
> testcase:
>
> --cut here--
> unsigned long long foo (void)
> {
> union { _Decimal128 d; unsigned long long u[2]; } u;
> u.d = 1.0DL;
> __asm ("" : "+g" (u.d));
> return u.u[1] + u.u[2];
> }
> --cut here--
>
> $ gcc -O2 -m32 inout.c
> inout.c: In function ‘test’:
> inout.c:5:3: error: inconsistent operand constraints in an ‘asm’
> 5 | __asm ("" : "+g" (u.d));
> | ^~~~~
This is with the patch from PR124209 applied, where patched compiler is still
not able to resolve:
(insn 9 2 10 2 (parallel [
(set (mem/c:TD (plus:SI (reg/f:SI 19 frame)
(const_int -16 [0xfffffffffffffff0])) [1 u+0 S16 A128])
(asm_operands:TD ("") ("=g") 0 [
(const_double:TD 1.0 [N/A])
]
[
(asm_input:TD ("0") asmprop.c:6)
]
[] asmprop.c:6))
(clobber (reg:CC 17 flags))
]) "asmprop.c":6:3 -1
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))