diff options
Diffstat (limited to 'clang/test/Analysis/inline.c')
| -rw-r--r-- | clang/test/Analysis/inline.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/Analysis/inline.c b/clang/test/Analysis/inline.c index 9e64d33690d..6acbeb959ac 100644 --- a/clang/test/Analysis/inline.c +++ b/clang/test/Analysis/inline.c @@ -77,3 +77,16 @@ char *test_return_stack_memory_bad() { return x; // expected-warning {{stack memory associated}} } +// Test that passing a struct value with an uninitialized field does +// not trigger a warning if we are inlining and the body is available. +struct rdar10977037 { int x, y; }; +int test_rdar10977037_aux(struct rdar10977037 v) { return v.y; } +int test_rdar10977037_aux_2(struct rdar10977037 v); +int test_rdar10977037() { + struct rdar10977037 v; + v.y = 1; + v. y += test_rdar10977037_aux(v); // no-warning + return test_rdar10977037_aux_2(v); // expected-warning {{Passed-by-value struct argument contains uninitialized data}} +} + + |

