From d19df8b22998766fec1d3c3af055639ba2d172e5 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 14 Nov 2019 16:40:33 +0000 Subject: [PATCH] Make flag_thread_jumps a gate of pass_jump_after_combine This is a follow-up to https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00919.html (r278095). Dominance info is deleted even if we don't perform jump threading. Since the whole point of this pass is to perform jump threading (other cleanups are not valuable at this point), skip it completely when flag_thread_jumps is not set. gcc/ChangeLog: 2019-11-14 Ilya Leoshkevich PR rtl-optimization/92430 * cfgcleanup.c (pass_jump_after_combine::gate): New function. (pass_jump_after_combine::execute): Perform jump threading unconditionally. From-SVN: r278254 --- gcc/ChangeLog | 7 +++++++ gcc/cfgcleanup.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7140f5acc1d..051b10ed953 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-11-14 Ilya Leoshkevich + + PR rtl-optimization/92430 + * cfgcleanup.c (pass_jump_after_combine::gate): New function. + (pass_jump_after_combine::execute): Perform jump threading + unconditionally. + 2019-11-14 Jerome Lambourg Doug Rupp Olivier Hainque diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 7f388258e10..f1d421b1cfa 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -3304,6 +3304,7 @@ public: {} /* opt_pass methods: */ + virtual bool gate (function *) { return flag_thread_jumps; } virtual unsigned int execute (function *); }; // class pass_jump_after_combine @@ -3313,7 +3314,7 @@ pass_jump_after_combine::execute (function *) { /* Jump threading does not keep dominators up-to-date. */ free_dominance_info (CDI_DOMINATORS); - cleanup_cfg (flag_thread_jumps ? CLEANUP_THREADING : 0); + cleanup_cfg (CLEANUP_THREADING); return 0; } -- 2.30.2