Message ID | 201104181937.53360.ebotcazou@adacore.com |
---|---|
State | New |
Headers | show |
On Mon, 18 Apr 2011, Eric Botcazou wrote: > Compiling dwarf2out.c with older versions of GCC yields a warning because > is_redundant_typedef has a prototype without the 'inline' keyboard and a > declaration with it, and is called from another function in-between. Shouldn't there be a warning from newer gcc, i.e. from trunk? brgds, H-P
> Shouldn't there be a warning from newer gcc, i.e. from trunk?
The code in GCC 4.3 reads:
/* Inline declaration after use or definition.
??? Should we still warn about this now we have unit-at-a-time
mode and can get it right?
Definitely don't complain if the decls are in different translation
units.
C99 permits this, so don't warn in that case. (The function
may not be inlined everywhere in function-at-a-time mode, but
we still shouldn't warn.) */
if (DECL_DECLARED_INLINE_P (newdecl) && !DECL_DECLARED_INLINE_P (olddecl)
&& same_translation_unit_p (olddecl, newdecl)
&& flag_gnu89_inline)
{
if (TREE_USED (olddecl))
{
warning (0, "%q+D declared inline after being called", olddecl);
warned = true;
}
else if (DECL_INITIAL (olddecl))
{
warning (0, "%q+D declared inline after its definition", olddecl);
warned = true;
}
}
It was removed by:
2008-07-24 Jan Hubicka <jh@suse.cz>
* cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
(build_cgraph_edges): Likewise.
[...]
* c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
early in GNU dialect.
so I presume that the answer is no.
Index: dwarf2out.c =================================================================== --- dwarf2out.c (revision 172617) +++ dwarf2out.c (working copy) @@ -6565,7 +6565,7 @@ static void gen_typedef_die (tree, dw_di static void gen_type_die (tree, dw_die_ref); static void gen_block_die (tree, dw_die_ref, int); static void decls_for_scope (tree, dw_die_ref, int); -static int is_redundant_typedef (const_tree); +static inline int is_redundant_typedef (const_tree); static bool is_naming_typedef_decl (const_tree); static inline dw_die_ref get_context_die (tree); static void gen_namespace_die (tree, dw_die_ref);