The recent changes to ext-dce can transform sign extension to zero 
extension in some cases.  As a result tests which previously expected a 
signed load can now see an unsigned load.  Of course on rv32 "lw" loads 
a full word, so this doesn't show up there.  So instead of looking for 
"lw" we instead look for "(lwu|lw)".  This fixes the "regressions" after 
the ext-dce changes.

Tested on riscv32-elf and riscv64-elf.  Pushed to the trunk.

jeff



commit 51a122bf9bf8f01ddfd53fe9e527e93b2ef99ffb
Author: Jeff Law <[email protected]>
Date:   Thu May 28 11:36:01 2026 -0600

    [RISC-V] Fix expected testsuite output after ext-dce changes
    
    The recent changes to ext-dce can transform sign extension to zero 
extension in
    some cases.  As a result tests which previously expected a signed load can 
now
    see an unsigned load.  Of course on rv32 "lw" loads a full word, so this
    doesn't show up there.  So instead of looking for "lw" we instead look for
    "(lwu|lw)".  This fixes the "regressions" after the ext-dce changes.
    
    gcc/testsuite
            * gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c: Adjust 
expected
            output.
            * gcc.target/riscv/amo/a-rvwmo-store-relaxed.c: Likewise.
            * gcc.target/riscv/amo/a-rvwmo-store-release.c: Likewise.
            * gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c: Likewise.
            * gcc.target/riscv/amo/a-ztso-store-relaxed.c: Likewise.
            * gcc.target/riscv/amo/a-ztso-store-release.c: Likewise.
            * gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c: 
Likewise.
            * gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c: Likewise.
            * gcc.target/riscv/amo/zalasr-rvwmo-store-release.c: Likewise.
            * gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c: Likewise.
            * gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c: Likewise.
            * gcc.target/riscv/amo/zalasr-ztso-store-release.c: Likewise.
            * gcc.target/riscv/cpymem-64-ooo.c: Likewise.
            * gcc.target/riscv/cpymem-64.c: Likewise.
            * gcc.target/riscv/memcpy-nonoverlapping.c: Likewise.
            * gcc.target/riscv/pr67731.c: Likewise.

diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
index b3ec4e1061b..25d1110829a 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
@@ -22,7 +22,7 @@ void atomic_store_long_seq_cst (long* bar, long* baz)
 
 /*
 ** atomic_store_int_seq_cst:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     fence\trw,w
 **     sw\t[atx][0-9]+,0\(a0\)
 **     fence\trw,rw
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
index 2f224f993de..87b0f2fead5 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
@@ -19,7 +19,7 @@ void atomic_store_long_relaxed (long* bar, long* baz)
 
 /*
 ** atomic_store_int_relaxed:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
index 6daca225d24..9e75c8d3b4d 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
@@ -20,7 +20,7 @@ void atomic_store_long_release (long* bar, long* baz)
 
 /*
 ** atomic_store_int_release:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     fence\trw,w
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
index a1cefbb1109..ff96ab7fa18 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
@@ -21,7 +21,7 @@ void atomic_store_long_seq_cst (long* bar, long* baz)
 
 /*
 ** atomic_store_int_seq_cst:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     fence\trw,rw
 **     ret
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
index 939ad757462..41e081b768b 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
@@ -19,7 +19,7 @@ void atomic_store_long_relaxed (long* bar, long* baz)
 
 /*
 ** atomic_store_int_relaxed:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c 
b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
index bb97b8a6d52..f55e4a12795 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
@@ -19,7 +19,7 @@ void atomic_store_long_release (long* bar, long* baz)
 
 /*
 ** atomic_store_int_release:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git 
a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
index 7f40d443bd0..03324eed14f 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
@@ -20,7 +20,7 @@ void atomic_store_long_seq_cst (long* bar, long* baz)
 
 /*
 ** atomic_store_int_seq_cst:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw.rl\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
index d0127e53baa..daefe4582ed 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
@@ -19,7 +19,7 @@ void atomic_store_long_relaxed (long* bar, long* baz)
 
 /*
 ** atomic_store_int_relaxed:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
index 6174718fe2d..2b26a24f950 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
@@ -19,7 +19,7 @@ void atomic_store_long_release (long* bar, long* baz)
 
 /*
 ** atomic_store_int_release:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw.rl\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git 
a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
index 085f94e5d42..c53c0f0a424 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
@@ -20,7 +20,7 @@ void atomic_store_long_seq_cst (long* bar, long* baz)
 
 /*
 ** atomic_store_int_seq_cst:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw.rl\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
index cb68849291b..c637da07810 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
@@ -19,7 +19,7 @@ void atomic_store_long_relaxed (long* bar, long* baz)
 
 /*
 ** atomic_store_int_relaxed:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c 
b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
index b5cc2e967d2..01c86adf4bd 100644
--- a/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
+++ b/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
@@ -19,7 +19,7 @@ void atomic_store_long_release (long* bar, long* baz)
 
 /*
 ** atomic_store_int_release:
-**     lw\t[atx][0-9]+,0\(a1\)
+**     (lwu|lw)\t[atx][0-9]+,0\(a1\)
 **     sw\t[atx][0-9]+,0\(a0\)
 **     ret
 */
