On 11/24/21 3:16 AM, Thomas Schwinge wrote:
Hi!
On 2021-11-09T21:28:43-0700, Martin Sebor via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
The attached patch adds support to the middle end for detecting
infinitely recursive calls. The warning is controlled by the new
-Winfinite-recursion option. The option name is the same as
Clang's.
Thanks!
The warning detects a superset of problems detected by Clang
(based on its tests). It detects the problem in PR88232
(the feature request) as well as the one in PR 87742,
an unrelated problem report that was root-caused to bug due
to infinite recursion.
... and I'm thus confirming that it also would have caught
PR101204 "infinite recursion in gtype-desc.c since
r12-1801-g7036e9ef462fde8181bece4ac4e03f3aa27204dc":
I'd hoped it would pick it up but didn't take the time to verify
it did. Thanks for double-checking that!
Martin
[...]
gtype-desc.c: In function ‘void gt_pch_nx(int_hash<unsigned int, 0,
4294967295>*, gt_pointer_operator, void*)’:
gtype-desc.c:11311:1: error: infinite recursion detected
[-Werror=infinite-recursion]
11311 | gt_pch_nx (int_hash<location_t,0,UINT_MAX>* x ATTRIBUTE_UNUSED,
| ^~~~~~~~~
gtype-desc.c:11315:15: note: recursive call
11315 | gt_pch_nx (&((*x)), op, cookie);
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [gtype-desc.o] Error 1
make[3]: Leaving directory `[...]/build-gcc/gcc'
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory `[...]/build-gcc'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `[...]/build-gcc'
make: *** [all] Error 2
That's with recent fix-up commit c71cb26a9e841888f52e4bfcaad94c8f8ecb4fdb
"Get rid of infinite recursion for 'typedef' used with GTY-marked
'gcc/diagnostic-spec.h:nowarn_map' [PR101204, PR103157]" temporarily
reverted (and commit f861ed8b29a5eb6164d1ddbcfbb6232dddae713f
"Use 'location_hash' for 'gcc/diagnostic-spec.h:nowarn_map'" as a
prerequisite, too).
Grüße
Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht
München, HRB 106955