]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64 - PR target/86887 Fix missing register constraints in carryin patterns
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 9 Aug 2018 13:39:17 +0000 (13:39 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 9 Aug 2018 13:39:17 +0000 (13:39 +0000)
Some of the carryin insn patterns are missing a register constraint.
That means that the register allocator can pick practically anything
to hold that value, including memory locations, or registers of the
wrong class.

PR target/86887
* config/aarch64/aarch64.md (add<mode>3_carryinC_zero): Add missing
register constraint to operand 0.
(add<mode>3_carryinC): Likewise.
(add<mode>3_carryinV_zero, add<mode>3_carryinV): Likewise.

From-SVN: r263446

gcc/ChangeLog
gcc/config/aarch64/aarch64.md

index 9ff7c213e1a1202cb897ba3bfd0ea61a911f8537..9d5a23fc06fefe07df39974aba83b24e4e22104f 100644 (file)
@@ -1,3 +1,11 @@
+2018-08-09  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/86887
+       * config/aarch64/aarch64.md (add<mode>3_carryinC_zero): Add missing
+       register constraint to operand 0.
+       (add<mode>3_carryinC): Likewise.
+       (add<mode>3_carryinV_zero, add<mode>3_carryinV): Likewise.
+
 2018-08-09  Martin Liska  <mliska@suse.cz>
 
         PR c/86895
index 8035856258e1530d2ea61cdb41e5d3e0ec48a465..22d20eae5c57de81827b3f0f676635a8fff2f054 100644 (file)
            (plus:GPI
              (match_operand:GPI 3 "aarch64_carry_operation" "")
              (match_dup 1)))))
-   (set (match_operand:GPI 0 "register_operand")
+   (set (match_operand:GPI 0 "register_operand" "=r")
        (plus:GPI (match_dup 3) (match_dup 1)))]
    ""
    "adcs\\t%<w>0, %<w>1, <w>zr"
                (match_operand:GPI 4 "aarch64_carry_operation" "")
                (match_dup 1))
              (match_dup 2)))))
-   (set (match_operand:GPI 0 "register_operand")
+   (set (match_operand:GPI 0 "register_operand" "=r")
        (plus:GPI
          (plus:GPI (match_dup 4) (match_dup 1))
          (match_dup 2)))]
            (plus:GPI
              (match_operand:GPI 3 "aarch64_carry_operation" "")
              (match_dup 1)))))
-   (set (match_operand:GPI 0 "register_operand")
+   (set (match_operand:GPI 0 "register_operand" "=r")
        (plus:GPI (match_dup 3) (match_dup 1)))]
    ""
    "adcs\\t%<w>0, %<w>1, <w>zr"
                (match_operand:GPI 4 "aarch64_carry_operation" "")
                (match_dup 1))
              (match_dup 2)))))
-   (set (match_operand:GPI 0 "register_operand")
+   (set (match_operand:GPI 0 "register_operand" "=r")
        (plus:GPI
          (plus:GPI (match_dup 4) (match_dup 1))
          (match_dup 2)))]