1 /* { dg-do run } */
2 /* { dg-options "-msave-restore -fomit-frame-pointer" } */
3
4 #include <stdlib.h>
5
6 __attribute__((noinline)) int g(void) { return 42; }
7
8 __attribute__((noinline)) int f(void) {
9 asm volatile ("li s0, 0x87654321" ::: "s0");
10 return g();
11 }
12
13 int main(void) {
14 asm volatile ("li s0, 0x12345678" ::: "s0");
15
16 f();
17
18 long s0;
19 asm volatile ("mv %0, s0" : "=r"(s0));
20
21 if (s0 == 0x12345678)
22 exit (0);
23 else
24 abort();
25 }