1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -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 void make_decl_rtl (tree, int); 35 long get_alias_set(t,z)36get_alias_set (t,z) 37 tree t; 38 rtx z; 39 { 40 if (t->decl.rtl && (((t->decl.rtl ? z 41 : (make_decl_rtl (t, 0), t->decl.rtl)))->code)) 42 return (((((t->decl.rtl ? z : (make_decl_rtl (t, 0), t->decl.rtl)))-> 43 fld[1]).rtmem) == 0 ? 0 : ((((( 44 { 45 t;} 46 )->decl. 47 rtl ? z : (make_decl_rtl (t, 0), 48 t->decl.rtl)))-> 49 fld[1]).rtmem)->alias); 50 } 51 52 /* The calls to make_decl_rtl should be eliminated 53 /* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom2" } } */ 54 55 /* There should be three IF conditionals. */ 56 /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */ 57 58 /* There should be one loads of decl.rtl. */ 59 /* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom2"} } */ 60 61 /* There should be one load of code. */ 62 /* { dg-final { scan-tree-dump-times "code" 1 "dom2"} } */ 63 64 /* There should be one load of rtmem. */ 65 /* { dg-final { scan-tree-dump-times "rtmem" 1 "dom2"} } */ 66 67 /* There should be one load of alias. */ 68 /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */ 69 70