https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83254
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2017-12-02 CC| |kargl at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from kargl at gcc dot gnu.org --- (In reply to Ben Woodard from comment #0) > > The original report targeted 7.1 and the problem appears to persist all the > way to the current trunk. > How old is your current trunk? Janne committed a patch that may have fixed this problem on 11/08/17. You need revision 254526 or newer. Compiling a sightly modified version of you code and using -fdump-tree-original with 7=branch I see assert_true (logical(kind=4) & restrict var1) { if (!*var1) { _gfortran_abort (); } L.1:; } ... { logical(kind=1) D.3498; D.3498 = jvar != 0B && jvar == kvar; assert_true (&D.3498); } That is obviously broken as the types are mismatched. With trunk, I see assert_true (logical(kind=4) & restrict var1) { if (!*var1) { _gfortran_abort (); } L.1:; } { logical(kind=4) D.3560; D.3560 = jvar != 0B && jvar == kvar; assert_true (&D.3560); }