From 551ed71acf2df41550eab28d484fbcc7fca8d5c6 Mon Sep 17 00:00:00 2001 From: jsm28 Date: Sun, 26 Apr 2009 13:40:19 +0000 Subject: PR c/39556 * c-tree.h (enum c_inline_static_type): New. (record_inline_static): Declare. * c-decl.c (struct c_inline_static, c_inline_statics, record_inline_static, check_inline_statics): New. (pop_file_scope): Call check_inline_statics. (start_decl): Call record_inline_static instead of pedwarning directly for static in inline function. * c-typeck.c (build_external_ref): Call record_inline_static instead of pedwarning directly for static referenced in inline function. testsuite: * gcc.dg/inline-34.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146800 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-tree.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gcc/c-tree.h') diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 64e491e1e33..0bfcdfe387a 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -467,6 +467,18 @@ struct c_enum_contents int enum_overflow; }; +/* A type of reference to a static identifier in an inline + function. */ +enum c_inline_static_type { + /* Identifier with internal linkage used in function that may be an + inline definition (i.e., file-scope static). */ + csi_internal, + /* Modifiable object with static storage duration defined in + function that may be an inline definition (i.e., local + static). */ + csi_modifiable +}; + /* in c-parser.c */ extern void c_parse_init (void); @@ -483,6 +495,8 @@ extern int global_bindings_p (void); extern void push_scope (void); extern tree pop_scope (void); +extern void record_inline_static (location_t, tree, tree, + enum c_inline_static_type); extern void c_init_decl_processing (void); extern void c_dup_lang_specific_decl (tree); extern void c_print_identifier (FILE *, tree, int); -- cgit v1.2.1