diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-lang.c | 28 |
2 files changed, 11 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ecf3e82..9aef7fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2001-11-20 Jakub Jelinek <jakub@redhat.com> + * c-lang.c (finish_file): Backout 2001-11-16 + changes, instead set DECL_DEFER_OUTPUT for static inline functions + before calling c_expand_deferred_function. + +2001-11-20 Jakub Jelinek <jakub@redhat.com> + * unwind-dw2-fde.c (__register_frame_info_bases, __register_frame): Don't register empty .eh_frame sections. (__deregister_frame_info_bases, __deregister_frame): Don't diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 54f86df..9f0fb28 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -271,38 +271,20 @@ void finish_file () { unsigned int i; - bool reconsider; for (i = 0; i < VARRAY_ACTIVE_SIZE (deferred_fns); i++) { tree decl = VARRAY_TREE (deferred_fns, i); - if (! TREE_ASM_WRITTEN (decl) && TREE_PUBLIC (decl)) + if (! TREE_ASM_WRITTEN (decl)) { + /* For static inline functions, delay the decision whether to + emit them or not until wrapup_global_declarations. */ + if (! TREE_PUBLIC (decl)) + DECL_DEFER_OUTPUT (decl) = 1; 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); if (static_ctors) |