diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-04-06 19:28:54 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-04-06 19:28:54 +0200 |
commit | c617fb562d510101b5445464753858a557020acb (patch) | |
tree | ca7aea9f6caf538d42053af6fca7c822bc66bc11 /gcc | |
parent | 49574486e65c03100fbf2993804ccc6dbb9051e6 (diff) | |
download | gcc-c617fb562d510101b5445464753858a557020acb.zip gcc-c617fb562d510101b5445464753858a557020acb.tar.gz gcc-c617fb562d510101b5445464753858a557020acb.tar.bz2 |
re PR debug/85252 (ICE with -g for static zero-length array initialization)
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: r259183
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/debug/pr85252.c | 11 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1a8fcf6..c82d2bc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2018-04-06 Jakub Jelinek <jakub@redhat.com> + 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. + PR rtl-optimization/84872 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 7933054..50a41c5 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -19596,6 +19596,8 @@ rtl_for_decl_init (tree init, tree type) if (is_int_mode (TYPE_MODE (enttype), &mode) && 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 25cda50..4ab768d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2018-04-06 Jakub Jelinek <jakub@redhat.com> + PR debug/85252 + * gcc.dg/debug/pr85252.c: New test. + PR rtl-optimization/84872 * gcc.dg/graphite/pr84872.c: New test. diff --git a/gcc/testsuite/gcc.dg/debug/pr85252.c b/gcc/testsuite/gcc.dg/debug/pr85252.c new file mode 100644 index 0000000..6e5ca85 --- /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" } */ +} |