1 // RUN: %clang_cc1 -analyze -analyzer-checker=core.builtin -verify -DCHECK_FOR_CRASH %s 2 // RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s 3 4 #ifdef CHECK_FOR_CRASH 5 // expected-no-diagnostics 6 #endif 7 8 namespace PerformTrivialCopyForUndefs { 9 struct A { 10 int x; 11 }; 12 13 struct B { 14 A a; 15 }; 16 17 struct C { 18 B b; 19 }; 20 21 void foo() { 22 C c1; 23 C *c2; 24 #ifdef CHECK_FOR_CRASH 25 // If the value of variable is not defined and checkers that check undefined 26 // values are not enabled, performTrivialCopy should be able to handle the 27 // case with undefined values, too. 28 c1.b.a = c2->b.a; 29 #else 30 c1.b.a = c2->b.a; // expected-warning{{Function call argument is an uninitialized value}} 31 #endif 32 } 33 } 34 35