[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


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

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