| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-dom3" } */ |
| |
| |
| struct rtx_def; |
| typedef struct rtx_def *rtx; |
| struct rtvec_def; |
| typedef struct rtvec_def *rtvec; |
| union tree_node; |
| typedef union tree_node *tree; |
| typedef struct mem_attrs |
| { |
| long alias; |
| } |
| mem_attrs; |
| union rtunion_def |
| { |
| mem_attrs *rtmem; |
| }; |
| typedef union rtunion_def rtunion; |
| struct rtx_def |
| { |
| int code; |
| rtunion fld[1]; |
| }; |
| struct tree_decl |
| { |
| rtx rtl; |
| }; |
| union tree_node |
| { |
| struct tree_decl decl; |
| }; |
| long |
| get_alias_set (t,z) |
| tree t; |
| rtx z; |
| { |
| if (t->decl.rtl && (((t->decl.rtl ? z |
| : (make_decl_rtl (t, 0), t->decl.rtl)))->code)) |
| return (((((t->decl.rtl ? z : (make_decl_rtl (t, 0), t->decl.rtl)))-> |
| fld[1]).rtmem) == 0 ? 0 : ((((( |
| { |
| t;} |
| )->decl. |
| rtl ? z : (make_decl_rtl (t, 0), |
| t->decl.rtl)))-> |
| fld[1]).rtmem)->alias); |
| } |
| |
| /* The calls to make_decl_rtl should be eliminated |
| /* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom3" } } */ |
| |
| /* There should be three IF conditionals. */ |
| /* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */ |
| |
| /* There should be one loads of decl.rtl. */ |
| /* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom3"} } */ |
| |
| /* There should be one load of code. */ |
| /* { dg-final { scan-tree-dump-times "code" 1 "dom3"} } */ |
| |
| /* There should be one load of rtmem. */ |
| /* { dg-final { scan-tree-dump-times "rtmem" 1 "dom3"} } */ |
| |
| /* There should be one load of alias. */ |
| /* { dg-final { scan-tree-dump-times "->alias" 1 "dom3"} } */ |