From: Jakub Jelinek Date: Mon, 25 Jun 2018 17:44:31 +0000 (+0200) Subject: backport: re PR debug/85252 (ICE with -g for static zero-length array initialization) X-Git-Tag: releases/gcc-6.5.0~192 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1740d0ea4d47a0bb9fa57d5189c81e0d5fd0420;p=thirdparty%2Fgcc.git backport: re PR debug/85252 (ICE with -g for static zero-length array initialization) Backported from mainline 2018-04-06 Jakub Jelinek PR debug/85252 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST. * gcc.dg/debug/pr85252.c: New test. From-SVN: r262093 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63e840b5ddf7..a2d2fce6d47b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-04-06 Jakub Jelinek + + PR debug/85252 + * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only + build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST. + 2018-04-03 Jakub Jelinek PR rtl-optimization/85167 diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index f241073866b4..809da745b211 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -17229,6 +17229,8 @@ rtl_for_decl_init (tree init, tree type) if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == 1 && domain + && TYPE_MAX_VALUE (domain) + && TREE_CODE (TYPE_MAX_VALUE (domain)) == INTEGER_CST && integer_zerop (TYPE_MIN_VALUE (domain)) && compare_tree_int (TYPE_MAX_VALUE (domain), TREE_STRING_LENGTH (init) - 1) == 0 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 556fb5781b96..07eeb6fb3996 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-04-06 Jakub Jelinek + + PR debug/85252 + * gcc.dg/debug/pr85252.c: New test. + 2018-04-03 Jakub Jelinek PR rtl-optimization/85167 diff --git a/gcc/testsuite/gcc.dg/debug/pr85252.c b/gcc/testsuite/gcc.dg/debug/pr85252.c new file mode 100644 index 000000000000..6e5ca85bc868 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/pr85252.c @@ -0,0 +1,11 @@ +/* PR debug/85252 */ +/* { dg-do compile } */ + +void +foo (void) +{ + static char a[0] = ""; + static char b[0] = "b"; /* { dg-warning "initializer-string for array of chars is too long" } */ + static char c[1] = "c"; + static char d[1] = "de"; /* { dg-warning "initializer-string for array of chars is too long" } */ +}