re PR c++/58705 ([c++11] ICE with invalid initializer for _Complex variable)
authorMarek Polacek <polacek@redhat.com>
Thu, 24 Oct 2013 13:54:00 +0000 (13:54 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 24 Oct 2013 13:54:00 +0000 (13:54 +0000)
PR c++/58705
cp/
* typeck2.c (check_narrowing): Don't check narrowing when the scalar
initializer is empty.
testsuite/
* g++.dg/parse/pr58705.C: New test.

From-SVN: r204014

gcc/cp/ChangeLog
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/pr58705.C [new file with mode: 0644]

index 123200b..5fa01fe 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-24  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/58705
+       * typeck2.c (check_narrowing): Don't check narrowing when the scalar
+       initializer is empty.
+
 2013-10-23  Jason Merrill  <jason@redhat.com>
 
        LWG 2165
index 4b71a76..d6ff3ca 100644 (file)
@@ -834,7 +834,8 @@ check_narrowing (tree type, tree init)
       && TREE_CODE (type) == COMPLEX_TYPE)
     {
       tree elttype = TREE_TYPE (type);
-      check_narrowing (elttype, CONSTRUCTOR_ELT (init, 0)->value);
+      if (CONSTRUCTOR_NELTS (init) > 0)
+        check_narrowing (elttype, CONSTRUCTOR_ELT (init, 0)->value);
       if (CONSTRUCTOR_NELTS (init) > 1)
        check_narrowing (elttype, CONSTRUCTOR_ELT (init, 1)->value);
       return;
index d68f384..b77200a 100644 (file)
@@ -1,5 +1,10 @@
 2013-10-24  Marek Polacek  <polacek@redhat.com>
 
+       PR c++/58705
+       * g++.dg/parse/pr58705.C: New test.
+
+2013-10-24  Marek Polacek  <polacek@redhat.com>
+
        * gcc.dg/c11-align-5.c: Add more testing.
 
 2013-10-23  Pat Haugen  <pthaugen@us.ibm.com>
diff --git a/gcc/testsuite/g++.dg/parse/pr58705.C b/gcc/testsuite/g++.dg/parse/pr58705.C
new file mode 100644 (file)
index 0000000..de2b396
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/58705
+// { dg-do compile }
+// { dg-options "-Wnarrowing" }
+
+_Complex float f = {{}};