mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-25 16:01:18 +08:00
com.c (ffecom_finish_symbol_transform_): Don't transform statement (nested) functions...
Sat May 23 06:32:52 1998 Craig Burley <burley@gnu.org> * com.c (ffecom_finish_symbol_transform_): Don't transform statement (nested) functions, to avoid gcc compiling them and thus producing linker errors if they refer to undefined exteral functions. But warn if they're unused and -Wunused. From-SVN: r19970
This commit is contained in:
parent
e125ac2661
commit
6829256fb4
@ -1,3 +1,10 @@
|
|||||||
|
Sat May 23 06:32:52 1998 Craig Burley <burley@gnu.org>
|
||||||
|
|
||||||
|
* com.c (ffecom_finish_symbol_transform_): Don't transform
|
||||||
|
statement (nested) functions, to avoid gcc compiling them
|
||||||
|
and thus producing linker errors if they refer to undefined
|
||||||
|
exteral functions. But warn if they're unused and -Wunused.
|
||||||
|
|
||||||
Tue May 19 14:52:41 1998 Craig Burley <burley@gnu.org>
|
Tue May 19 14:52:41 1998 Craig Burley <burley@gnu.org>
|
||||||
|
|
||||||
* bad.def (FFEBAD_OPEN_UNSUPPORTED, FFEBAD_INQUIRE_UNSUPPORTED,
|
* bad.def (FFEBAD_OPEN_UNSUPPORTED, FFEBAD_INQUIRE_UNSUPPORTED,
|
||||||
|
45
gcc/f/com.c
45
gcc/f/com.c
@ -6678,15 +6678,42 @@ ffecom_finish_symbol_transform_ (ffesymbol s)
|
|||||||
VAR_DECLs for COMMON variables when we transform them for real
|
VAR_DECLs for COMMON variables when we transform them for real
|
||||||
use, and therefore we do all the VAR_DECL creating here. */
|
use, and therefore we do all the VAR_DECL creating here. */
|
||||||
|
|
||||||
if ((ffesymbol_hook (s).decl_tree == NULL_TREE)
|
if (ffesymbol_hook (s).decl_tree == NULL_TREE)
|
||||||
&& ((ffesymbol_kind (s) != FFEINFO_kindNONE)
|
{
|
||||||
|| ((ffesymbol_where (s) != FFEINFO_whereNONE)
|
if (ffesymbol_where (s) == FFEINFO_whereCONSTANT
|
||||||
&& (ffesymbol_where (s) != FFEINFO_whereINTRINSIC)))
|
&& (ffesymbol_kind (s) == FFEINFO_kindFUNCTION
|
||||||
&& (ffesymbol_where (s) != FFEINFO_whereDUMMY))
|
|| ffesymbol_kind (s) == FFEINFO_kindSUBROUTINE))
|
||||||
/* Not transformed, and not CHARACTER*(*), and not a dummy
|
{
|
||||||
argument, which can happen only if the entry point names
|
/* An unreferenced statement function. If this refers to
|
||||||
it "rides in on" are all invalidated for other reasons. */
|
an undeclared array, it'll look like a reference to
|
||||||
s = ffecom_sym_transform_ (s);
|
an external function that might not exist. Even if it
|
||||||
|
does refer to an non-existent function, it seems silly
|
||||||
|
to force a linker error when the function won't actually
|
||||||
|
be called. But before the 1998-05-15 change to egcs/gcc
|
||||||
|
toplev.c by Mark Mitchell, to fix other problems, this
|
||||||
|
didn't actually happen, since gcc would defer nested
|
||||||
|
functions to be compiled later only if needed. With that
|
||||||
|
change, it makes sense to simply avoid telling the back
|
||||||
|
end about the statement (nested) function at all. But
|
||||||
|
if -Wunused is specified, might as well warn about it. */
|
||||||
|
|
||||||
|
if (warn_unused)
|
||||||
|
{
|
||||||
|
ffebad_start (FFEBAD_SFUNC_UNUSED);
|
||||||
|
ffebad_string (ffesymbol_text (s));
|
||||||
|
ffebad_here (0, ffesymbol_where_line (s), ffesymbol_where_column (s));
|
||||||
|
ffebad_finish ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ffesymbol_kind (s) != FFEINFO_kindNONE
|
||||||
|
|| (ffesymbol_where (s) != FFEINFO_whereNONE
|
||||||
|
&& ffesymbol_where (s) != FFEINFO_whereINTRINSIC
|
||||||
|
&& ffesymbol_where (s) != FFEINFO_whereDUMMY))
|
||||||
|
/* Not transformed, and not CHARACTER*(*), and not a dummy
|
||||||
|
argument, which can happen only if the entry point names
|
||||||
|
it "rides in on" are all invalidated for other reasons. */
|
||||||
|
s = ffecom_sym_transform_ (s);
|
||||||
|
}
|
||||||
|
|
||||||
if ((ffesymbol_where (s) == FFEINFO_whereCOMMON)
|
if ((ffesymbol_where (s) == FFEINFO_whereCOMMON)
|
||||||
&& (ffesymbol_hook (s).decl_tree != error_mark_node))
|
&& (ffesymbol_hook (s).decl_tree != error_mark_node))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user