// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -verify %s void init(int *); void foo(void) { int i = ({ init(&i); i; }); } void foo_bad(void) { int i = ({ int z = i; // expected-warning{{variable 'i' is uninitialized when used within its own initialization}} init(&i); i; }); } struct widget { int x, y; }; void init2(struct widget *); void bar(void) { struct widget my_widget = ({ init2(&my_widget); my_widget; }); struct widget a = (init2(&a), a); } void bar_bad(void) { struct widget my_widget = ({ struct widget z = my_widget; // expected-warning{{variable 'my_widget' is uninitialized when used within its own initialization}} int x = my_widget.x; //FIXME: There should be an uninitialized warning here init2(&my_widget); my_widget; }); } void baz(void) { struct widget a = ({ struct widget b = ({ b = a; // expected-warning{{variable 'a' is uninitialized when used within its own initialization}} }); a; }); } void f(void) { struct widget *a = ({ init2(a); // expected-warning{{variable 'a' is uninitialized when used within its own initialization}} a; }); }