[Bug target/100204] aarch64: UB evaluating J constraint

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jul 19 07:43:43 GMT 2021


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)")))


More information about the Gcc-bugs mailing list