1 /* More sequence point warning tests */
2 /* { dg-do compile } */
3 /* { dg-options "-Wsequence-point" } */
5 struct s
{ struct s
*nxt
; int v
; } q
;
13 /* Test general-lvalue sequence point warnings */
14 (*p
) = (*p
)++; /* { dg-warning "undefined" "sequence point warning" } */
15 p
[3] = p
[3]++; /* { dg-warning "undefined" "sequence point warning" } */
16 p
[i
] = p
[i
]++; /* { dg-warning "undefined" "sequence point warning" } */
17 x
[3] = x
[3]++; /* { dg-warning "undefined" "sequence point warning" } */
18 q
.nxt
->nxt
->v
= q
.nxt
->nxt
->v
++; /* { dg-warning "undefined" "sequence point warning" } */
20 /* test expressions that appear elsewhere in the C grammar */
22 { int a
= i
-i
++; (void)a
;} /* { dg-warning "undefined" "sequence point warning" } */
24 if ((i
-i
++) != 0) /* { dg-warning "undefined" "sequence point warning" } */
25 return i
-i
++; /* { dg-warning "undefined" "sequence point warning" } */
27 for (i
-i
++;;) /* { dg-warning "undefined" "sequence point warning" } */
30 for (; (i
-i
++) != 0; ) /* { dg-warning "undefined" "sequence point warning" } */
33 for (;;i
-i
++) /* { dg-warning "undefined" "sequence point warning" } */
36 while ((i
-i
++) != 0) /* { dg-warning "undefined" "sequence point warning" } */
39 do {} while ((i
-i
++) != 0); /* { dg-warning "undefined" "sequence point warning" } */
41 switch (i
-i
++) { /* { dg-warning "undefined" "sequence point warning" } */