diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2002-03-03 01:00:51 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-03-03 01:00:51 -0800 |
commit | cc2c33286fdfb60c71940f39674e731766675f90 (patch) | |
tree | e54bd173727a7f7546c8890dbc1d84ac15130add /gcc | |
parent | 2a85660dc27b7059ea083a775a99a0c206abeee4 (diff) | |
download | gcc-cc2c33286fdfb60c71940f39674e731766675f90.zip gcc-cc2c33286fdfb60c71940f39674e731766675f90.tar.gz gcc-cc2c33286fdfb60c71940f39674e731766675f90.tar.bz2 |
* c-decl.c (start_decl): Initialized variables are not common.
From-SVN: r50250
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20020303-1.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index f465875..845cefb 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -3476,7 +3476,7 @@ start_decl (declarator, declspecs, initialized, attributes) 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. */ diff --git a/gcc/testsuite/gcc.c-torture/compile/20020303-1.c b/gcc/testsuite/gcc.c-torture/compile/20020303-1.c new file mode 100644 index 0000000..a120adf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20020303-1.c @@ -0,0 +1,5 @@ +/* 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; |