https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106510
Aldy Hernandez <aldyh at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-08-02 Status|UNCONFIRMED |NEW CC| |amacleod at redhat dot com Ever confirmed|0 |1 --- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- BTW, (In reply to David Binderman from comment #1) > Reduced C code seems to be: > > void ine_ok() { > float y, x; > if (x < y || x > y || y) > abort(); > } > > Same problem exists on native x86_64, so I will have a go at finding a git > range. BTW, test exhibits undefined behavior, though putting x and y as arguments also ICEs. GORI wants all the relational operators defined, and is asserting so. What's missing is the LGBT operator ;-). diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc index 4fbd96a7479..1725c73e39c 100644 --- a/gcc/range-op-float.cc +++ b/gcc/range-op-float.cc @@ -747,6 +747,7 @@ floating_op_table::floating_op_table () set (UNGE_EXPR, fop_relop_unknown); set (UNGT_EXPR, fop_relop_unknown); set (UNEQ_EXPR, fop_relop_unknown); + set (LTGT_EXPR, fop_relop_unknown); set (ORDERED_EXPR, fop_ordered); set (UNORDERED_EXPR, fop_unordered); } I won't be able to get to this today. If someone could test and push, it'd be great. Otherwise, I'll get to it tomorrow.