diff --git a/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c 
b/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
index 147324093cb..77d38d5e573 100644
--- a/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
+++ b/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
@@ -22,9 +22,9 @@ void copy_aligned_##N (void *to, void *from)          \
 /*
 **copy_7:
 **    ...
-**    lw\t[at][0-9],0\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
 **    sw\t[at][0-9],0\([at][0-9]\)
-**    lw\t[at][0-9],3\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],3\([at][0-9]\)
 **    sw\t[at][0-9],3\([at][0-9]\)
 **    ...
 */
@@ -33,9 +33,9 @@ COPY_N(7)
 /*
 **copy_aligned_7:
 **    ...
-**    lw\t[at][0-9],0\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
 **    sw\t[at][0-9],0\([at][0-9]\)
-**    lw\t[at][0-9],3\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],3\([at][0-9]\)
 **    sw\t[at][0-9],3\([at][0-9]\)
 **    ...
 */
@@ -64,7 +64,7 @@ COPY_ALIGNED_N(8)
 **    ...
 **    ld\t[at][0-9],0\([at][0-9]\)
 **    sd\t[at][0-9],0\([at][0-9]\)
-**    lw\t[at][0-9],7\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],7\([at][0-9]\)
 **    sw\t[at][0-9],7\([at][0-9]\)
 **    ...
 */
@@ -75,7 +75,7 @@ COPY_N(11)
 **    ...
 **    ld\t[at][0-9],0\([at][0-9]\)
 **    sd\t[at][0-9],0\([at][0-9]\)
-**    lw\t[at][0-9],7\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],7\([at][0-9]\)
 **    sw\t[at][0-9],7\([at][0-9]\)
 **    ...
 */
@@ -110,7 +110,7 @@ COPY_ALIGNED_N(15)
 **    ...
 **    sd\t[at][0-9],16\([at][0-9]\)
 **    ...
-**    lw\t[at][0-9],23\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],23\([at][0-9]\)
 **    sw\t[at][0-9],23\([at][0-9]\)
 **    ...
 */
@@ -123,7 +123,7 @@ COPY_N(27)
 **    ...
 **    sd\t[at][0-9],16\([at][0-9]\)
 **    ...
-**    lw\t[at][0-9],23\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],23\([at][0-9]\)
 **    sw\t[at][0-9],23\([at][0-9]\)
 **    ...
 */
diff --git a/gcc/testsuite/gcc.target/riscv/cpymem-64.c 
b/gcc/testsuite/gcc.target/riscv/cpymem-64.c
index c91b0154a29..df3a679f159 100644
--- a/gcc/testsuite/gcc.target/riscv/cpymem-64.c
+++ b/gcc/testsuite/gcc.target/riscv/cpymem-64.c
@@ -35,7 +35,7 @@ COPY_N(7)
 /*
 **copy_aligned_7:
 **    ...
-**    lw\t[at][0-9],0\([at][0-9]\)
+**    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
 **    sw\t[at][0-9],0\([at][0-9]\)
 **    ...
 **    lbu\t[at][0-9],6\([at][0-9]\)
diff --git a/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c 
b/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
index 1c99e13fc26..62f1497adf8 100644
--- a/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
+++ b/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
@@ -44,7 +44,7 @@ COPY_N(31)
 /* { dg-final { scan-assembler-times "ld\t" 17 } } */
 /* { dg-final { scan-assembler-times "sd\t" 17 } } */
 
-/* { dg-final { scan-assembler-times "lw\t" 6 } } */
+/* { dg-final { scan-assembler-times "(lwu|lw)\t" 6 } } */
 /* { dg-final { scan-assembler-times "sw\t" 6 } } */
 
 /* { dg-final { scan-assembler-times "lhu\t" 7 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr67731.c 
b/gcc/testsuite/gcc.target/riscv/pr67731.c
index 6f254fc68f5..4e6f609e24d 100644
--- a/gcc/testsuite/gcc.target/riscv/pr67731.c
+++ b/gcc/testsuite/gcc.target/riscv/pr67731.c
@@ -20,6 +20,7 @@ _Bool test_01 (S* s)
 {
   return s->b | s->c | s->d;
 }
-/* { dg-final { scan-assembler-times 
{\tlw\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 } } */
+/* { dg-final { scan-assembler-times 
{\tlw\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 { target 
rv32 } } } */
+/* { dg-final { scan-assembler-times 
{\tlwu\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 { 
target rv64 } } } */
 /* { dg-final { scan-assembler-not {\tor} } } */
 /* { dg-final { scan-assembler-not {\tbexti} } } */

Reply via email to