aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/fortran/intrinsic.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/fortran/intrinsic.c')
-rw-r--r--gcc-4.8/gcc/fortran/intrinsic.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc-4.8/gcc/fortran/intrinsic.c b/gcc-4.8/gcc/fortran/intrinsic.c
index c571533ef..7d78419a7 100644
--- a/gcc-4.8/gcc/fortran/intrinsic.c
+++ b/gcc-4.8/gcc/fortran/intrinsic.c
@@ -4229,13 +4229,16 @@ gfc_intrinsic_sub_interface (gfc_code *c, int error_flag)
c->resolved_sym->attr.elemental = isym->elemental;
}
- if (gfc_pure (NULL) && !isym->pure)
+ if (!isym->pure && gfc_pure (NULL))
{
gfc_error ("Subroutine call to intrinsic '%s' at %L is not PURE", name,
&c->loc);
return MATCH_ERROR;
}
+ if (!isym->pure)
+ gfc_unset_implicit_pure (NULL);
+
c->resolved_sym->attr.noreturn = isym->noreturn;
return MATCH_YES;