https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104362

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
Or simply:

--cut here--
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index ad5a5caa413..dd5584fb8ed 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -7400,7 +7400,8 @@ find_drap_reg (void)
         register in such case.  */
       if (DECL_STATIC_CHAIN (decl)
          || cfun->machine->no_caller_saved_registers
-         || crtl->tail_call_emit)
+         || crtl->tail_call_emit
+         || crtl->calls_eh_return)
        return DI_REG;

       /* Reuse static chain register if it isn't used for parameter
--cut here--

Reply via email to