From acc72c37744ddd4cfb99f2db8e52138964e09ae5 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 4 May 2001 03:03:39 +0000 Subject: [PATCH] cp-tree.h (flag_inline_trees): Update documentation. * cp-tree.h (flag_inline_trees): Update documentation. * decl.c (init_decl_processing): Adjust handling of flag_inline_functions and flag_inline_trees to support -O3. (grokfndecl): Set DECL_INLINE on all functions if that's what the user requested. (save_function_data): Clear DECL_INLINE in current_function_cannot_inline is non-NULL. * decl2.c (flag_inline_trees): Update documentation. From-SVN: r41822 --- gcc/cp/ChangeLog | 11 +++++++++++ gcc/cp/cp-tree.h | 6 ++++-- gcc/cp/decl.c | 22 ++++++++++++++++------ gcc/cp/decl2.c | 6 ++++-- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e98d1abc98e..0acfdb9b041 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2001-05-03 Mark Mitchell + + * cp-tree.h (flag_inline_trees): Update documentation. + * decl.c (init_decl_processing): Adjust handling of + flag_inline_functions and flag_inline_trees to support -O3. + (grokfndecl): Set DECL_INLINE on all functions if that's what + the user requested. + (save_function_data): Clear DECL_INLINE in + current_function_cannot_inline is non-NULL. + * decl2.c (flag_inline_trees): Update documentation. + 2001-05-03 Nathan Sidwell * dump.c (cp_dump_tree, USING_STMT case): New case. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 69623fbc335..05a0d0f45ac 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3445,8 +3445,10 @@ extern int flag_implicit_templates; extern int flag_weak; -/* Nonzero if we should expand functions calls inline at the tree - level, rather than at the RTL level. */ +/* 0 if we should not perform inlining. + 1 if we should expand functions calls inline at the tree level. + 2 if we should consider *all* functions to be inline + candidates. */ extern int flag_inline_trees; diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 0e8a44bc70c..54d84f47ddd 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -6365,6 +6365,11 @@ init_decl_processing () flag_inline_trees = 1; flag_no_inline = 1; } + if (flag_inline_functions) + { + flag_inline_trees = 2; + flag_inline_functions = 0; + } /* Initially, C. */ current_lang_name = lang_name_c; @@ -6547,10 +6552,6 @@ init_decl_processing () if (flag_exceptions) init_exception_processing (); - if (flag_no_inline) - { - flag_inline_functions = 0; - } if (! supports_one_only ()) flag_weak = 0; @@ -8838,8 +8839,13 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, DECL_NOT_REALLY_EXTERN (decl) = 1; } + /* If the declaration was declared inline, mark it as such. */ if (inlinep) - DECL_DECLARED_INLINE_P (decl) = DECL_INLINE (decl) = 1; + DECL_DECLARED_INLINE_P (decl) = 1; + /* We inline functions that are explicitly declared inline, or, when + the user explicitly asks us to, all functions. */ + if (DECL_DECLARED_INLINE_P (decl) || flag_inline_trees == 2) + DECL_INLINE (decl) = 1; DECL_EXTERNAL (decl) = 1; if (quals != NULL_TREE && TREE_CODE (type) == FUNCTION_TYPE) @@ -13771,7 +13777,11 @@ save_function_data (decl) /* If we've already decided that we cannot inline this function, we must remember that fact when we actually go to expand the function. */ - f->cannot_inline = current_function_cannot_inline; + if (current_function_cannot_inline) + { + f->cannot_inline = current_function_cannot_inline; + DECL_INLINE (decl) = 0; + } } /* At the end of every constructor we generate to code to return diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 768fd5ffd8f..73b9afdc612 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -396,8 +396,10 @@ int flag_use_cxa_atexit; int flag_honor_std = 1; -/* Nonzero if we should expand functions calls inline at the tree - level, rather than at the RTL level. */ +/* 0 if we should not perform inlining. + 1 if we should expand functions calls inline at the tree level. + 2 if we should consider *all* functions to be inline + candidates. */ int flag_inline_trees = 0;