aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-05-06 07:44:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-05-06 07:44:22 +0000
commit8706773f5a11cc9f3f48e82e0177d047d275ce1d (patch)
tree37df3051bfd21e0240474e795612d9af5397f2e6 /gcc
parenta4f510181a4a6ac49317acdda7036f0370517cb9 (diff)
downloadgcc-8706773f5a11cc9f3f48e82e0177d047d275ce1d.zip
gcc-8706773f5a11cc9f3f48e82e0177d047d275ce1d.tar.gz
gcc-8706773f5a11cc9f3f48e82e0177d047d275ce1d.tar.bz2
re PR fortran/70931 (ICE with -g in native_encode_initializer, bei dwarf2out.c:17768)
2016-05-06 Richard Biener <rguenther@suse.de> PR middle-end/70931 * dwarf2out.c (native_encode_initializer): Skip zero-sized fields. * gfortran.dg/pr70931.f90: New testcase. From-SVN: r235944
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2out.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr70931.f9010
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e8f7c8f..3bf441a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2016-05-06 Richard Biener <rguenther@suse.de>
+ PR middle-end/70931
+ * dwarf2out.c (native_encode_initializer): Skip zero-sized fields.
+
+2016-05-06 Richard Biener <rguenther@suse.de>
+
PR middle-end/70941
* fold-const.c (split_tree): Always convert to the original type
before negating.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index ab851f4..fb3f7b9 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -17806,7 +17806,7 @@ native_encode_initializer (tree init, unsigned char *array, int size)
fieldsize = tree_to_shwi (DECL_SIZE_UNIT (field));
pos = int_byte_position (field);
gcc_assert (pos + fieldsize <= size);
- if (val
+ if (val && fieldsize != 0
&& !native_encode_initializer (val, array + pos, fieldsize))
return false;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d5b2df9..13f7121 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2016-05-06 Richard Biener <rguenther@suse.de>
+ PR middle-end/70931
+ * gfortran.dg/pr70931.f90: New testcase.
+
+2016-05-06 Richard Biener <rguenther@suse.de>
+
PR middle-end/70941
* gcc.dg/torture/pr70941.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/pr70931.f90 b/gcc/testsuite/gfortran.dg/pr70931.f90
new file mode 100644
index 0000000..08ecd68
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr70931.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-g" }
+program p
+ type t
+ integer :: a
+ integer :: b(0)
+ end type
+ type(t), parameter :: z = t(1, [2])
+ print *, z
+end