From 92788413ad4c6769b91a7da55253be0f1ae4571e Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 3 Apr 2001 23:37:53 +0000 Subject: [PATCH] decl2.c (import_export_decl): Don't call import_export_class when processing an inline member function. * decl2.c (import_export_decl): Don't call import_export_class when processing an inline member function. * semantics.c (expand_body): Call import_export_decl before emitting inline functions. From-SVN: r41066 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/decl2.c | 30 ++++++++++++++++-------------- gcc/cp/semantics.c | 5 +++++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0db7144ee0f..6439776555f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2001-04-03 Mark Mitchell + + * decl2.c (import_export_decl): Don't call import_export_class + when processing an inline member function. + * semantics.c (expand_body): Call import_export_decl before + emitting inline functions. + 2001-03-28 Richard Henderson IA-64 ABI Exception Handling: diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 35c8ca77e9e..38db639d3ef 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2672,21 +2672,23 @@ import_export_decl (decl) } else if (DECL_FUNCTION_MEMBER_P (decl)) { - tree ctype = DECL_CONTEXT (decl); - import_export_class (ctype); - if (CLASSTYPE_INTERFACE_KNOWN (ctype) - && ! DECL_THIS_INLINE (decl)) + if (!DECL_THIS_INLINE (decl)) { - DECL_NOT_REALLY_EXTERN (decl) - = ! (CLASSTYPE_INTERFACE_ONLY (ctype) - || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines - && !DECL_VINDEX (decl))); - - /* Always make artificials weak. */ - if (DECL_ARTIFICIAL (decl) && flag_weak) - comdat_linkage (decl); - else - maybe_make_one_only (decl); + tree ctype = DECL_CONTEXT (decl); + import_export_class (ctype); + if (CLASSTYPE_INTERFACE_KNOWN (ctype)) + { + DECL_NOT_REALLY_EXTERN (decl) + = ! (CLASSTYPE_INTERFACE_ONLY (ctype) + || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines + && !DECL_VINDEX (decl))); + + /* Always make artificials weak. */ + if (DECL_ARTIFICIAL (decl) && flag_weak) + comdat_linkage (decl); + else + maybe_make_one_only (decl); + } } else comdat_linkage (decl); diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 6990e2c3767..ced8c5168d9 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2448,6 +2448,11 @@ expand_body (fn) return; } + /* Compute the appropriate object-file linkage for inline + functions. */ + if (DECL_INLINE (fn)) + import_export_decl (fn); + /* Emit any thunks that should be emitted at the same time as FN. */ emit_associated_thunks (fn); -- 2.30.2