diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -61,7 +61,7 @@ "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, 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 --- 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 @@ 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 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 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 @@ 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 @@ template 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 @@ 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 sum() { return value + sum(); @@ -157,7 +157,7 @@ return 0; return Wrapper::run(); } - static int run2() { // expected-warning{{call itself}} + static int run2() { // expected-warning{{to understand recursion}} return run2(); } };