1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom2" } */
4 extern void abort (void);
7 typedef struct rtx_def
*rtx
;
9 typedef struct rtvec_def
*rtvec
;
11 typedef union tree_node
*tree
;
16 unsigned int in_struct
:1;
28 struct tree_common common
;
29 struct tree_decl decl
;
32 store_expr (exp
, target
, want_value
)
37 if (exp
->common
.code
== 42)
39 else if (queued_subexp_p (target
))
47 if (target
->code
&& (__extension__({target
;})->in_struct
));
50 if ((target
!= (exp
->decl
.rtl
53 : (make_decl_rtl (exp
, 0), exp
->decl
.rtl
))
59 /* All paths to the test "target != 0" occurring in the final IF statement
60 dereference target. Thus target can not have the value zero at that
61 point and the test should have been eliminated. */
62 /* ??? The dominator walker (A) doesn't merge this data at joins and
63 (B) only looks at immediate dominators, and only queued_subexp_p
64 immediately dominates the comparison in question. We need something
66 /* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom2" { xfail *-*-* } } } */
67 /* { dg-final { cleanup-tree-dump "dom2" } } */