/* Test whether a partly call-clobbered register will be moved over a call. | |
Although the original test case didn't use any GNUisms, it proved | |
difficult to reduce without the named register extension. */ | |
#if __SH64__ == 32 | |
#define LOC asm ("r10") | |
#else | |
#define LOC | |
#endif | |
unsigned int foo (char *c, unsigned int x, unsigned int y) | |
{ | |
register unsigned int z LOC; | |
sprintf (c, "%d", x / y); | |
z = x + 1; | |
return z / (y + 1); | |
} | |
int main () | |
{ | |
char c[16]; | |
if (foo (c, ~1U, 4) != (~0U / 5)) | |
abort (); | |
exit (0); | |
} |