1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-tree-dse1-details -fno-short-enums" } */ 3 /* { dg-skip-if "temporary variable for constraint_expr is never used" { msp430-*-* } } */ 4 5 enum constraint_expr_type 6 { 7 SCALAR, DEREF, ADDRESSOF 8 }; 9 typedef struct constraint_expr 10 { 11 enum constraint_expr_type type; 12 unsigned int var; 13 long offset; 14 } constraint_expr ; 15 typedef struct constraint 16 { 17 struct constraint_expr lhs; 18 struct constraint_expr rhs; 19 } constraint; 20 static _Bool constraint_expr_equal(struct constraint_expr x,struct constraint_expr y)21constraint_expr_equal (struct constraint_expr x, struct constraint_expr y) 22 { 23 return x.type == y.type && x.var == y.var && x.offset == y.offset; 24 } 25 26 _Bool constraint_equal(struct constraint a,struct constraint b)27constraint_equal (struct constraint a, struct constraint b) 28 { 29 return constraint_expr_equal (a.lhs, b.lhs) 30 && constraint_expr_equal (a.rhs, b.rhs); 31 } 32 33 /* { dg-final { scan-tree-dump-times "Deleted dead store: x = " 1 "dse1" } } */ 34 /* { dg-final { scan-tree-dump-times "Deleted dead store: y = " 1 "dse1" } } */ 35 36