diff options
author | Jason Merrill <jason@redhat.com> | 2003-03-14 20:43:07 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2003-03-14 20:43:07 -0500 |
commit | af75fb675d7e451df34a1114b236e2291ee5f638 (patch) | |
tree | 2f234f8733535067850f91645ed976b5228e1fdd | |
parent | adf936a606445e0e6c0d1de74338a5e237d9217e (diff) | |
download | gcc-af75fb675d7e451df34a1114b236e2291ee5f638.zip gcc-af75fb675d7e451df34a1114b236e2291ee5f638.tar.gz gcc-af75fb675d7e451df34a1114b236e2291ee5f638.tar.bz2 |
re PR rtl-optimization/6871 (const objects shouldn't be moved to .bss)
PR optimization/6871
* varasm.c (assemble_variable): Leave constant zeroes in .rodata.
From-SVN: r64387
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/section1.c | 5 | ||||
-rw-r--r-- | gcc/varasm.c | 2 |
3 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d715d97..146eb18 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-03-14 Jason Merrill <jason@redhat.com> + + PR optimization/6871 + * varasm.c (assemble_variable): Leave constant zeroes in .rodata. + 2003-03-14 Neil Booth <neil@daikokuya.co.uk> * c-opts.c (finish_options): New. diff --git a/gcc/testsuite/gcc.dg/section1.c b/gcc/testsuite/gcc.dg/section1.c new file mode 100644 index 0000000..e907f19 --- /dev/null +++ b/gcc/testsuite/gcc.dg/section1.c @@ -0,0 +1,5 @@ +/* PR optimization/6871 */ +/* Constant variables belong in .rodata, not .bss. */ +/* { dg-final { scan-assembler-not "\.bss" } } */ + +const int i = 0; diff --git a/gcc/varasm.c b/gcc/varasm.c index dea352a..42775dc 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1551,6 +1551,8 @@ assemble_variable (decl, top_level, at_end, dont_output_data) else if (DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node || (flag_zero_initialized_in_bss + /* Leave constant zeroes in .rodata so they can be shared. */ + && !TREE_READONLY (decl) && initializer_zerop (DECL_INITIAL (decl)))) { unsigned HOST_WIDE_INT size = tree_low_cst (DECL_SIZE_UNIT (decl), 1); |