[gcc r15-1607] rs6000: Properly default-disable late-combine passes [PR106594, PR115622, PR115633]

Thomas Schwinge tschwinge@gcc.gnu.org
Tue Jun 25 09:49:13 GMT 2024


https://gcc.gnu.org/g:70480055636c2ca79761cb4440e930daa16bb7aa

commit r15-1607-g70480055636c2ca79761cb4440e930daa16bb7aa
Author: Thomas Schwinge <tschwinge@baylibre.com>
Date:   Tue Jun 25 10:55:41 2024 +0200

    rs6000: Properly default-disable late-combine passes [PR106594, PR115622, PR115633]
    
    ..., so that it also works for '__attribute__ ((optimize("[...]")))' etc.
    
            PR target/106594
            PR target/115622
            PR target/115633
            gcc/
            * config/rs6000/rs6000.cc (rs6000_option_override_internal): Move
            default-disable of late-combine passes from here...
            (rs6000_override_options_after_change): ... to here.

Diff:
---
 gcc/config/rs6000/rs6000.cc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index cd14e5a34ed..71fe31297cf 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -3434,6 +3434,14 @@ rs6000_override_options_after_change (void)
   /* If we are inserting ROP-protect instructions, disable shrink wrap.  */
   if (rs6000_rop_protect)
     flag_shrink_wrap = 0;
+
+  /* One of the late-combine passes runs after register allocation
+     and can match define_insn_and_splits that were previously used
+     only before register allocation.  Some of those define_insn_and_splits
+     use gen_reg_rtx unconditionally.  Disable late-combine by default
+     until the define_insn_and_splits are fixed.  */
+  if (!OPTION_SET_P (flag_late_combine_instructions))
+    flag_late_combine_instructions = 0;
 }
 
 #ifdef TARGET_USES_LINUX64_OPT
@@ -4771,14 +4779,6 @@ rs6000_option_override_internal (bool global_init_p)
 	targetm.expand_builtin_va_start = NULL;
     }
 
-  /* One of the late-combine passes runs after register allocation
-     and can match define_insn_and_splits that were previously used
-     only before register allocation.  Some of those define_insn_and_splits
-     use gen_reg_rtx unconditionally.  Disable late-combine by default
-     until the define_insn_and_splits are fixed.  */
-  if (!OPTION_SET_P (flag_late_combine_instructions))
-    flag_late_combine_instructions = 0;
-
   rs6000_override_options_after_change ();
 
   /* If not explicitly specified via option, decide whether to generate indexed


More information about the Gcc-cvs mailing list