forked from OSchip/llvm-project
Warn about invalid return statements by default.
This fixes <rdar://problem/6839489> 10A345: Clang does not warm about mismatched returns (void return from a bool function) Will implement -Wreturn-type, -Wno-return-type in another commit. llvm-svn: 70492
This commit is contained in:
parent
e6141a5d6f
commit
62e0cb0a22
|
@ -1604,7 +1604,7 @@ def err_first_argument_to_va_arg_not_of_type_va_list : Error<
|
|||
|
||||
def warn_return_missing_expr : Warning<
|
||||
"non-void %select{function|method}1 %0 should return a value">;
|
||||
def ext_return_missing_expr : Extension<
|
||||
def ext_return_missing_expr : ExtWarn<
|
||||
"non-void %select{function|method}1 %0 should return a value">;
|
||||
def ext_return_has_expr : ExtWarn<
|
||||
"void %select{function|method}1 %0 should not return a value">;
|
||||
|
|
|
@ -69,7 +69,7 @@ int f4_b() {
|
|||
*p = 5; // no-warning
|
||||
p = 0;
|
||||
}
|
||||
else return;
|
||||
else return; // expected-warning {{non-void function 'f4_b' should return a value}}
|
||||
|
||||
*p += 10; // expected-warning{{Dereference of null pointer}}
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ int* f10(int* p, signed char x, int y) {
|
|||
// This tests that our symbolication worked, and that we correctly test
|
||||
// x against 0 (with the same bitwidth).
|
||||
if (!x) {
|
||||
if (!p) return;
|
||||
if (!p) return; // expected-warning {{non-void function 'f10' should return a value}}
|
||||
*p = 10;
|
||||
}
|
||||
else p = 0;
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
// RUN: clang-cc %s -fsyntax-only -verify
|
||||
|
||||
// clang emits the following warning by default.
|
||||
// With GCC, -pedantic, -Wreturn-type or -Wall are required to produce the
|
||||
// following warning.
|
||||
int t14() {
|
||||
return; // expected-warning {{non-void function 't14' should return a value}}
|
||||
}
|
||||
|
Loading…
Reference in New Issue