1 /* Test whether a partly call-clobbered register will be moved over a call.
2 Although the original test case didn't use any GNUisms, it proved
3 difficult to reduce without the named register extension. */
4 #if __SH64__ == 32
5 #define LOC asm ("r10")
6 #else
7 #define LOC
8 #endif
9
foo(char * c,unsigned int x,unsigned int y)10 unsigned int foo (char *c, unsigned int x, unsigned int y)
11 {
12 register unsigned int z LOC;
13
14 sprintf (c, "%d", x / y);
15 z = x + 1;
16 return z / (y + 1);
17 }
18
main()19 int main ()
20 {
21 char c[16];
22
23 if (foo (c, ~1U, 4) != (~0U / 5))
24 abort ();
25 exit (0);
26 }
27