initializer equal to zero. (Section 3.7.2)
-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))
+ if (!initialized && (! flag_no_common || ! TREE_PUBLIC (decl)))
DECL_COMMON (decl) = 1;
/* Set attributes here so if duplicate decl, will have proper attributes. */
--- /dev/null
+/* With -fzero-initialized-in-bss, we made I a common symbol instead
+ of a symbol in the .bss section. Not only does that break semantics,
+ but a common symbol can't be weak. */
+
+int i __attribute__((weak)) = 0;