On Mon, 28 Sep 2020, Michael Meissner via Gcc wrote:

> > I'm not sure which patch in the series is supposed to be implementing 
> > that, but C requires that long double and _Float128 are distinct types (so 
> > you can use _Generic to choose between them, for example) even if they 
> > have the same ABI.
> 
> Hmmm, but others said that it would complicate things if __float128 were
> different than long double.  I've implemented it both ways (I would have to 
> dig
> up the patches to have separate types).
> 
> And doing so might break all of the glibc efforts to provide dual symbols.
> 
> I could obviously use __float128 to be the same as long double, and _Float128
> being a unique type if long double is IEEE.  And since C++ doesn't have
> _Float128, it would 'work' without introducing a new mangling name.

My comment is specifically about _Float128, in C; it doesn't say anything 
about what should happen for C++ (though it would be nice to resolve the 
ICEs that occur when _FloatN / _FloatNx types leak into C++ code via 
built-in functions, bug 85518).  Maybe it makes sense for the type (or at 
least the type used by the built-in functions and __float128, since 
_Float128 itself can't be accessed directly in C++) to be the same in the 
C++ case.

The existing code in build_common_tree_nodes that creates all the _FloatN 
/ _FloatNx type nodes always creates a new node with make_node.  And since 
I didn't spot anything in your patch series that changes that, I couldn't 
see how that patch series actually does make them the same type.

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to