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

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 20 Apr 2018, krebbel at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85478
> 
> --- Comment #4 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
> Indeed it does not appear to fail with a cross from x86. I've checked with
> r259518 on s390x as well as on x86. With an x86 cross no tree dump is 
> generated
> after 012t.ompexp and the generated assembler file does not contain any code.

I do see generated code for the explicitely instantiated operator.

sth like

void foo(ab<float> *a, ab<long double> *b){ c::f<ab<float> *, ab<long 
double> *> (a,b); }
void bar(ab<float> x) { ab<__float128> a(x); }

should instantiate both functions below explicitely but __float128
(taken from the demangling) doesn't do it and using 'long double'
ends up with a different mangling (and code).

That said, cross and native shouldn't differ and tracking down the
reason would be interesting.

Reply via email to