[PATCH] implement -Winfinite-recursion [PR88232]
Martin Sebor
msebor@gmail.com
Wed Nov 24 16:36:10 GMT 2021
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
>
More information about the Gcc-patches
mailing list