The test deliberately reads beyond bounds to exersize ubsan and the
return value may be anything, based on previous allocations. The OFF
test caters for it by ANDing the return with 0, do the same for the DYN
test.
gcc/testsuite/ChangeLog:
PR testsuite/110763
* gcc.dg/ubsan/object-size-dyn.c (dyn): New parameter RET.
(main): Use it.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
int
__attribute__ ((noinline))
-dyn (int size, int i)
+dyn (int size, int i, int ret)
{
__builtin_printf ("dyn\n");
fflush (stdout);
int *alloc = __builtin_calloc (size, sizeof (int));
- int ret = alloc[i];
+ ret = ret & alloc[i];
__builtin_free (alloc);
return ret;
}
int
main (void)
{
- int ret = dyn (2, 2);
+ int ret = dyn (2, 2, 0);
ret |= off (4, 4, 0);