1 /* Check that compare-branch is inverted properly.
2 Example:
3 mov #1,r0 -> tst r8,r8
4 neg r8,r1 bt .L47
5 shad r1,r0
6 tst #1,r0
7 bf .L47
8 */
9 /* { dg-do compile } */
10 /* { dg-options "-O2" } */
11 /* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
12 /* { dg-final { scan-assembler-not "shad|neg" } } */
13
14 int test_01_00 (int*, void*);
15 int
test_01(int * m,void * v)16 test_01 (int* m, void* v)
17 {
18 unsigned long n = (unsigned long)v - 1;
19
20 if (!n)
21 return 50;
22
23 if (1 & (1 << n)) /* if n == 0: 1 & (1 << 0) -> true */
24 return 60;
25 else /* if n != 0: 1 & (1 << n) -> false */
26 return -8;
27 }
28