https://gcc.gnu.org/g:7db40905669ff65ce1633ca5d093f50702affe56

commit r17-4925-g7db40905669ff65ce1633ca5d093f50702affe56
Author: Max Filippov <[email protected]>
Date:   Sun Oct 4 08:40:21 2026 -0700

    xtensa: fix ICE when building libgcc with -mauto-litpools
    
    The commit r17-3780-ga5da203dd959 introduced a regression that results
    in the following kind of ICE when DF mode value 0 is loaded into AR
    registers:
    
    gcc/libgcc/libgcc2.c:2746:1: error: unrecognizable insn:
    (insn 1401 775 1402 79 (set (reg:SF 12 a12)
            (const_int 0 [0])) "gcc/libgcc/libgcc2.c":2719:8 -1
         (nil))
    during RTL pass: split2
    
    This happens because the condition in the `move_fp_operand` that allows
    matching 0 as a constant for auto litpool has been changed from
    `CONSTANT_P` to `CONST_DOUBLE_P`, but the code that splits DF mode
    constant 0 produces const_int.
    
    gcc/
            * config/xtensa/predicates.md (move_fp_operand): Use CONSTANT_P
            instead of CONST_DOUBLE_P.

Diff:
---
 gcc/config/xtensa/predicates.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md
index b04a34f263c1..ff678b92c5d1 100644
--- a/gcc/config/xtensa/predicates.md
+++ b/gcc/config/xtensa/predicates.md
@@ -154,7 +154,7 @@
        (match_test "satisfies_constraint_Gz (op)
                    || satisfies_constraint_Gc (op)
                    || ((TARGET_CONST16 || TARGET_AUTO_LITPOOLS)
-                       && CONST_DOUBLE_P (op))")))
+                       && CONSTANT_P (op))")))
 
 (define_predicate "fix_scaling_operand"
   (match_code "const_double")

Reply via email to