Question: what happens if you mix __float128 and __ibm128 in an arithmetic or conditional expression?
__float128 a; __ibm128 b; int x; /* ... */ a + b; x ? a : b; (And likewise if one or both are the corresponding complex types.) As I suggested in <https://gcc.gnu.org/ml/gcc/2014-06/msg00033.html> I think this would best be rejected for both C and C++ (with testcases). That accords with TS 18661-3 (just published) making floating-point conversions undefined where neither type's set of values is a subset of the other's. The invalid_binary_op target hook should be usable to cover the case where a binary operation would cause implicit conversions, but I don't see an existing hook that would deal with ? : expressions. -- Joseph S. Myers jos...@codesourcery.com