[Bug middle-end/88129] Two blockage insns are emited in the function epilogue
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Nov 22 10:01:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88129
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #7)
> Let's keep the PR open for the eventual removal of the remaining blockage
> instruction for targets that emit unwind information in the epilogue.
FTR, the following patch works OK on x86_64-linux-gnu (bootstrap + regression
test of all default languages, obj-c++ and go):
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 ();
More information about the Gcc-bugs
mailing list