1 /* { dg-do compile } */
2 /* { dg-options "-O2 -w -fdump-tree-dom2-details" } */
3 
4 typedef struct rtx_def *rtx;
5 struct rtx_def
6 {
7   int code;
8   rtx rt_rtx;
9 };
10 rtx
try_combine(rtx i1,rtx newpat)11 try_combine (rtx i1, rtx newpat)
12 {
13   rtx temp;
14   if (i1 && (temp = ((((((newpat->rt_rtx, ((((temp)->code) == 42)))))))))
15       && ((temp =
16 	(((((((((((newpat)->rt_rtx),
17 		 ((((temp)->code) == 42) && arf ())))))))))))))
18     ;
19   else if (i1 && foo ());
20 }
21 
22 /* There should be four tests against i1.  One from the hash table
23    dumps, one from the EVRP analyzer one from EVRP evaluation and one
24    in the code itself.  */
25 /* { dg-final { scan-tree-dump-times "if .i1_" 4 "dom2"} } */
26 
27 /* There should be no actual jump threads realized by DOM.  The
28    legitimize jump threads are handled in VRP and those discovered
29    by DOM are subsumed by collapsing a conditional.  */
30 /* { dg-final { scan-tree-dump-not "Threaded" "dom2"} } */
31