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