Hi!

The linaro CI found my PR119002 patch broke bootstrap on arm.
Seems the problem is that it has incorrect REVERSE_CONDITION macro
definition.
All other target's REVERSE_CONDITION definitions and the default one
just use the macro's arguments, while arm.h definition uses the MODE
argument but uses code instead of CODE (the first argument).
This happens to work because before my patch the only use of the
macro was in jump.cc with
  /* First see if machine description supplies us way to reverse the
     comparison.  Give it priority over everything else to allow
     machine description to do tricks.  */
  if (GET_MODE_CLASS (mode) == MODE_CC
      && REVERSIBLE_CC_MODE (mode))
    return REVERSE_CONDITION (code, mode);
but in my patch it is used with GT rather than code.

The following patch fixes it, completely untested (but without my
other patch it doesn't change anything on the preprocessed source),
ok for trunk?

2025-02-26  Jakub Jelinek  <ja...@redhat.com>

        PR rtl-optimization/119002
        * config/arm/arm.h (REVERSE_CONDITION): Use CODE - the macro
        argument - in the macro rather than code.

--- gcc/config/arm/arm.h.jj     2025-01-09 22:04:32.140141200 +0100
+++ gcc/config/arm/arm.h        2025-02-26 16:46:13.127544209 +0100
@@ -2261,8 +2261,8 @@ extern int making_const_table;
 
 #define REVERSE_CONDITION(CODE,MODE) \
   (((MODE) == CCFPmode || (MODE) == CCFPEmode) \
-   ? reverse_condition_maybe_unordered (code) \
-   : reverse_condition (code))
+   ? reverse_condition_maybe_unordered (CODE) \
+   : reverse_condition (CODE))
 
 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
   ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2)

        Jakub

Reply via email to