1 /* { dg-do run } */
2 /* { dg-options "-O2 --save-temps -fno-inline" } */
3 /* { dg-require-effective-target arm32 } */
4 extern void abort (void);
5 int
bics_si_test1(int a,int b,int c)6 bics_si_test1 (int a, int b, int c)
7 {
8 if ((a | b) == a)
9 return a;
10 else
11 return c;
12 }
13
14 int
bics_si_test2(int a,int b,int c)15 bics_si_test2 (int a, int b, int c)
16 {
17 if ((a | b) == b)
18 return b;
19 else
20 return c;
21 }
22
23 int
main()24 main ()
25 {
26 int x;
27 x = bics_si_test1 (0xf00d, 0xf11f, 0);
28 if (x != 0)
29 abort ();
30
31 x = bics_si_test1 (0xf11f, 0xf00d, 0);
32 if (x != 0xf11f)
33 abort ();
34
35 x = bics_si_test2 (0xf00d, 0xf11f, 0);
36 if (x != 0xf11f)
37 abort ();
38
39 x = bics_si_test2 (0xf11f, 0xf00d, 0);
40 if (x != 0)
41 abort ();
42
43 return 0;
44 }
45
46 /* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
47