111
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-O -fdump-tree-dce3" } */
|
|
3
|
|
4 struct rtx_def;
|
|
5 typedef struct rtx_def *rtx;
|
|
6 union tree_node;
|
|
7 typedef union tree_node *tree;
|
|
8 typedef struct mem_attrs
|
|
9 {
|
|
10 int foo;
|
|
11
|
|
12 } mem_attrs;
|
|
13 union rtunion_def
|
|
14 {
|
|
15 mem_attrs *rtmem;
|
|
16 };
|
|
17 typedef union rtunion_def rtunion;
|
|
18 struct rtx_def
|
|
19 {
|
|
20 rtunion fld[1];
|
|
21 };
|
|
22 struct tree_decl
|
|
23 {
|
|
24 rtx rtl;
|
|
25 };
|
|
26 union tree_node
|
|
27 {
|
|
28 struct tree_decl decl;
|
|
29 };
|
|
30 int make_decl_rtl (tree, int);
|
|
31 void *
|
|
32 get_alias_set (t)
|
|
33 tree t;
|
|
34 {
|
|
35 long set;
|
|
36 if (t->decl.rtl)
|
|
37 return (t->decl.rtl->fld[1].rtmem
|
|
38 ? 0
|
|
39 : (((t->decl.rtl ? t->decl.rtl: (make_decl_rtl (t, 0), t->decl.rtl)))->fld[1]).rtmem);
|
|
40 return (void*)-1;
|
|
41 }
|
|
42
|
|
43 /* There should be precisely one load of ->decl.rtl. If there is
|
|
44 more than, then the dominator optimizations failed. */
|
|
45 /* { dg-final { scan-tree-dump-times "->decl\\.rtl" 1 "dce3"} } */
|
|
46
|
|
47 /* There should be no loads of .rtmem since the complex return statement
|
|
48 is just "return 0". */
|
|
49 /* { dg-final { scan-tree-dump-times ".rtmem" 0 "dce3"} } */
|
|
50
|
|
51 /* There should be one IF statement (the complex return statement should
|
|
52 collapse down to a simple return 0 without any conditionals). */
|
|
53 /* { dg-final { scan-tree-dump-times "if " 1 "dce3"} } */
|
|
54
|