https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100204
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (define_constraint "J" "A constant that can be used with a SUB operation (once negated)." (and (match_code "const_int") (match_test "aarch64_uimm12_shift (-ival)"))) So this should be: - (unsigned HOST_WIDE_INT) ival There are other targets which have a similar issue: config/alpha/constraints.md: (match_test "IN_RANGE (-ival, 0, 255)"))) config/arc/constraints.md: (match_test "UNSIGNED_INT6 (-ival)"))) config/arc/constraints.md: && ((ival >= 0 ? ival : -ival) config/arc/constraints.md: <= 0x3f * (ival & -ival)))"))) config/arc/constraints.md: (match_test "!(ival & ~124) || !(-ival & ~124)"))) config/arc/constraints.md: && ((ival >= 0 ? ival : -ival) config/arc/constraints.md: <= 0x7ff * (ival & -ival)))"))) config/arc/constraints.md: (match_test "IS_POWEROF2_P (-ival)") config/arc/constraints.md: (match_test "IS_POWEROF2_OR_0_P (ival + (ival & -ival))"))) config/arc/constraints.md: || ((ival & 0xffffffffUL) >> exact_log2 (ival & -ival) config/arm/constraints.md: (match_test "((-ival) & 0xfffff000) == 0")))) config/arm/constraints.md: (match_test "TARGET_32BIT ? const_ok_for_arm (-ival) config/csky/constraints.md: (match_test "CSKY_CONST_OK_FOR_Uj (-ival + 4)"))) config/epiphany/constraints.md: (match_test "SIMM11 (-ival)"))) config/pru/constraints.md: (match_test "UBYTE_INT (-ival)")))