aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2016-04-29 12:39:25 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2016-04-29 12:39:25 +0000
commit2fff3db89fa064071835924a7a9e1751a0b383fa (patch)
tree136005217bb86ce1eacfff3f8d4a764a43ee0c3c /gcc
parent500ecf4abd0f29d0cb4555de105a3f4152b6c423 (diff)
downloadgcc-2fff3db89fa064071835924a7a9e1751a0b383fa.zip
gcc-2fff3db89fa064071835924a7a9e1751a0b383fa.tar.gz
gcc-2fff3db89fa064071835924a7a9e1751a0b383fa.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-common.c1
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.dg/pr70852.c11
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index f70dc0e..2a740a5 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-29 Marek Polacek <polacek@redhat.com>
+
+ PR c/70852
+ * c-common.c (warn_for_memset): Check domain before accessing it.
+
2016-04-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR/69089
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index b221979..3c35a6b 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 93e89d9..3911534 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 <vogt@linux.vnet.ibm.com>
PR/69089
diff --git a/gcc/testsuite/gcc.dg/pr70852.c b/gcc/testsuite/gcc.dg/pr70852.c
new file mode 100644
index 0000000..2dec082
--- /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);
+}