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
push_reload(rtx in,rtx out)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
find_dummy_reload(rtx real_out)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"} } */
45