mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 05:20:25 +08:00
re PR fortran/20363 (interface body has incorrect scope)
2005-08-25 Erik Edelmann <eedelman@acclab.helsinki.fi> fortran/ PR fortran/20363 * symbol.c (find_special): Remove. (build_sym, add_init_expr, attr_decl1): Remove calls to find_special in favor of calls to gfc_get_symbol. testsuite/ PR fortran/20363 * gfortran.dg/named_interface.f90: New. From-SVN: r103486
This commit is contained in:
parent
a5e668d53d
commit
9e35b3869c
@ -1,3 +1,10 @@
|
||||
2005-08-25 Erik Edelmann <eedelman@acclab.helsinki.fi>
|
||||
|
||||
PR fortran/20363
|
||||
* symbol.c (find_special): Remove.
|
||||
(build_sym, add_init_expr, attr_decl1): Remove calls to
|
||||
find_special in favor of calls to gfc_get_symbol.
|
||||
|
||||
2005-08-24 Thomas Koenig <Thomas.Koenig@online.de>
|
||||
|
||||
PR fortran/17758
|
||||
|
@ -530,29 +530,34 @@ syntax:
|
||||
}
|
||||
|
||||
|
||||
/* Special subroutine for finding a symbol. If we're compiling a
|
||||
function or subroutine and the parent compilation unit is an
|
||||
interface, then check to see if the name we've been given is the
|
||||
name of the interface (located in another namespace). If so,
|
||||
return that symbol. If not, use gfc_get_symbol(). */
|
||||
/* Special subroutine for finding a symbol. Check if the name is found
|
||||
in the current name space. If not, and we're compiling a function or
|
||||
subroutine and the parent compilation unit is an interface, then check
|
||||
to see if the name we've been given is the name of the interface
|
||||
(located in another namespace). */
|
||||
|
||||
static int
|
||||
find_special (const char *name, gfc_symbol ** result)
|
||||
{
|
||||
gfc_state_data *s;
|
||||
int i;
|
||||
|
||||
i = gfc_get_symbol (name, NULL, result);
|
||||
if (i==0)
|
||||
goto end;
|
||||
|
||||
if (gfc_current_state () != COMP_SUBROUTINE
|
||||
&& gfc_current_state () != COMP_FUNCTION)
|
||||
goto normal;
|
||||
goto end;
|
||||
|
||||
s = gfc_state_stack->previous;
|
||||
if (s == NULL)
|
||||
goto normal;
|
||||
goto end;
|
||||
|
||||
if (s->state != COMP_INTERFACE)
|
||||
goto normal;
|
||||
goto end;
|
||||
if (s->sym == NULL)
|
||||
goto normal; /* Nameless interface */
|
||||
goto end; /* Nameless interface */
|
||||
|
||||
if (strcmp (name, s->sym->name) == 0)
|
||||
{
|
||||
@ -560,8 +565,8 @@ find_special (const char *name, gfc_symbol ** result)
|
||||
return 0;
|
||||
}
|
||||
|
||||
normal:
|
||||
return gfc_get_symbol (name, NULL, result);
|
||||
end:
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
@ -616,7 +621,8 @@ build_sym (const char *name, gfc_charlen * cl,
|
||||
symbol_attribute attr;
|
||||
gfc_symbol *sym;
|
||||
|
||||
if (find_special (name, &sym))
|
||||
/* if (find_special (name, &sym)) */
|
||||
if (gfc_get_symbol (name, NULL, &sym))
|
||||
return FAILURE;
|
||||
|
||||
/* Start updating the symbol table. Add basic type attribute
|
||||
|
@ -1,3 +1,8 @@
|
||||
2005-08-25 Erik Edelmann <eedelman@acclab.helsinki.fi>
|
||||
|
||||
PR fortran/20363
|
||||
* gfortran.dg/named_interface.f90: New.
|
||||
|
||||
2005-08-26 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* gcc.c-torture/execute/frame-address.c: New test.
|
||||
|
9
gcc/testsuite/gfortran.dg/named_interface.f90
Normal file
9
gcc/testsuite/gfortran.dg/named_interface.f90
Normal file
@ -0,0 +1,9 @@
|
||||
! { dg-do compile }
|
||||
! PR 20363
|
||||
module snafu
|
||||
interface foo
|
||||
subroutine really_snafu (foo)
|
||||
integer, intent (inout) :: foo
|
||||
end subroutine really_snafu
|
||||
end interface foo
|
||||
end module snafu
|
Loading…
x
Reference in New Issue
Block a user