[PATCH, GCC/ARM] Fix clear_operation_p uninitialised variable
authorMihail Ionescu <mihail.ionescu@arm.com>
Tue, 21 Jan 2020 10:11:35 +0000 (10:11 +0000)
committerMihail Ionescu <mihail.ionescu@arm.com>
Tue, 21 Jan 2020 10:11:35 +0000 (10:11 +0000)
2020-01-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>

* gcc/config/arm/arm.c (clear_operation_p):
Initialise last_regno, skip first iteration
based on the first_set value and use ints instead
of the unnecessary HOST_WIDE_INTs.

gcc/ChangeLog
gcc/config/arm/arm.c

index 4f38f24317f0f9e9c7728c56748f9b8438de5041..8c17e5992d27817292054e7e2f1295a8d5ea6e0d 100644 (file)
@@ -1,3 +1,10 @@
+2020-01-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
+
+       * gcc/config/arm/arm.c (clear_operation_p):
+       Initialise last_regno, skip first iteration
+       based on the first_set value and use ints instead
+       of the unnecessary HOST_WIDE_INTs.
+
 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/93073
index c47fc232f39e13f5033d97847aa9805dd9ab4a52..b54382dbff3e589b683447468bc56c4ffae734e3 100644 (file)
@@ -13751,13 +13751,14 @@ ldm_stm_operation_p (rtx op, bool load, machine_mode mode,
 bool
 clear_operation_p (rtx op, bool vfp)
 {
-  unsigned regno, last_regno;
+  unsigned regno;
+  unsigned last_regno = INVALID_REGNUM;
   rtx elt, reg, zero;
-  HOST_WIDE_INT count = XVECLEN (op, 0);
-  HOST_WIDE_INT i, first_set = vfp ? 1 : 0;
+  int count = XVECLEN (op, 0);
+  int first_set = vfp ? 1 : 0;
   machine_mode expected_mode = vfp ? E_SFmode : E_SImode;
 
-  for (i = first_set; i < count; i++)
+  for (int i = first_set; i < count; i++)
     {
       elt = XVECEXP (op, 0, i);
 
@@ -13790,14 +13791,14 @@ clear_operation_p (rtx op, bool vfp)
 
       if (vfp)
        {
-         if (i != 1 && regno != last_regno + 1)
+         if (i != first_set && regno != last_regno + 1)
            return false;
        }
       else
        {
          if (regno == SP_REGNUM || regno == PC_REGNUM)
            return false;
-         if (i != 0 && regno <= last_regno)
+         if (i != first_set && regno <= last_regno)
            return false;
        }