https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80304
--- Comment #6 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- The *.original dump shows ANNOTATE_EXPRs: if (ANNOTATE_EXPR <count.3 <= 0, ivdep>) goto L.3; i.0 = 0; count.2 = 2; while (1) { if (ANNOTATE_EXPR <count.2 <= 0, ivdep>) goto L.2; These were added in r204023, three years ago, so this is not a recent change. gcc 6 does not show this behavior, so it is very likely that a recent change made this a bug (or exposed a latent bug). Hmm... changing INTENT(IN) to VALUE makes the bug go away. Something to do with inlining functions which pass index variables of DO CONCURRENT by reference?