49 lines
881 B
C
49 lines
881 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
|
|
|
/* Check that the initial values are honored when necessary. */
|
|
|
|
void link_error (void);
|
|
|
|
/* The call to link_error cannot be eliminated in this case. */
|
|
|
|
void test1 (int param1, int param2, int x)
|
|
{
|
|
if (param1)
|
|
x = 3;
|
|
|
|
if (param2)
|
|
if (x != 3)
|
|
link_error ();
|
|
}
|
|
|
|
/* The call to link_error cannot be eliminated in this case. */
|
|
|
|
int global;
|
|
void test2 (int param1, int param2)
|
|
{
|
|
if (param1)
|
|
global = 3;
|
|
|
|
if (param2)
|
|
if (global != 3)
|
|
link_error ();
|
|
}
|
|
|
|
/* In this case, we can eliminate the call, as unless "local" is set
|
|
to 3, its value is undefined. */
|
|
|
|
void test3 (int param1, int param2)
|
|
{
|
|
int local;
|
|
|
|
if (param1)
|
|
local = 3;
|
|
|
|
if (param2)
|
|
if (local != 3)
|
|
link_error ();
|
|
}
|
|
|
|
/* { dg-final { scan-tree-dump-times "link_error" 2 "optimized" } } */
|