ewlu / gcc-precommit-ci

2 stars 0 forks source link

Patch Status 41339-extdce_Fix_SIGNEXTEND_handling_and_cleanups_PR117360-1 #2677

Open github-actions[bot] opened 1 day ago

github-actions[bot] commented 1 day ago

Precommit CI Run information

Logs can be found in the associated Github Actions run: https://github.com/ewlu/gcc-precommit-ci/actions/runs/12081666312

Patch information

Applied patches: 1 -> 1 Associated series: https://patchwork.sourceware.org/project/gcc/list/?series=41339 Last patch applied: https://patchwork.sourceware.org/project/gcc/patch/Z0l+oyi+9mTvUM4K@tucnak/ Patch id: 102080

Build Targets

Some targets are built as multilibs. If a build target ends with multilib, please refer to the table below to see all the targets within that multilib. Target name -march string
newlib-rv64gcv-lp64d-multilib rv64gcv-lp64d, rv32gc-ilp32d, rv64gc-lp64d, rv32imc_zba_zbb_zbc_zbs-ilp32
linux-rv64gcv-lp64d-multilib rv32gcv-ilp32d, rv64gcv-lp64d
linux-rv64gc_zba_zbb_zbc_zbs-lp64d-multilib rv32gc_zba_zbb_zbc_zbs-ilp32d, rv64gc_zba_zbb_zbc_zbs-lp64d

Target Information

Target Shorthand -march string
Bitmanip gc_zba_zbb_zbc_zbs

Notes

Testsuite results use a more lenient allowlist to reduce error reporting with flakey tests. Please take a look at the current allowlist. Results come from a sum file comparator. Each patch is applied to a well known, non-broken baseline taken from our gcc postcommit framework (here) which runs the full gcc testsuite every 6 hours. If you have any questions or encounter any issues which may seem like false-positives, please contact us at patchworks-ci@rivosinc.com

github-actions[bot] commented 1 day ago

Lint Status

Lint passed

github-actions[bot] commented 1 day ago

Apply Status

Target Status
Baseline hash: https://github.com/gcc-mirror/gcc/commit/a4954130d43d478a23ec8b65f5d861167935d77a Failed
Tip of tree hash: https://github.com/gcc-mirror/gcc/commit/52e56eef53b444b5b86c3492e5a7a079c010c1c9 Failed

Command

> git am ../patches/*.patch --whitespace=fix -q --3way --empty=drop

Output

error: sha1 information is lacking or useless (ext-dce.cc).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Patch failed at 0001 ext-dce: Fix SIGN_EXTEND handling and cleanups [PR117360]
--- gcc/ext-dce.cc.jj   2024-11-18 09:05:00.264282397 +0100
+++ gcc/ext-dce.cc  2024-11-28 16:23:28.450616681 +0100
@@ -357,8 +357,8 @@ ext_dce_process_sets (rtx_insn *insn, rt
         Note that BIT need not be a power of two, consider a
         ZERO_EXTRACT destination.  */
          int start = (bit < 8 ? 0 : bit < 16 ? 1 : bit < 32 ? 2 : 3);
-         int end = ((mask & ~0xffffffffULL) ? 4
-            : (mask & 0xffff0000ULL) ? 3
+         int end = ((mask & ~HOST_WIDE_INT_UC (0xffffffff)) ? 4
+            : (mask & HOST_WIDE_INT_UC (0xffff0000)) ? 3
             : (mask & 0xff00) ? 2 : 1);
          bitmap_clear_range (livenow, 4 * rn + start, end - start);
        }
