blob: 41e851388589fcdd78a5ba3e2b97761908b346d0 [file] [log] [blame]
/* PR tree-optimization/48483 - Construct from yourself w/o warning
{ dg-do compile }
{ dg-options "-Wall" } */
void sink (int);
struct B
{
int x;
};
struct A
{
B& b;
A (B &x): b(x) { }
};
__attribute__ ((noipa)) void test_c0_O0 ()
{
A a (a.b); // { dg-warning "'a.A::b' is used uninitialized" }
sink (a.b.x);
}
__attribute__ ((noipa)) int test_c3_O0 (void)
{
struct S { int a; } s;
return s.a; // { dg-warning "s.test_c3_O0\\\(\\\)::S::a' is used uninitialized" }
}
#pragma GCC optimize ("1")
__attribute__ ((noipa)) void test_c0_O1 ()
{
A a (a.b); // { dg-warning "'a.A::b' is used uninitialized" }
sink (a.b.x);
}
__attribute__ ((noipa)) int test_c3_O1 (void)
{
struct S { int a; } s;
return s.a; // { dg-warning "s.test_c3_O1\\\(\\\)::S::a' is used uninitialized" }
}
#pragma GCC optimize ("2")
__attribute__ ((noipa)) void test_c0_O2 ()
{
A a (a.b); // { dg-warning "'a.A::b' is used uninitialized" }
sink (a.b.x);
}
__attribute__ ((noipa)) int test_c3_O2 (void)
{
struct S { int a; } s;
return s.a; // { dg-warning "s.test_c3_O2\\\(\\\)::S::a' is used uninitialized" }
}