https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118827
Palmer Dabbelt <palmer at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |palmer at gcc dot gnu.org --- Comment #5 from Palmer Dabbelt <palmer at gcc dot gnu.org> --- (In reply to Huaqi from comment #4) > But why interrupt attributed function behavior are different from normal > function? > > see my previous comment > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118827#c2 That's the whole point of the interrupt attribute, if you don't want the extra registers saved then don't use it. It's designed to allow users in simple systems to write their interrupt entry points directly in C, so it saves all the registers that get used.