summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/opt/pr17902.C
blob: fc5b6541f8109ee939774a2a04bce23d68c17d32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* { dg-options "-O3" } */
/* { dg-do compile } */

void foo();
struct A { ~A(){ foo(); } };
struct B { A a; };
void bar()
{
    A a;
    bool b = false;
    int i, j;


    for (j=0; j<i; j++)
    {
        if (i) b=true;
        if (j && i) foo();
        if (j && i) i++;
    }


    for (j=0; j<i; j++)
        if ( !j || (j==1 && b && i) )
            B x;
}