1 /* { dg-do compile } */ 2 /* { dg-options "-O1 -fdump-tree-dom2" } */ 3 4 5 struct rtx_def; 6 typedef struct rtx_def *rtx; 7 struct rtvec_def; 8 typedef struct rtvec_def *rtvec; 9 union tree_node; 10 typedef union tree_node *tree; 11 typedef struct mem_attrs 12 { 13 long alias; 14 } 15 mem_attrs; 16 union rtunion_def 17 { 18 mem_attrs *rtmem; 19 }; 20 typedef union rtunion_def rtunion; 21 struct rtx_def 22 { 23 int code; 24 rtunion fld[1]; 25 }; 26 struct tree_decl 27 { 28 rtx rtl; 29 }; 30 union tree_node 31 { 32 struct tree_decl decl; 33 }; 34 int make_decl_rtl (tree, void *); 35 long get_alias_set(t)36get_alias_set (t) 37 tree t; 38 { 39 if (t->decl.rtl != (void *) 0) 40 return (((t->decl.rtl->fld[1]).rtmem) == 41 0 ? 0 42 : ((((t->decl. 43 rtl ? 0 : (make_decl_rtl (t, ((void *) 0)), 44 t->decl.rtl)))->fld[1]).rtmem)->alias); 45 } 46 47 /* The calls to make_decl_rtl should be eliminated. */ 48 /* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom2" } } */ 49 50 /* There should be two IF conditionals. */ 51 /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */ 52 53 /* There should be one load of decl.rtl. */ 54 /* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom2"} } */ 55 56 /* There should be two loads of rtmem. */ 57 /* { dg-final { scan-tree-dump-times "rtmem" 2 "dom2"} } */ 58 59 /* There should be one load of alias. */ 60 /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */ 61 62