1 /* { dg-skip-if "ptxas seg faults" { nvptx-*-* } { "-O3*" } { "" } } */
2 
3 extern int f2(void);
4 extern int f3(void);
5 extern void f1(void);
6 
7 void
ff(int fname,int part,int nparts)8 ff(int fname, int part, int nparts)
9 {
10   if (fname)  /* bb 0 */
11     {
12       if (nparts)  /* bb 1 */
13 	f1();  /* bb 2 */
14     }
15   else
16     fname = 2; /* bb 3  */
17 
18   /* bb 4 is the branch to bb 10
19      (bb 10 is physically at the end of the loop) */
20   while (f3() /* bb 10 */)
21     {
22       if (nparts /* bb 5 */ && f2() /* bb 6 */)
23 	{
24 	  f1();  /* bb 7 ... */
25 	  nparts = part;
26 	  if (f3())  /* ... bb 7 */
27 	    f1();  /* bb 8 */
28 	  f1(); /* bb 9 */
29 	  break;
30 	}
31     }
32 
33   if (nparts)  /* bb 11 */
34     f1(); /* bb 12 */
35   return; /* bb 13 */
36 }
37 
main(void)38 int main(void)
39 {
40   ff(0, 1, 0);
41   return 0;
42 }
43 
f3(void)44 int f3(void) { static int x = 0; x = !x; return x; }
f1(void)45 void f1(void) { abort(); }
f2(void)46 int f2(void) { abort(); }
47