https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85593
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ramana at gcc dot gnu.org --- Comment #3 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- Changing the testcase to indicate the clobbered register r3 makes the test pass but that is wrong in a naked function. Extended inline assembler *cannot* be used within a naked function because you inadvertently could end up requiring a stack slot and therefore cause the function to require a prologue and epilogue which is exactly contrary to what we want with the naked function ! I *think* the problem really is the fact that you have ipa-ra coming along and deciding that r3 isn't used at all in the naked function . You can see the problem disappear with -fno-ipa-ra but that is not a workaround I would recommend using in your general C flags , because you are using a hammer disabling a nice optimization to make something like the example "work". Thus I think what you want is to get rid of naked functions in general and write the whole thing in assembler and stop faffing about with naked functions in general. IIRC there is a hook for ipa-ra that says what registers can be clobbered : can't find it immediately. I suppose for naked functions it is *all* registers. regards Ramana