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