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--