PR testsuite/52641
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / 20030731-1.c
blobf90acd078ecf6434fea823309a4906fff402d4a2
1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom2" } */
4 extern void abort (void);
6 struct rtx_def;
7 typedef struct rtx_def *rtx;
8 struct rtvec_def;
9 typedef struct rtvec_def *rtvec;
10 union tree_node;
11 typedef union tree_node *tree;
12 struct rtx_def
14 int code;
15 int mode;
16 unsigned int in_struct:1;
18 struct tree_common
20 int code;
22 struct tree_decl
24 rtx rtl;
26 union tree_node
28 struct tree_common common;
29 struct tree_decl decl;
31 rtx
32 store_expr (exp, target, want_value)
33 tree exp;
34 rtx target;
35 int want_value;
37 if (exp->common.code == 42)
38 abort ();
39 else if (queued_subexp_p (target))
41 blah (target->mode);
42 if (target->code)
43 abort ();
45 else
47 if (target->code && (__extension__({target;})->in_struct));
50 if ((target != (exp->decl.rtl
51 ? (exp->decl.rtl
52 ? exp->decl.rtl
53 : (make_decl_rtl (exp, 0), exp->decl.rtl))
54 : 0))
55 && expr_size (exp))
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
65 stronger. */
66 /* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom2" { xfail *-*-* } } } */
67 /* { dg-final { cleanup-tree-dump "dom2" } } */