aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-01-31 14:05:17 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2020-01-31 17:26:41 -0500
commit6775172431a8e6f0d20ac0c4946d6b5db2f46450 (patch)
treedff299948c5733be7627b09e1539304ed0583eeb
parent09bea5845a50189b093e7fa8d5b840da702197d4 (diff)
downloadgcc-6775172431a8e6f0d20ac0c4946d6b5db2f46450.zip
gcc-6775172431a8e6f0d20ac0c4946d6b5db2f46450.tar.gz
gcc-6775172431a8e6f0d20ac0c4946d6b5db2f46450.tar.bz2
analyzer: fix ICE with 'const void *' (PR 93457)
gcc/analyzer/ChangeLog: PR analyzer/93457 * region-model.cc (make_region_for_type): Use VOID_TYPE_P rather than checking against void_type_node. gcc/testsuite/ChangeLog: PR analyzer/93457 * gcc.dg/analyzer/pr93457.c: New test.
-rw-r--r--gcc/analyzer/ChangeLog6
-rw-r--r--gcc/analyzer/region-model.cc2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr93457.c10
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 416fc92..66d46b0 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,5 +1,11 @@
2020-01-31 David Malcolm <dmalcolm@redhat.com>
+ PR analyzer/93457
+ * region-model.cc (make_region_for_type): Use VOID_TYPE_P rather
+ than checking against void_type_node.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
PR analyzer/93373
* region-model.cc (ASSERT_COMPAT_TYPES): Convert to...
(assert_compat_types): ...this, and bail when either type is NULL,
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index eb6d8f3..679479c 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -6005,7 +6005,7 @@ make_region_for_type (region_id parent_rid, tree type)
return new function_region (parent_rid, type);
/* If we have a void *, make a new symbolic region. */
- if (type == void_type_node)
+ if (VOID_TYPE_P (type))
return new symbolic_region (parent_rid, false);
gcc_unreachable ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d13768a..e4213d1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2020-01-31 David Malcolm <dmalcolm@redhat.com>
+ PR analyzer/93457
+ * gcc.dg/analyzer/pr93457.c: New test.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
PR analyzer/93373
* gcc.dg/analyzer/torture/pr93373.c: New test.
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr93457.c b/gcc/testsuite/gcc.dg/analyzer/pr93457.c
new file mode 100644
index 0000000..b77911b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr93457.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+
+void
+p5 (const void *);
+
+void
+s5 (const void *cl)
+{
+ p5 (&cl[1]); /* { dg-warning "dereferencing 'void \\*' pointer" } */
+}