On Tue, Jul 30, 2019 at 09:35:04AM +0200, Richard Biener wrote:
> Looks OK to me but I'd like Joseph to chime in here.  I think for

Ok, will wait for Joseph.

> FE support it means adding actual _widening_ casts to the effective
> compute precision type (thus long double).  But once that's done
> the rest should be indeed FE independent (but I doubt D and go get
> it correct).

The FE must add casts to whatever excess_precision_type returns (if
non-NULL).  Seems all of C, D and Go do something:
c/c-typeck.c:         && (eptype = excess_precision_type (type2)) != NULL_TREE)
c/c-typeck.c:              && (eptype = excess_precision_type (type1)) != 
NULL_TREE)
c/c-typeck.c:      && (eptype = excess_precision_type (type0)) != NULL_TREE)
c/c-typeck.c:      && (eptype = excess_precision_type (type1)) != NULL_TREE)
c-family/c-lex.c:  const_type = excess_precision_type (type);
d/expr.cc:      tree eptype = excess_precision_type (type);
d/expr.cc:    tree eptype = excess_precision_type (type);
go/go-gcc.cc:        tree computed_type = excess_precision_type(type_tree);
go/go-gcc.cc:  tree computed_type = excess_precision_type(type_tree);
go/go-gcc.cc:      excess_type = excess_precision_type(TREE_TYPE(args[0]));
match.pd:                          && !excess_precision_type (newtype)))
and in the middle-end (since Tamar's changes) we only care if it returns
NULL or not.

        Jakub

Reply via email to