From 303a3927d2fa2568cacb701561150e5693633d99 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 19 Apr 2002 16:21:58 +0000 Subject: [PATCH] re PR c++/6352 (GCC 3.1 inliner regression from March) PR c++/6352 * toplev.c (rest_of_compilation): Do not defer functions for which TREE_SYMBOL_REFERENCED has already been set. * PR6352 * g++.dg/opt/inline2.C: New test. From-SVN: r52521 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/inline2.C | 18 ++++++++++++++++++ gcc/toplev.c | 1 + 4 files changed, 30 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/inline2.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0571b4e0ad2..579cdf6802b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-04-19 Mark Mitchell + + PR c++/6352 + * toplev.c (rest_of_compilation): Do not defer functions for which + TREE_SYMBOL_REFERENCED has already been set. + Fri Apr 19 15:53:03 CEST 2002 Jan Hubicka * i386.md (movsi_1, movhi_1): Force reload to use more flexible diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60b580ea696..8cf71e96409 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-04-19 Mark Mitchell + + * PR6352 + * g++.dg/opt/inline2.C: New test. + 2002-04-18 Richard Henderson * gcc.dg/20000906-1.c: Enable for all targets. diff --git a/gcc/testsuite/g++.dg/opt/inline2.C b/gcc/testsuite/g++.dg/opt/inline2.C new file mode 100644 index 00000000000..6e6889fc7b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/inline2.C @@ -0,0 +1,18 @@ +// { dg-do link } +// { dg-options "-O1 -finline-functions" } + +static void g (); + +void f() +{ + void g(); + g(); +} + +void g() +{ +} + +int main () { + f (); +} diff --git a/gcc/toplev.c b/gcc/toplev.c index 3fe01db5b87..fa8e2893a54 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2374,6 +2374,7 @@ rest_of_compilation (decl) if (inlinable || (DECL_INLINE (decl) && ((! TREE_PUBLIC (decl) && ! TREE_ADDRESSABLE (decl) + && ! TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) && ! flag_keep_inline_functions) || DECL_EXTERNAL (decl)))) DECL_DEFER_OUTPUT (decl) = 1; -- 2.30.2