re PR c/16622 ([C99] extern inline is handled wrong in C99 mode)
authorGeoffrey Keating <geoffk@gcc.gnu.org>
Wed, 1 Nov 2006 04:48:15 +0000 (04:48 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Wed, 1 Nov 2006 04:48:15 +0000 (04:48 +0000)
commit0a052b16fef9d5d94ec32d3c1a154d03bce49450
treee6af503358a0e4b6b36ed12fc04ebe575474dad4
parent71113fcd70d6b8851fa810c6a2f62fffec388f75
re PR c/16622 ([C99] extern inline is handled wrong in C99 mode)

* c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on
inline static functions in c99 mode.

PR 16622
* doc/extend.texi (Inline): Update.
* c-tree.h (struct language_function): Remove field 'extern_inline'.
* c-decl.c (current_extern_inline): Delete.
(pop_scope): Adjust test for an undefined nested function.
Add warning about undeclared inline function.
(diagnose_mismatched_decls): Update comments.  Disallow overriding
of inline functions in a translation unit in C99.  Allow inline
declarations in C99 at any time.
(merge_decls): Boolize variables.  Handle C99 'extern inline'
semantics.
(grokdeclarator): Set DECL_EXTERNAL here for functions.  Handle
C99 inline semantics.
(start_function): Don't clear current_extern_inline.  Don't set
DECL_EXTERNAL.
(c_push_function_context): Don't push current_extern_inline.
(c_pop_function_context): Don't restore current_extern_inline.

PR 11377
* c-typeck.c (build_external_ref): Warn about static variables
used in extern inline functions.
* c-decl.c (start_decl): Warn about static variables declared
in extern inline functions.

From-SVN: r118357
gcc/doc/extend.texi