[Bug target/100152] [10.3, 11, 12 Regression] used caller-saved register not preserved across a call.
iains at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Apr 23 00:32:56 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100152
--- Comment #28 from Iain Sandoe <iains at gcc dot gnu.org> ---
reduced test case:
___UTF_8_put(char *a, int b) {
char *c = a;
int bytes;
if (b <= 15)
bytes = 2;
else if (b <= 255)
bytes = 4;
else if (b <= 4095)
bytes = 5;
else
bytes = 6;
c = *a = c;
switch (bytes) {
case 6:
*--c = b >>= 6;
case 5:
*--c = b;
b >>= 6;
}
*c = bytes + b;
}
___SCMOBJ_to_NONNULLSTRING(d) {
{
unsigned long g, h;
char c;
h = ((long *)1)[1];
g = 0;
for (; g < h; g++)
i();
g = 0;
for (; g < h; g++)
___UTF_8_put(c, (long)*((unsigned *)d + (g << 2 >> 2)) << 2 >> 2);
}
}
More information about the Gcc-bugs
mailing list