/* { 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" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */