https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104362
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index ad5a5caa413..a61a5390127 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -7403,6 +7403,10 @@ find_drap_reg (void) || crtl->tail_call_emit) return DI_REG; + if (crtl->calls_eh_return + && REGNO (EH_RETURN_STACKADJ_RTX) == CX_REG) + return DI_REG; + /* Reuse static chain register if it isn't used for parameter passing. */ if (ix86_function_regparm (TREE_TYPE (decl), decl) <= 2)