aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2014-12-01 18:52:05 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2014-12-01 18:52:05 +0000
commitad1f2178c1843170c80c027f62594dba3c600d69 (patch)
tree761da3f0dd2614d8567ec71641cefb6bfbee0c98 /gcc
parente250f0dcfe3caecaaf90fcb1a8337daee974b16f (diff)
downloadgcc-ad1f2178c1843170c80c027f62594dba3c600d69.zip
gcc-ad1f2178c1843170c80c027f62594dba3c600d69.tar.gz
gcc-ad1f2178c1843170c80c027f62594dba3c600d69.tar.bz2
re PR c++/60859 (Value-initialization of scalar in aggregate yields "braces around scalar initializer")
/cp 2014-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60859 * decl.c (reshape_init_r): Do not reject value-initialization of scalar array element. /testsuite 2014-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60859 * g++.dg/cpp0x/initlist88.C: New. From-SVN: r218244
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist88.C4
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 93780c0..10f3c17 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60859
+ * decl.c (reshape_init_r): Do not reject value-initialization of
+ scalar array element.
+
2014-12-01 Marek Polacek <polacek@redhat.com>
PR sanitizer/63956
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 455097e..716ab5f 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5511,9 +5511,15 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p,
{
if (SCALAR_TYPE_P (type))
{
- if (complain & tf_error)
- error ("braces around scalar initializer for type %qT", type);
- init = error_mark_node;
+ if (cxx_dialect < cxx11
+ /* Isn't value-initialization. */
+ || CONSTRUCTOR_NELTS (init) > 0)
+ {
+ if (complain & tf_error)
+ error ("braces around scalar initializer for type %qT",
+ type);
+ init = error_mark_node;
+ }
}
else
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e15dc79..3f14726 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60859
+ * g++.dg/cpp0x/initlist88.C: New.
+
2014-12-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/fuse_adrp_add_1.c: Gate test on aarch64_small.
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist88.C b/gcc/testsuite/g++.dg/cpp0x/initlist88.C
new file mode 100644
index 0000000..d0a38fd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist88.C
@@ -0,0 +1,4 @@
+// PR c++/60859
+// { dg-do compile { target c++11 } }
+
+int a[] = { {} };