| /* Check that zero-displacement branches are used instead of branch-free |
| execution patterns. |
| This is usually handled by the *cset_zero patterns. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O1 -mzdcbranch" } */ |
| /* { dg-final { scan-assembler-not "subc|and|bra" } } */ |
| /* { dg-final { scan-assembler-times "bf\t0f" 1 } } */ |
| /* { dg-final { scan-assembler-times "bt\t0f" 1 } } */ |
| |
| int* |
| test_00 (int* s) |
| { |
| if (s[0] == 0) |
| if (!s[3]) |
| s = 0; |
| return s; |
| } |
| |
| int* |
| test_01 (int* s) |
| { |
| if (s[0] == 0) |
| if (s[3]) |
| s = 0; |
| return s; |
| } |