]> granicus.if.org Git - clang/commitdiff
Warn about invalid return statements by default.
authorSteve Naroff <snaroff@apple.com>
Thu, 30 Apr 2009 16:01:26 +0000 (16:01 +0000)
committerSteve Naroff <snaroff@apple.com>
Thu, 30 Apr 2009 16:01:26 +0000 (16:01 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70492 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
test/Analysis/null-deref-ps.c
test/Sema/return.c [new file with mode: 0644]

index 3a33a0678ed4aa3204b1cd0c82c7e5afa51bb144..6448e65bab91830fd67eaf197cf52b7e91f74dce 100644 (file)
@@ -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">;
index bd63c7edf0e7350bb2184e4027c34711598fda29..2b0ed0aadbcf7bf2082b95dccdf1805a9041e30e 100644 (file)
@@ -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;
diff --git a/test/Sema/return.c b/test/Sema/return.c
new file mode 100644 (file)
index 0000000..b32b2e9
--- /dev/null
@@ -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}}
+}
+