tree-object-size: Don't let error_mark_node escape for ADDR_EXPR [PR105736]
authorSiddhesh Poyarekar <siddhesh@gotplt.org>
Tue, 21 Jun 2022 06:45:07 +0000 (12:15 +0530)
committerSiddhesh Poyarekar <siddhesh@gotplt.org>
Thu, 23 Jun 2022 05:51:29 +0000 (11:21 +0530)
commit70deb85b995eed16280ed3a45c3b879b16685bbf
treec019583878b8f02581c782279f7931566dbbacd2
parentc85cea9ca165b0b771d9f913016c9dc8db46b5d7
tree-object-size: Don't let error_mark_node escape for ADDR_EXPR [PR105736]

The addr_expr computation does not check for error_mark_node before
returning the size expression.  This used to work in the constant case
because the conversion to uhwi would end up causing it to return
size_unknown, but that won't work for the dynamic case.

Modify the control flow to explicitly return size_unknown if the offset
computation returns an error_mark_node.

gcc/ChangeLog:

PR tree-optimization/105736
* tree-object-size.cc (addr_object_size): Return size_unknown
when object offset computation returns an error.

gcc/testsuite/ChangeLog:

PR tree-optimization/105736
* gcc.dg/builtin-dynamic-object-size-0.c (TV4): New struct.
(val3): New variable.
(test_pr105736): New test.
(main): Call it.

Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
(cherry picked from commit 70454c50b4592fe6876ecca13268264e395e058f)
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c
gcc/tree-object-size.cc