diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-01-31 14:05:17 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-01-31 17:26:41 -0500 |
commit | 6775172431a8e6f0d20ac0c4946d6b5db2f46450 (patch) | |
tree | dff299948c5733be7627b09e1539304ed0583eeb | |
parent | 09bea5845a50189b093e7fa8d5b840da702197d4 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/analyzer/region-model.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/pr93457.c | 10 |
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" } */ +} |