https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71460

--- Comment #24 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 10 Jun 2016, ubizjak at gmail dot com wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71460
> 
> --- Comment #21 from Uroš Bizjak <ubizjak at gmail dot com> ---
> (In reply to Uroš Bizjak from comment #19)
> > Following test doesn't compile with patched compiler:
> 
> BTW: This is preexisting problem, on 64bit target we can trigger the issue 
> with
> transparent unions with:
> 
> --cut here--
> union U { __int128 x; long double y; }  __attribute__ ((transparent_union));
> 
> void foo (union U);
> 
> void test (void)
> {
>   union U t;
> 
>   foo (1.0L);
> 
>   foo ( (__int128) 1);
> }
> --cut here--
> 
> -O2:
> 
> union.c:1:7: warning: union cannot be made transparent
>  union U { __int128 x; long double y; }  __attribute__ ((transparent_union));

But __int128 and long double are not passed the same way (rdi/rsi vs. on 
the stack).

Reply via email to