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)16push_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)28find_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