@@ -509,21 +509,21 @@ carry_backpropagate (unsigned HOST_WIDE_
     case PLUS:
     case MINUS:
     case MULT:
-      return (2ULL << floor_log2 (mask)) - 1;
+      return (HOST_WIDE_INT_UC (2) << floor_log2 (mask)) - 1;

     /* We propagate for the shifted operand, but not the shift
        count.  The count is handled specially.  */
     case ASHIFT:
       if (CONST_INT_P (XEXP (x, 1))
-     && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
-   return (HOST_WIDE_INT)mask >> INTVAL (XEXP (x, 1));
-      return (2ULL << floor_log2 (mask)) - 1;
+     && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
+   return (HOST_WIDE_INT) mask >> INTVAL (XEXP (x, 1));
+      return (HOST_WIDE_INT_UC (2) << floor_log2 (mask)) - 1;

     /* We propagate for the shifted operand, but not the shift
        count.  The count is handled specially.  */
     case LSHIFTRT:
       if (CONST_INT_P (XEXP (x, 1))
-     && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
+     && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
    return mmask & (mask << INTVAL (XEXP (x, 1)));
       return mmask;

@@ -531,12 +531,12 @@ carry_backpropagate (unsigned HOST_WIDE_
        count.  The count is handled specially.  */
     case ASHIFTRT:
       if (CONST_INT_P (XEXP (x, 1))
-     && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
+     && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
    {
      HOST_WIDE_INT sign = 0;
      if (HOST_BITS_PER_WIDE_INT - clz_hwi (mask) + INTVAL (XEXP (x, 1))
-         > GET_MODE_BITSIZE (mode).to_constant ())
-       sign = 1ULL << (GET_MODE_BITSIZE (mode).to_constant () - 1);
+         > GET_MODE_BITSIZE (smode))
+       sign = HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (smode) - 1);
      return sign | (mmask & (mask << INTVAL (XEXP (x, 1))));
    }
       return mmask;
@@ -550,14 +550,13 @@ carry_backpropagate (unsigned HOST_WIDE_
       if (CONST_INT_P (XEXP (x, 1)))
    {
      if (pow2p_hwi (INTVAL (XEXP (x, 1))))
-       return mmask & (mask << (GET_MODE_BITSIZE (mode).to_constant ()
+       return mmask & (mask << (GET_MODE_BITSIZE (smode)
                     - exact_log2 (INTVAL (XEXP (x, 1)))));

-     int bits = (HOST_BITS_PER_WIDE_INT
-             + GET_MODE_BITSIZE (mode).to_constant ()
+     int bits = (HOST_BITS_PER_WIDE_INT + GET_MODE_BITSIZE (smode)
              - clz_hwi (mask) - ctz_hwi (INTVAL (XEXP (x, 1))));
-     if (bits < GET_MODE_BITSIZE (mode).to_constant ())
-       return (1ULL << bits) - 1;
+     if (bits < GET_MODE_BITSIZE (smode))
+       return (HOST_WIDE_INT_1U << bits) - 1;
    }
       return mmask;

@@ -568,9 +567,10 @@ carry_backpropagate (unsigned HOST_WIDE_

       /* We want the mode of the inner object.  We need to ensure its
     sign bit is on in MASK.  */
-      mode = GET_MODE (XEXP (x, 0));
-      if (mask & ~GET_MODE_MASK (GET_MODE_INNER (mode)))
-   mask |= 1ULL << (GET_MODE_BITSIZE (mode).to_constant () - 1);
+      mode = GET_MODE_INNER (GET_MODE (XEXP (x, 0)));
+      if (mask & ~GET_MODE_MASK (mode))
+   mask |= HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode).to_constant ()
+                    - 1);

       /* Recurse into the operand.  */
       return carry_backpropagate (mask, GET_CODE (XEXP (x, 0)), XEXP (x, 0));
@@ -588,13 +588,13 @@ carry_backpropagate (unsigned HOST_WIDE_
     case SS_ASHIFT:
     case US_ASHIFT:
       if (CONST_INT_P (XEXP (x, 1))
-     && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (mode).to_constant ())
+     && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
    {
-     return ((mmask & ~((unsigned HOST_WIDE_INT)mmask
+     return ((mmask & ~((unsigned HOST_WIDE_INT) mmask
                 >> (INTVAL (XEXP (x, 1))
                 + (XEXP (x, 1) != const0_rtx
                    && code == SS_ASHIFT))))
-         | ((HOST_WIDE_INT)mask >> INTVAL (XEXP (x, 1))));
+         | ((HOST_WIDE_INT) mask >> INTVAL (XEXP (x, 1))));
    }
       return mmask;

@@ -681,7 +681,8 @@ ext_dce_process_uses (rtx_insn *insn, rt
          unsigned HOST_WIDE_INT dst_mask = 0;
          HOST_WIDE_INT rn = REGNO (dst);
          unsigned HOST_WIDE_INT mask_array[]
-       = { 0xff, 0xff00, 0xffff0000ULL, -0x100000000ULL };
+       = { 0xff, 0xff00, HOST_WIDE_INT_UC (0xffff0000),
+           -HOST_WIDE_INT_UC (0x100000000) };
          for (int i = 0; i < 4; i++)
        if (bitmap_bit_p (live_tmp, 4 * rn + i))
          dst_mask |= mask_array[i];
@@ -786,7 +787,7 @@ ext_dce_process_uses (rtx_insn *insn, rt
            {
              dst_mask <<= bit;
              if (!dst_mask)
-               dst_mask = -0x100000000ULL;
+               dst_mask = -HOST_WIDE_INT_UC (0x100000000);
            }
              y = SUBREG_REG (y);
            }
@@ -811,9 +812,9 @@ ext_dce_process_uses (rtx_insn *insn, rt
            bitmap_set_bit (livenow, rn);
              if (tmp_mask & 0xff00)
            bitmap_set_bit (livenow, rn + 1);
-             if (tmp_mask & 0xffff0000ULL)
+             if (tmp_mask & HOST_WIDE_INT_UC (0xffff0000))
            bitmap_set_bit (livenow, rn + 2);
-             if (tmp_mask & -0x100000000ULL)
+             if (tmp_mask & -HOST_WIDE_INT_UC (0x100000000))
            bitmap_set_bit (livenow, rn + 3);
            }
          else if (!CONSTANT_P (y))

Additional information