https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67552
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> --- I think we should place if (current_function_decl && ix86_is_interrupt_p ()) { for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { if (!STACK_REGNO_P (i) && !MMX_REGNO_P (i)) { if (i == BP_REG || i == SP_REG) continue; if (i >= ARGP_REG && i <= FRAME_REG) continue; call_used_regs[i] = 0; fixed_regs[i] = 0; } } } at the beginning of ix86_conditional_register_usage.