From: geoffk Date: Sat, 4 Nov 2006 02:59:52 +0000 (+0000) Subject: * c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1. X-Git-Tag: upstream/4.9.2~52208 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b8dcd8a1e4168f06399318ef24d561455003f62d;p=platform%2Fupstream%2Flinaro-gcc.git * c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1. (merge_decls): Implement WANT_C99_INLINE_SEMANTICS. (grokdeclarator): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118474 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ecfc7a..67734b0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-11-03 Geoffrey Keating + + * c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1. + (merge_decls): Implement WANT_C99_INLINE_SEMANTICS. + (grokdeclarator): Likewise. + 2006-11-03 Steven Bosscher * tree-dump.c (dump_enable_all): Rename local variable diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 34709df..a49b88b 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -62,6 +62,12 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "langhooks-def.h" #include "pointer-set.h" +/* Set this to 1 if you want the standard ISO C99 semantics of 'inline' + when you specify -std=c99 or -std=gnuc99, and to 0 if you want + behaviour compatible with the nonstandard semantics implemented by + GCC 2.95 through 4.2. */ +#define WANT_C99_INLINE_SEMANTICS 1 + /* In grokdeclarator, distinguish syntactic contexts of declarators. */ enum decl_context { NORMAL, /* Ordinary declaration */ @@ -1760,6 +1766,7 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype) } } +#if WANT_C99_INLINE_SEMANTICS /* In c99, 'extern' declaration before (or after) 'inline' means this function is not DECL_EXTERNAL. */ if (TREE_CODE (newdecl) == FUNCTION_DECL @@ -1771,6 +1778,7 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype) && DECL_EXTERNAL (newdecl) && flag_isoc99) DECL_EXTERNAL (newdecl) = 0; +#endif /* WANT_C99_INLINE_SEMANTICS */ if (DECL_EXTERNAL (newdecl)) { @@ -4772,7 +4780,11 @@ grokdeclarator (const struct c_declarator *declarator, in this file, C99 6.7.4p6. In GNU C89, a function declared 'extern inline' is an external reference. */ else if (declspecs->inline_p && storage_class != csc_static) +#if WANT_C99_INLINE_SEMANTICS DECL_EXTERNAL (decl) = (storage_class == csc_extern) == !flag_isoc99; +#else + DECL_EXTERNAL (decl) = (storage_class == csc_extern); +#endif else DECL_EXTERNAL (decl) = !initialized;