https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82976
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|fortran |middle-end --- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- match.pd looks like it has a type bug: /* Simplify pointer equality compares using PTA. */ (for neeq (ne eq) (simplify (neeq @0 @1) (if (POINTER_TYPE_P (TREE_TYPE (@0)) && ptrs_compare_unequal (@0, @1)) { neeq == EQ_EXPR ? boolean_false_node : boolean_true_node; }))) It assumes all types of EQ_EXPR/NE_EXPR will be boolean_type_node which is not true. It should be using constant_boolean_node (neeq != EQ_EXPR, type); .