TEM may equal DECL or it may be a previous decl of the same name. */
tem = pushdecl (decl);
+ /* For C and Obective-C, we by default put things in .common when
+ possible. */
+ DECL_COMMON (tem) = 1;
+
/* For a local variable, define the RTL now. */
if (current_binding_level != global_binding_level
/* But not if this is a duplicate decl
because this decl is unused. */
#define DECL_IN_SYSTEM_HEADER(NODE) ((NODE)->decl.in_system_header_flag)
+/* Nonzero for a given ..._DECL node means that this node should be
+ put in .common, if possible. If a DECL_INITIAL is given, and it
+ is not error_mark_node, then the decl cannot be put in .common. */
+#define DECL_COMMON(NODE) ((NODE)->decl.common_flag)
+
/* Language-specific decl information. */
#define DECL_LANG_SPECIFIC(NODE) ((NODE)->decl.lang_specific)
unsigned abstract_flag : 1;
unsigned in_system_header_flag : 1;
- /* room for seven more */
+ unsigned common_flag : 1;
+ /* room for six more */
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;
-fno-common gives strict ANSI behavior. Usually you don't want it.
This matters only for variables with external linkage. */
if ((! flag_no_common || ! TREE_PUBLIC (decl))
+ && DECL_COMMON (decl)
&& ! dont_output_data
&& (DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node))
{