On 7/27/2021 2:45 PM, Martin Sebor via Gcc-patches wrote:
When mentioning the type of the accessed object -Warray-bounds
treats singleton objects as arrays of one element for simplicity.
But because the code doesn't distinguish between function and
object pointers, a warning for an out-of-bounds index into
a singleton function pointer object attempts to create an array
of one function. Since arrays of functions are invalid,
the helper function the code calls fails with an error issued
to the user.
To avoid this the attached patch avoids this singleton-to-array
shortcut for function pointers. Tested on x86_64-linux.
Martin
gcc-101601.diff
PR middle-end/101601 - [12 Regression] -Warray-bounds triggers error: arrays of
functions are not meaningful
PR middle-end/101601
gcc/ChangeLog:
* gimple-array-bounds.cc (array_bounds_checker::check_mem_ref): Remove
a pointless test.
Handle pointers to functions.
gcc/testsuite/ChangeLog:
* g++.dg/warn/Warray-bounds-25.C: New test.
* gcc.dg/Warray-bounds-85.c: New test.
OK
jeff