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 @@ -576,20 +576,20 @@ "thread-local storage is not supported for the current target">; def warn_maybe_falloff_nonvoid_function : Warning< - "control may reach end of non-void function">, + "non-void function does not return a value in all control paths">, InGroup; def warn_falloff_nonvoid_function : Warning< - "control reaches end of non-void function">, + "non-void function does not return a value">, InGroup; def err_maybe_falloff_nonvoid_block : Error< - "control may reach end of non-void block">; + "non-void block does not return a value in all control paths">; def err_falloff_nonvoid_block : Error< - "control reaches end of non-void block">; + "non-void block does not return a value">; def warn_maybe_falloff_nonvoid_coroutine : Warning< - "control may reach end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'">, + "non-void coroutine does not return a value in all control paths">, InGroup; def warn_falloff_nonvoid_coroutine : Warning< - "control reaches end of coroutine; which is undefined behavior because the promise type %0 does not declare 'return_void()'">, + "non-void coroutine does not return a value">, InGroup; def warn_suggest_noreturn_function : Warning< "%select{function|method}0 %1 could be declared with attribute 'noreturn'">, @@ -6858,10 +6858,10 @@ def err_noreturn_lambda_has_return_expr : Error< "lambda declared 'noreturn' should not return">; def warn_maybe_falloff_nonvoid_lambda : Warning< - "control may reach end of non-void lambda">, + "non-void lambda does not return a value in all control paths">, InGroup; def warn_falloff_nonvoid_lambda : Warning< - "control reaches end of non-void lambda">, + "non-void lambda does not return a value">, InGroup; def err_access_lambda_capture : Error< // The ERRORs represent other special members that aren't constructors, in diff --git a/clang/test/Sema/block-return-1.c b/clang/test/Sema/block-return-1.c --- a/clang/test/Sema/block-return-1.c +++ b/clang/test/Sema/block-return-1.c @@ -2,5 +2,5 @@ int j; void foo() { - ^ (void) { if (j) return 1; }(); // expected-error {{control may reach end of non-void block}} + ^ (void) { if (j) return 1; }(); // expected-error {{non-void block does not return a value in all control paths}} } diff --git a/clang/test/Sema/block-return-3.c b/clang/test/Sema/block-return-3.c --- a/clang/test/Sema/block-return-3.c +++ b/clang/test/Sema/block-return-3.c @@ -1,5 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks void foo() { - ^ int (void) { }(); // expected-error {{control reaches end of non-void block}} + ^ int (void) { }(); // expected-error {{non-void block does not return a value}} } diff --git a/clang/test/Sema/freemain.c b/clang/test/Sema/freemain.c --- a/clang/test/Sema/freemain.c +++ b/clang/test/Sema/freemain.c @@ -6,4 +6,4 @@ void* main(void* context, long size) { if (context) return allocate(size); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} diff --git a/clang/test/Sema/return.c b/clang/test/Sema/return.c --- a/clang/test/Sema/return.c +++ b/clang/test/Sema/return.c @@ -17,7 +17,7 @@ } int test1() { -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test2() { a: goto a; @@ -26,7 +26,7 @@ int test3() { goto a; a: ; -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} void halt() { @@ -54,11 +54,11 @@ int test7() { unknown(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test8() { (void)(1 + unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int halt3() __attribute__((noreturn)); @@ -68,11 +68,11 @@ int test10() { (void)(unknown() || halt3()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int test11() { (void)(unknown() && halt3()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int test12() { (void)(halt3() || unknown()); @@ -84,27 +84,27 @@ int test14() { (void)(1 || unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test15() { (void)(0 || unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test16() { (void)(0 && unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test17() { (void)(1 && unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test18() { (void)(unknown_nohalt() && halt3()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int test19() { (void)(unknown_nohalt() && unknown()); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test20() { int i; @@ -112,7 +112,7 @@ return 0; else if (0) return 2; -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int test21() { int i; @@ -125,7 +125,7 @@ int test22() { int i; switch (i) default: ; -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int test23() { int i; @@ -135,7 +135,7 @@ case 2: return 2; } -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int test24() { int i; @@ -155,7 +155,7 @@ int test26() { 0 ? halt3() : unknown(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int j; void (*fptr)() __attribute__((noreturn)); @@ -231,19 +231,19 @@ // Test that 'static inline' functions are only analyzed for CFG-based warnings // when they are used. -static inline int si_has_missing_return() {} // expected-warning{{control reaches end of non-void function}} -static inline int si_has_missing_return_2() {}; // expected-warning{{control reaches end of non-void function}} +static inline int si_has_missing_return() {} // expected-warning{{non-void function does not return a value}} +static inline int si_has_missing_return_2() {}; // expected-warning{{non-void function does not return a value}} static inline int si_forward(); static inline int si_has_missing_return_3(int x) { if (x) return si_has_missing_return_3(x+1); -} // expected-warning{{control may reach end of non-void function}} +} // expected-warning{{non-void function does not return a value in all control paths}} int test_static_inline(int x) { si_forward(); return x ? si_has_missing_return_2() : si_has_missing_return_3(x); } -static inline int si_forward() {} // expected-warning{{control reaches end of non-void function}} +static inline int si_forward() {} // expected-warning{{non-void function does not return a value}} // Test warnings on ignored qualifiers on return types. const int ignored_c_quals(); // expected-warning{{'const' type qualifier on return type has no effect}} @@ -319,7 +319,7 @@ default: break; } -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} // sizeof(long) test. int sizeof_long() { @@ -338,4 +338,4 @@ }); else return 0; -} // no-warning (used to be "control may reach end of non-void function") +} // no-warning (used to be "non-void function does not return a value in all control paths") diff --git a/clang/test/SemaCXX/attr-noreturn.cpp b/clang/test/SemaCXX/attr-noreturn.cpp --- a/clang/test/SemaCXX/attr-noreturn.cpp +++ b/clang/test/SemaCXX/attr-noreturn.cpp @@ -10,7 +10,7 @@ int &test1() { a.nofail(); - } // expected-warning {{control reaches end of non-void function}} + } // expected-warning {{non-void function does not return a value}} int &test2() { a.fail(); diff --git a/clang/test/SemaCXX/coreturn.cpp b/clang/test/SemaCXX/coreturn.cpp --- a/clang/test/SemaCXX/coreturn.cpp +++ b/clang/test/SemaCXX/coreturn.cpp @@ -88,12 +88,12 @@ int test2() { co_await a; -} // expected-warning {{control reaches end of coroutine; which is undefined behavior because the promise type 'std::experimental::coroutine_traits::promise_type' (aka 'promise_int') does not declare 'return_void()'}} +} // expected-warning {{non-void coroutine does not return a value}} int test2a(bool b) { if (b) co_return 42; -} // expected-warning {{control may reach end of coroutine; which is undefined behavior because the promise type 'std::experimental::coroutine_traits::promise_type' (aka 'promise_int') does not declare 'return_void()'}} +} // expected-warning {{non-void coroutine does not return a value in all control paths}} int test3() { co_await a; @@ -107,12 +107,12 @@ void test5(int) { co_await a; -} // expected-warning {{control reaches end of coroutine; which is undefined behavior because}} +} // expected-warning {{non-void coroutine does not return a value}} void test6(int x) { if (x) co_return 42; -} // expected-warning {{control may reach end of coroutine; which is undefined behavior because}} +} // expected-warning {{non-void coroutine does not return a value in all control paths}} void test7(int y) { if (y) @@ -132,9 +132,9 @@ VoidTagReturnValue test10() { co_await a; -} // expected-warning {{control reaches end of coroutine}} +} // expected-warning {{non-void coroutine does not return a value}} VoidTagReturnValue test11(bool b) { if (b) co_return 42; -} // expected-warning {{control may reach end of coroutine}} +} // expected-warning {{non-void coroutine does not return a value in all control paths}} diff --git a/clang/test/SemaCXX/return-noreturn.cpp b/clang/test/SemaCXX/return-noreturn.cpp --- a/clang/test/SemaCXX/return-noreturn.cpp +++ b/clang/test/SemaCXX/return-noreturn.cpp @@ -26,7 +26,7 @@ } int f2_positive(int x) { switch (x) { default: ; } - } // expected-warning {{control reaches end of non-void function}} + } // expected-warning {{non-void function does not return a value}} int f3(int x) { switch (x) { default: { pr6884_abort_struct(); } } } @@ -46,7 +46,7 @@ pr6884_abort_struct *p = new pr6884_abort_struct(); delete p; } - } // expected-warning {{control reaches end of non-void function}} + } // expected-warning {{non-void function does not return a value}} // Test that these constructs work even when extraneous blocks are created // before and after the switch due to implicit destructors. @@ -61,7 +61,7 @@ int g2_positive(int x) { other o; switch (x) { default: ; } - } // expected-warning {{control reaches end of non-void function}} + } // expected-warning {{non-void function does not return a value}} int g3(int x) { other o; switch (x) { default: { pr6884_abort_struct(); } } @@ -140,7 +140,7 @@ default: break; } -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} void PR9412_f() { PR9412_t(); // expected-note {{in instantiation of function template specialization 'PR9412_t' requested here}} @@ -165,7 +165,7 @@ int testTernaryStaticallyConditionalRetrunOnTrue() { true ? Return() : NoReturn(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int testTernaryStaticallyConditionalNoretrunOnFalse() { false ? Return() : NoReturn(); @@ -173,23 +173,23 @@ int testTernaryStaticallyConditionalRetrunOnFalse() { false ? NoReturn() : Return(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int testTernaryConditionalNoreturnTrueBranch(bool value) { value ? (NoReturn() || NoReturn()) : Return(); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testTernaryConditionalNoreturnFalseBranch(bool value) { value ? Return() : (NoReturn() || NoReturn()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testConditionallyExecutedComplexTernaryTrueBranch(bool value) { value || (true ? NoReturn() : true); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testConditionallyExecutedComplexTernaryFalseBranch(bool value) { value || (false ? true : NoReturn()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testStaticallyExecutedLogicalOrBranch() { false || NoReturn(); @@ -201,19 +201,19 @@ int testStaticallySkippedLogicalOrBranch() { true || NoReturn(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int testStaticallySkppedLogicalAndBranch() { false && NoReturn(); -} // expected-warning {{control reaches end of non-void function}} +} // expected-warning {{non-void function does not return a value}} int testConditionallyExecutedComplexLogicalBranch(bool value) { value || (true && NoReturn()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testConditionallyExecutedComplexLogicalBranch2(bool value) { (true && value) || (true && NoReturn()); -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int testConditionallyExecutedComplexLogicalBranch3(bool value) { (false && (Return() || true)) || (true && NoReturn()); @@ -236,7 +236,7 @@ int bar() { X work([](){ Fatal(); }); foo(); - } // expected-warning {{control reaches end of non-void function}} + } // expected-warning {{non-void function does not return a value}} int baz() { FatalCopy fc; @@ -250,12 +250,12 @@ int functionTryBlock1(int s) try { return 0; } catch (...) { -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int functionTryBlock2(int s) try { } catch (...) { return 0; -} // expected-warning {{control may reach end of non-void function}} +} // expected-warning {{non-void function does not return a value in all control paths}} int functionTryBlock3(int s) try { return 0; diff --git a/clang/test/SemaCXX/warn-missing-noreturn.cpp b/clang/test/SemaCXX/warn-missing-noreturn.cpp --- a/clang/test/SemaCXX/warn-missing-noreturn.cpp +++ b/clang/test/SemaCXX/warn-missing-noreturn.cpp @@ -91,7 +91,7 @@ int rdar8875247_test() { rdar8875247 f; -} // expected-warning{{control reaches end of non-void function}} +} // expected-warning{{non-void function does not return a value}} struct rdar8875247_B { rdar8875247_B(); diff --git a/clang/test/SemaTemplate/late-parsing-eager-instantiation.cpp b/clang/test/SemaTemplate/late-parsing-eager-instantiation.cpp --- a/clang/test/SemaTemplate/late-parsing-eager-instantiation.cpp +++ b/clang/test/SemaTemplate/late-parsing-eager-instantiation.cpp @@ -15,8 +15,8 @@ char data() { visit([](auto buffer) -> char { // expected-note {{in instantiation}} buffer->data(); - }); // expected-warning {{control reaches end of non-void lambda}} - } // expected-warning {{control reaches end of non-void function}} + }); // expected-warning {{non-void lambda does not return a value}} + } // expected-warning {{non-void function does not return a value}} }; // pr34185