aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-05-17 08:51:48 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2005-05-17 08:51:48 +0200
commitf23b8501183a7c4645e59d5d6ae9e0e1c0d925d5 (patch)
treecb6a423cab6f20bd29a10111bcc2caa8bdbdb13b /gcc
parent7cbd12b88f5749676e888502453056fcc48cd61e (diff)
downloadgcc-f23b8501183a7c4645e59d5d6ae9e0e1c0d925d5.zip
gcc-f23b8501183a7c4645e59d5d6ae9e0e1c0d925d5.tar.gz
gcc-f23b8501183a7c4645e59d5d6ae9e0e1c0d925d5.tar.bz2
re PR c++/21454 (const array doesn't live in the rodata section in C++)
PR c++/21454 * decl.c (maybe_deduce_size_from_array_init): Call cp_apply_type_quals_to_decl after completing array type. * g++.dg/opt/const4.C: New test. From-SVN: r99817
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/opt/const4.C9
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0a21f0a..d5a88e9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/21454
+ * decl.c (maybe_deduce_size_from_array_init): Call
+ cp_apply_type_quals_to_decl after completing array type.
+
2005-05-16 Richard Henderson <rth@redhat.com>
* decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index c110d9f..ac7608b 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -3939,6 +3939,8 @@ maybe_deduce_size_from_array_init (tree decl, tree init)
if (failure == 3)
error ("zero-size array %qD", decl);
+ cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl);
+
layout_decl (decl, 0);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2428cf1..367947b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2005-05-17 Jakub Jelinek <jakub@redhat.com>
+ PR c++/21454
+ * g++.dg/opt/const4.C: New test.
+
PR middle-end/21492
* g++.dg/opt/crossjump1.C: New test.
diff --git a/gcc/testsuite/g++.dg/opt/const4.C b/gcc/testsuite/g++.dg/opt/const4.C
new file mode 100644
index 0000000..883c24b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/const4.C
@@ -0,0 +1,9 @@
+// PR c++/21454
+// Test whether A is put into .rodata section on platforms
+// that have it.
+// { dg-do compile }
+
+const int a[] __attribute__ ((__used__)) = { 0, 1, 2, 3 };
+
+// The MMIX port always switches to the .data section at the end of a file.
+// { dg-final { scan-assembler-not "\\.data(?!\\.rel\\.ro)" { xfail powerpc*-*-aix* mmix-*-* } } }