https://github.com/vortex73 created https://github.com/llvm/llvm-project/pull/98763
None >From 8ecf1b30678503f96d41112feb3ac87944c13158 Mon Sep 17 00:00:00 2001 From: Vortex <nsreekum...@gmail.com> Date: Sun, 14 Jul 2024 00:22:43 +0530 Subject: [PATCH] [clang] [Diagnostic] Clarify -Winfinite-recursion message --- .../clang/Basic/DiagnosticSemaKinds.td | 2 +- .../test/SemaCXX/warn-infinite-recursion.cpp | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 0ea3677355169..53c38bb543409 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -60,7 +60,7 @@ def note_remove_max_call : Note< "remove call to max function and unsigned zero argument">; def warn_infinite_recursive_function : Warning< - "all paths through this function will call itself">, + "in order to understand recursion, you must first understand recursion">, InGroup<InfiniteRecursion>, DefaultIgnore; def warn_comma_operator : Warning<"possible misuse of comma operator here">, diff --git a/clang/test/SemaCXX/warn-infinite-recursion.cpp b/clang/test/SemaCXX/warn-infinite-recursion.cpp index d0f3fe7b164e1..b57b417d13cd2 100644 --- a/clang/test/SemaCXX/warn-infinite-recursion.cpp +++ b/clang/test/SemaCXX/warn-infinite-recursion.cpp @@ -1,10 +1,10 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify -Winfinite-recursion -void a() { // expected-warning{{call itself}} +void a() { // expected-warning{{to understand recursion}} a(); } -void b(int x) { // expected-warning{{call itself}} +void b(int x) { // expected-warning{{to understand recursion}} if (x) b(x); else @@ -16,7 +16,7 @@ void c(int x) { c(5); } -void d(int x) { // expected-warning{{call itself}} +void d(int x) { // expected-warning{{to understand recursion}} if (x) ++x; return d(x); @@ -29,7 +29,7 @@ void f(); void e() { f(); } void f() { e(); } -void g() { // expected-warning{{call itself}} +void g() { // expected-warning{{to understand recursion}} while (true) g(); @@ -42,14 +42,14 @@ void h(int x) { } } -void i(int x) { // expected-warning{{call itself}} +void i(int x) { // expected-warning{{to understand recursion}} while (x < 5) { --x; } i(0); } -int j() { // expected-warning{{call itself}} +int j() { // expected-warning{{to understand recursion}} return 5 + j(); } @@ -80,11 +80,11 @@ class S { void b(); }; -void S::a() { // expected-warning{{call itself}} +void S::a() { // expected-warning{{to understand recursion}} return a(); } -void S::b() { // expected-warning{{call itself}} +void S::b() { // expected-warning{{to understand recursion}} int i = 0; do { ++i; @@ -95,8 +95,8 @@ void S::b() { // expected-warning{{call itself}} template<class member> struct T { member m; - void a() { return a(); } // expected-warning{{call itself}} - static void b() { return b(); } // expected-warning{{call itself}} + void a() { return a(); } // expected-warning{{to understand recursion}} + static void b() { return b(); } // expected-warning{{to understand recursion}} }; void test_T() { @@ -107,13 +107,13 @@ void test_T() { class U { U* u; - void Fun() { // expected-warning{{call itself}} + void Fun() { // expected-warning{{to understand recursion}} u->Fun(); } }; // No warnings on templated functions -// sum<0>() is instantiated, does recursively call itself, but never runs. +// sum<0>() is instantiated, does recursively to understand recursion, but never runs. template <int value> int sum() { return value + sum<value/2>(); @@ -157,7 +157,7 @@ struct Wrapper { return 0; return Wrapper<x/2>::run(); } - static int run2() { // expected-warning{{call itself}} + static int run2() { // expected-warning{{to understand recursion}} return run2(); } }; @@ -194,7 +194,7 @@ struct Q { }; Q q; -Q &evaluated_recursive_function(int x) { // expected-warning{{call itself}} +Q &evaluated_recursive_function(int x) { // expected-warning{{to understand recursion}} (void)typeid(evaluated_recursive_function(x)); // expected-warning {{expression with side effects will be evaluated despite being used as an operand to 'typeid'}} return q; } @@ -204,11 +204,11 @@ int unevaluated_recursive_function() { return 0; } -void func1(int i) { // expected-warning {{call itself}} +void func1(int i) { // expected-warning {{to understand recursion}} if (i || !i) func1(i); } -void func2(int i) { // expected-warning {{call itself}} +void func2(int i) { // expected-warning {{to understand recursion}} if (!i && i) {} else func2(i); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits