summaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 9794446d169..2c71ae4c2d1 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -173,26 +173,20 @@ resolve_formal_arglist (gfc_symbol * proc)
if (sym->attr.flavor == FL_UNKNOWN)
gfc_add_flavor (&sym->attr, FL_VARIABLE, sym->name, &sym->declared_at);
- if (gfc_pure (proc))
+ if (gfc_pure (proc) && !sym->attr.pointer
+ && sym->attr.flavor != FL_PROCEDURE)
{
- if (proc->attr.function && !sym->attr.pointer
- && sym->attr.flavor != FL_PROCEDURE
- && sym->attr.intent != INTENT_IN)
-
+ if (proc->attr.function && sym->attr.intent != INTENT_IN)
gfc_error ("Argument '%s' of pure function '%s' at %L must be "
"INTENT(IN)", sym->name, proc->name,
&sym->declared_at);
- if (proc->attr.subroutine && !sym->attr.pointer
- && sym->attr.intent == INTENT_UNKNOWN)
-
- gfc_error
- ("Argument '%s' of pure subroutine '%s' at %L must have "
- "its INTENT specified", sym->name, proc->name,
- &sym->declared_at);
+ if (proc->attr.subroutine && sym->attr.intent == INTENT_UNKNOWN)
+ gfc_error ("Argument '%s' of pure subroutine '%s' at %L must "
+ "have its INTENT specified", sym->name, proc->name,
+ &sym->declared_at);
}
-
if (gfc_elemental (proc))
{
if (sym->as != NULL)