summaryrefslogtreecommitdiffstats
path: root/test/Sema/return.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Sema/return.c')
-rw-r--r--test/Sema/return.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/Sema/return.c b/test/Sema/return.c
index 3ab23f4..fab6a82 100644
--- a/test/Sema/return.c
+++ b/test/Sema/return.c
@@ -222,3 +222,20 @@ void test32() {
void test33() {
if (j) while (1) { }
}
+
+// Test that 'static inline' functions are only analyzed for CFG-based warnings
+// when they are used.
+static inline int si_has_missing_return() {} // no-warning
+static inline int si_has_missing_return_2() {}; // expected-warning{{control reaches end of non-void function}}
+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}}
+
+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}}
+
OpenPOWER on IntegriCloud