Hello! Attached patch removes extra blockage insn generation. For the software archaeology, please see the PR [1], where it was determined, that the removed part is probably a dataflow branch to trunk merge oversight.
2018-11-21 Uros Bizjak <ubiz...@gmail.com> PR middle-end/88129 * function.c (expand_function_end): Do not emit extra blockage insn. Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32} for all default languages, obj-c++ and go. OK for mainline? [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88129 Uros.
diff --git a/gcc/function.c b/gcc/function.c index 302438323c87..44ad57840440 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5296,14 +5296,6 @@ expand_function_end (void) if (flag_exceptions) sjlj_emit_function_exit_after (get_last_insn ()); } - else - { - /* 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) - emit_insn (gen_blockage ()); - } /* If this is an implementation of throw, do what's necessary to communicate between __builtin_eh_return and the epilogue. */