diff options
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 2a964f7..3e1c005 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -4241,7 +4241,16 @@ resolve_code (gfc_code * code, gfc_namespace * ns) break; if (gfc_extend_assign (code, ns) == SUCCESS) - goto call; + { + if (gfc_pure (NULL) && !gfc_pure (code->symtree->n.sym)) + { + gfc_error ("Subroutine '%s' called instead of assignment at " + "%L must be PURE", code->symtree->n.sym->name, + &code->loc); + break; + } + goto call; + } if (gfc_pure (NULL)) { |