From 2fff3db89fa064071835924a7a9e1751a0b383fa Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 29 Apr 2016 12:39:25 +0000 Subject: [PATCH] re PR c/70852 (ice in warn_for_memset) PR c/70852 * c-common.c (warn_for_memset): Check domain before accessing it. * gcc.dg/pr70852.c: New test. From-SVN: r235638 --- gcc/c-family/ChangeLog | 5 +++++ gcc/c-family/c-common.c | 1 + gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.dg/pr70852.c | 11 +++++++++++ 4 files changed, 20 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr70852.c diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index f70dc0ea66d..2a740a57e7b 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2016-04-29 Marek Polacek + + PR c/70852 + * c-common.c (warn_for_memset): Check domain before accessing it. + 2016-04-29 Dominik Vogt PR/69089 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index b2219791881..3c35a6b4353 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -11796,6 +11796,7 @@ warn_for_memset (location_t loc, tree arg0, tree arg2, tree elt_type = TREE_TYPE (type); tree domain = TYPE_DOMAIN (type); if (!integer_onep (TYPE_SIZE_UNIT (elt_type)) + && domain != NULL_TREE && TYPE_MAXVAL (domain) && TYPE_MINVAL (domain) && integer_zerop (TYPE_MINVAL (domain)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 93e89d98fb7..3911534c8bb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ PR sanitizer/70342 * g++.dg/ubsan/null-7.C: New test. + PR c/70852 + * gcc.dg/pr70852.c: New test. + 2016-04-29 Dominik Vogt PR/69089 diff --git a/gcc/testsuite/gcc.dg/pr70852.c b/gcc/testsuite/gcc.dg/pr70852.c new file mode 100644 index 00000000000..2dec0829652 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr70852.c @@ -0,0 +1,11 @@ +/* PR c/70852 */ +/* { dg-do compile } */ +/* { dg-options "-Wall" } */ + +extern void *memset (void *, int, __SIZE_TYPE__); +extern int A[]; +void +fn1 (void) +{ + memset (A, 0, 1); +}