1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized-raw" } */
5 int f(unsigned a
, unsigned b
) {
7 carry
= __builtin_sub_overflow(a
, b
, &r
);
10 int g(unsigned a
, unsigned b
) {
12 carry
= __builtin_sub_overflow(a
, b
, &r
);
15 int h(unsigned a
, unsigned b
) {
17 carry
= __builtin_sub_overflow(a
, b
, &r
);
20 int i(unsigned a
, unsigned b
) {
22 carry
= __builtin_sub_overflow(a
, b
, &r
);
25 int j(unsigned a
, unsigned b
) {
27 carry
= __builtin_add_overflow(a
, b
, &r
);
30 int j2(unsigned a
, unsigned b
) {
32 carry
= __builtin_add_overflow(a
, b
, &r
);
35 int k(unsigned a
, unsigned b
) {
37 carry
= __builtin_add_overflow(a
, b
, &r
);
40 int k2(unsigned a
, unsigned b
) {
42 carry
= __builtin_add_overflow(a
, b
, &r
);
45 int l(unsigned a
, unsigned b
) {
47 carry
= __builtin_add_overflow(a
, b
, &r
);
50 int l2(unsigned a
, unsigned b
) {
52 carry
= __builtin_add_overflow(a
, b
, &r
);
55 int m(unsigned a
, unsigned b
) {
57 carry
= __builtin_add_overflow(a
, b
, &r
);
60 int m2(unsigned a
, unsigned b
) {
62 carry
= __builtin_add_overflow(a
, b
, &r
);
66 /* { dg-final { scan-tree-dump-not "(le|lt|ge|gt)_expr" "optimized" } } */
67 /* { dg-final { scan-tree-dump-times "ADD_OVERFLOW" 8 "optimized" } } */
68 /* { dg-final { scan-tree-dump-times "SUB_OVERFLOW" 4 "optimized" } } */