[Bug target/88070] [8/9 Regression] ICE in create_pre_exit, at mode-switching.c:438

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Nov 19 20:36:00 GMT 2018


--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
BTW: The extra blockage would crash compilation for all mode-switching
targets, also in the pre-reload mode switching; the vzeroupper
post-reload insertion just trips x86 target on a generic problem in
the middle-end.

Proposed patch:

--cut here--
Index: function.c
--- function.c  (revision 266278)
+++ function.c  (working copy)
@@ -5447,13 +5447,6 @@ expand_function_end (void)
   if (naked_return_label)
     emit_label (naked_return_label);

-  /* @@@ This is a kludge.  We want to ensure that instructions that
-     may trap are not moved into the epilogue by scheduling, because
-     we don't always emit unwind information for the epilogue.  */
-  if (cfun->can_throw_non_call_exceptions
-      && targetm_common.except_unwind_info (&global_options) != UI_SJLJ)
-    emit_insn (gen_blockage ());
   /* If stack protection is enabled for this function, check the guard.  */
   if (crtl->stack_protect_guard && targetm.stack_protect_runtime_enabled_p ())
     stack_protect_epilogue ();
--cut here--

More information about the Gcc-bugs mailing list