integrate.c (copy_decl_for_inlining): Clear TREE_ADDRESSABLE on copied LABEL_DECLs.

* integrate.c (copy_decl_for_inlining): Clear TREE_ADDRESSABLE on
	copied LABEL_DECLs.

From-SVN: r31173
This commit is contained in:
Mark Mitchell 2000-01-03 03:33:09 +00:00 committed by Mark Mitchell
parent 9d81fc2781
commit a71811fe38
3 changed files with 37 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2000-01-02 Mark Mitchell <mark@codesourcery.com>
* integrate.c (copy_decl_for_inlining): Clear TREE_ADDRESSABLE on
copied LABEL_DECLs.
Mon Jan 3 02:54:40 2000 Hans-Peter Nilsson <hp@bitrange.com>
* config/i386/i386.c (ix86_expand_unary_operator): Function

View File

@ -1,5 +1,5 @@
/* Procedure integration for GNU CC.
Copyright (C) 1988, 91, 93-98, 1999 Free Software Foundation, Inc.
Copyright (C) 1988, 91, 93-98, 1999, 2000 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GNU CC.
@ -319,6 +319,12 @@ copy_decl_for_inlining (decl, from_fn, to_fn)
copy = copy_node (decl);
if (DECL_LANG_SPECIFIC (copy))
copy_lang_decl (copy);
/* TREE_ADDRESSABLE isn't used to indicate that a label's
address has been taken; it's for internal bookkeeping in
expand_goto_internal. */
if (TREE_CODE (copy) == LABEL_DECL)
TREE_ADDRESSABLE (copy) = 0;
}
/* Set the DECL_ABSTRACT_ORIGIN so the debugging routines know what

View File

@ -0,0 +1,25 @@
// Build don't link:
// Origin: Mark Mitchell <mark@codesourcery.com>
// Special g++ Options: -O2
inline void f ()
{
return;
}
inline void g ();
void (*gp)() = &g;
inline void g ()
{
f ();
}
extern int array_size;
void h ()
{
int lookup_array[array_size];
g ();
}