| /* Check that compare-branch is inverted properly. |
| Example: |
| mov #1,r0 -> tst r8,r8 |
| neg r8,r1 bt .L47 |
| shad r1,r0 |
| tst #1,r0 |
| bf .L47 |
| */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */ |
| /* { dg-final { scan-assembler-not "shad|neg" } } */ |
| |
| int test_01_00 (int*, void*); |
| int |
| test_01 (int* m, void* v) |
| { |
| unsigned long n = (unsigned long)v - 1; |
| |
| if (!n) |
| return 50; |
| |
| if (1 & (1 << n)) /* if n == 0: 1 & (1 << 0) -> true */ |
| return 60; |
| else /* if n != 0: 1 & (1 << n) -> false */ |
| return -8; |
| } |