https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100152
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P2 Summary|[10.3, 11, 12 Regression] |[10/11/12 Regression] used |used caller-saved register |caller-saved register not |not preserved across a |preserved across a call. |call. | Keywords| |ra --- Comment #30 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #29) > what is also somewhat peculiar is that replacing the first function in the > reduced test case with "extern void ___UTF_8_put(char *a, int b);" changes > the code-gen for the second function. That might hint at IPA RA which you can try disabling via -fno-ipa-ra which in turn hints at a target issue. I'm seeing whether a cross reproduces the issue on your reduced testcase. Btw, the GIMPLE optimization change just exposes the issue - it can have no influence on the used registers.