]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-17.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / ssa-dom-thread-17.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-dom2 -w" } */
3
4 struct rtx_def;
5 typedef struct rtx_def *rtx;
6 struct reload
7 {
8 rtx in;
9 rtx reg_rtx;
10 };
11 extern struct reload rld[(2 * 30 * (2 + 1))];
12 static rtx find_dummy_reload (rtx);
13 extern int frob ();
14 extern int arf ();
15 int
16 push_reload (rtx in, rtx out
17 )
18 {
19 int i;
20 if (out != 0 && in != out)
21 {
22 rld[i].reg_rtx = find_dummy_reload (out);
23 if (rld[i].reg_rtx == out)
24 rld[i].in = out;
25 }
26 }
27 rtx
28 find_dummy_reload (rtx real_out)
29 {
30 unsigned int nwords = frob ();
31 unsigned int regno = frob ();
32 unsigned int i;
33 for (i = 0; i < nwords; i++)
34 if (arf ())
35 break;
36 if (i == nwords)
37 return real_out;
38 return 0;
39 }
40
41 /* In the case where the call to find_dummy_reload returns 0,
42 the final test in push_reload will never be true and it will
43 be eliminated. */
44 /* { dg-final { scan-tree-dump-not "out_\[^\n\r]+ == 0" "dom2"} } */