pointer-query: Fix ICE with non-pointer param [PR105635]
authorJakub Jelinek <jakub@redhat.com>
Thu, 19 May 2022 09:56:21 +0000 (11:56 +0200)
committerJakub Jelinek <jakub@redhat.com>
Thu, 19 May 2022 09:57:36 +0000 (11:57 +0200)
commit3b4daa0b3c3d8eb2ac3b40ad6898f314ed4d7919
tree3d72c764de583ed88c3657cd434af19096a0146e
parentb8944f0438a183a0245ffe17aeaeaf3a1a00069c
pointer-query: Fix ICE with non-pointer param [PR105635]

The gimple_parm_array_size function comment talks about pointe parameters
but doesn't actually verify it, it checks whether an attribute is present
on the function and then just uses TREE_TYPE (TREE_TYPE (var)) which
assumes a pointer type (or in theory could work for ARRAY_TYPE but
c-family languages which only have that attribute will never have ARRAY_TYPE
parameters; and for VECTOR_TYPE/COMPLEX_TYPE it would mean something quite
different).

So, this patch punts early if var doesn't have pointer/reference type.

2022-05-19  Jakub Jelinek  <jakub@redhat.com>

PR c/105635
* pointer-query.cc (gimple_parm_array_size): Return NULL if var
doesn't have pointer or reference type.

* gcc.dg/pr105635.c: New test.
gcc/pointer-query.cc
gcc/testsuite/gcc.dg/pr105635.c [new file with mode: 0644]