From ffca9d534c9e8cca5aa1eee5ce28d9960b6d1179 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 6 Jul 2011 22:58:33 -0400 Subject: [PATCH] re PR c++/49353 (C++ frontend should not declare function EXTERN when it forces them to stay) PR c++/49353 * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL on kept inlines. From-SVN: r175954 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/semantics.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8a25c89de87..3957d5ade63 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2011-07-06 Jason Merrill + PR c++/49353 + * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL + on kept inlines. + PR c++/49568 * method.c (make_thunk, use_thunk): Copy DECL_COMDAT. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index fa22bc9411f..5c53a18511c 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3633,7 +3633,10 @@ expand_or_defer_fn_1 (tree fn) && !DECL_REALLY_EXTERN (fn)) || (flag_keep_inline_dllexport && lookup_attribute ("dllexport", DECL_ATTRIBUTES (fn)))) - mark_needed (fn); + { + mark_needed (fn); + DECL_EXTERNAL (fn) = 0; + } } /* There's no reason to do any of the work here if we're only doing -- 2.30.2