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.