Commit 25e7f439 by Jakub Jelinek Committed by Jakub Jelinek

c-lang.c (finish_file): Don't emit static inline functions if they weren't referenced.

	* c-lang.c (finish_file): Don't emit static inline functions if
	they weren't referenced.

	* gcc.c-torture/execute/20011115-1.c: New test.

From-SVN: r47082
parent 38b3baae
2001-11-16 Jakub Jelinek <jakub@redhat.com>
* c-lang.c (finish_file): Don't emit static inline functions if
they weren't referenced.
2001-11-15 Stan Shebs <shebs@apple.com>
* expr.c (expand_expr, case COMPONENT_REF): Fix variable ref.
......
......@@ -271,13 +271,38 @@ void
finish_file ()
{
unsigned int i;
bool reconsider;
for (i = 0; i < VARRAY_ACTIVE_SIZE (deferred_fns); i++)
/* Don't output the same function twice. We may run into such
situations when an extern inline function is later given a
non-extern-inline definition. */
if (! TREE_ASM_WRITTEN (VARRAY_TREE (deferred_fns, i)))
c_expand_deferred_function (VARRAY_TREE (deferred_fns, i));
{
tree decl = VARRAY_TREE (deferred_fns, i);
if (! TREE_ASM_WRITTEN (decl) && TREE_PUBLIC (decl))
{
c_expand_deferred_function (decl);
VARRAY_TREE (deferred_fns, i) = NULL;
}
}
do
{
reconsider = false;
for (i = 0; i < VARRAY_ACTIVE_SIZE (deferred_fns); i++)
{
tree decl = VARRAY_TREE (deferred_fns, i);
if (decl
&& ! TREE_ASM_WRITTEN (decl)
&& (flag_keep_inline_functions
|| TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))))
{
c_expand_deferred_function (decl);
VARRAY_TREE (deferred_fns, i) = NULL;
reconsider = true;
}
}
} while (reconsider);
VARRAY_FREE (deferred_fns);
#ifndef ASM_OUTPUT_CONSTRUCTOR
......
2001-11-16 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/execute/20011115-1.c: New test.
2001-11-15 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/compile/20011114-2.c: New test.
......
extern void exit (int);
static inline int
foo (void)
{
#ifdef __OPTIMIZE__
extern int undefined_reference;
return undefined_reference;
#else
return 0;
#endif
}
static inline int
bar (void)
{
if (foo == foo)
return 1;
else
return foo ();
}
int main (void)
{
exit (0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment