PR tree-optimization/48483 - Construct from yourself w/o warning

gcc/testsuite/ChangeLog:
	PR tree-optimization/48483
	* g++.dg/warn/uninit-pr48483.C: New test.
This commit is contained in:
Martin Sebor 2021-03-25 16:08:00 -06:00
parent 1b229a3050
commit 26e80a4968

View File

@ -0,0 +1,56 @@
/* 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" }
}