]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/riscv/pr95252.c
RISC-V: Describe correct USEs for gpr_save pattern [PR95252]
[thirdparty/gcc.git] / gcc / testsuite / gcc.target / riscv / pr95252.c
1 /* PR target/95252 */
2 /* { dg-options "-O3 -funroll-loops -msave-restore" } */
3 /* { dg-do run } */
4
5 int a[6], b = 1, d, e;
6 long long c;
7 static int f = 1;
8
9 void
10 fn1 (int p1)
11 {
12 b = (b >> 1) & (1 ^ a[(1 ^ p1) & 5]);
13 }
14
15 void
16 fn2 ()
17 {
18 b = (b >> 1) & (1 ^ a[(b ^ 1) & 1]);
19 fn1 (c >> 1 & 5);
20 fn1 (c >> 2 & 5);
21 fn1 (c >> 4 & 5);
22 fn1 (c >> 8 & 5);
23 }
24
25 int
26 main ()
27 {
28 int i, j;
29 for (; d;)
30 {
31 for (; e;)
32 fn2 ();
33 f = 0;
34 }
35 for (i = 0; i < 8; i++)
36 {
37 if (f)
38 i = 9;
39 for (j = 0; j < 7; j++)
40 fn2 ();
41 }
42
43 if (b != 0)
44 __builtin_abort ();
45
46 return 0;
47 }