diff options
Diffstat (limited to 'test/Sema/return.c')
-rw-r--r-- | test/Sema/return.c | 17 |
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}} + |