diff options
author | Richard Guenther <rguenther@suse.de> | 2007-08-28 09:03:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-08-28 09:03:59 +0000 |
commit | c536a6a77a19a895e51e5e5167d266bd8ce61001 (patch) | |
tree | 011fca32e4efb23ba0a1e1758ff407cd0dc46ae8 /gcc/c-decl.c | |
parent | 44d5230cc3b623e04e46b2674fbf971743e55057 (diff) | |
download | gcc-c536a6a77a19a895e51e5e5167d266bd8ce61001.zip gcc-c536a6a77a19a895e51e5e5167d266bd8ce61001.tar.gz gcc-c536a6a77a19a895e51e5e5167d266bd8ce61001.tar.bz2 |
tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
2007-08-28 Richard Guenther <rguenther@suse.de>
* tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
(struct tree_function_decl): Make function_code a bitfield.
Add disregard_inline_limits flag.
* cgraphunit.c (cgraph_process_new_functions): Check
DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
(cgraph_preserve_function_body_p): Likewise.
* ipa-inline.c (compute_inline_parameters): Likewise.
* c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
for GNU C extern inline functions.
(merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
* tree-inline.c (disregard_inline_limits_p): Remove.
* tree-inline.h (disregard_inline_limits_p): Likewise.
* c-common.c (handle_always_inline_attribute): Set
DECL_DISREGARD_INLINE_LIMITS.
* langhooks.c (add_builtin_function): Verify the function code
fits in the bitfield.
cp/
* decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
From-SVN: r127851
Diffstat (limited to 'gcc/c-decl.c')
-rw-r--r-- | gcc/c-decl.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 98489b1..714cf62 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1819,6 +1819,11 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype) DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl) = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl)); + + DECL_DISREGARD_INLINE_LIMITS (newdecl) + = DECL_DISREGARD_INLINE_LIMITS (olddecl) + = (DECL_DISREGARD_INLINE_LIMITS (newdecl) + || DECL_DISREGARD_INLINE_LIMITS (olddecl)); } if (DECL_BUILT_IN (olddecl)) @@ -6771,6 +6776,11 @@ finish_function (void) /* Finalize the ELF visibility for the function. */ c_determine_visibility (fndecl); + /* For GNU C extern inline functions disregard inline limits. */ + if (DECL_EXTERNAL (fndecl) + && DECL_DECLARED_INLINE_P (fndecl)) + DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1; + /* Genericize before inlining. Delay genericizing nested functions until their parent function is genericized. Since finalizing requires GENERIC, delay that as well. */ |