aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@embecosm.com>2024-01-26 21:47:40 +0000
committerMaciej W. Rozycki <macro@embecosm.com>2024-01-26 21:47:40 +0000
commitd4e15084e2155c7e7c5e872b3a88e64df27aa4e6 (patch)
tree68e9b5daa61ae04ee377a1f9ba18c3d63676beb2
parent3e3b9b708d390074f7825401b808e0ed41552c1d (diff)
downloadgcc-d4e15084e2155c7e7c5e872b3a88e64df27aa4e6.zip
gcc-d4e15084e2155c7e7c5e872b3a88e64df27aa4e6.tar.gz
gcc-d4e15084e2155c7e7c5e872b3a88e64df27aa4e6.tar.bz2
RISC-V/testsuite: Add RTL pr105314.c testcase variants
Add a pair of RTL tests, for RV64 and RV32 respectively, corresponding to the existing pr105314.c test. They have been produced from RTL code as at the entry of the "ce1" pass for pr105314.c compiled at -O3. gcc/testsuite/ * gcc.target/riscv/pr105314-rtl.c: New file. * gcc.target/riscv/pr105314-rtl32.c: New file.
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr105314-rtl.c78
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c78
2 files changed, 156 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c b/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
new file mode 100644
index 0000000..693291f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:DI <1> [ a ]))
+ (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:DI <2> [ b ]))
+ (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+ (param "c"
+ (DECL_RTL (reg/v:DI <3> [ c ]))
+ (DECL_RTL_INCOMING (reg:DI a2 [ c ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:DI <1> [ a ])
+ (reg:DI a0 [ a ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+ (cinsn 4 (set (reg/v:DI <3> [ c ])
+ (reg:DI a2 [ c ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:DI a2 [ c ])))
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ne (reg/v:DI <3> [ c ])
+ (const_int 0))
+ (label_ref:DI 23)
+ (pc))) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <3> [ c ])
+ (int_list:REG_BR_PROB 536870916)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 6 (set (reg/v:DI <0> [ <retval> ])
+ (reg/v:DI <1> [ a ])) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:DI <1> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 7 (set (reg/v:DI <0> [ <retval> ])
+ (const_int 0)) "pr105314.c":10:7)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:DI a0)
+ (reg/v:DI <0> [ <retval> ])) "pr105314.c":12:1
+ (expr_list:REG_DEAD (reg/v:DI <0> [ <retval> ])))
+ (cinsn 18 (use (reg/i:DI a0)) "pr105314.c":12:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c b/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
new file mode 100644
index 0000000..9f9600f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+ (param "a"
+ (DECL_RTL (reg/v:SI <1> [ a ]))
+ (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+ (param "b"
+ (DECL_RTL (reg/v:SI <2> [ b ]))
+ (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+ (param "c"
+ (DECL_RTL (reg/v:SI <3> [ c ]))
+ (DECL_RTL_INCOMING (reg:SI a2 [ c ])))
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v:SI <1> [ a ])
+ (reg:SI a0 [ a ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+ (cinsn 4 (set (reg/v:SI <3> [ c ])
+ (reg:SI a2 [ c ])) "pr105314.c":8:1
+ (expr_list:REG_DEAD (reg:SI a2 [ c ])))
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ne (reg/v:SI <3> [ c ])
+ (const_int 0))
+ (label_ref:SI 23)
+ (pc))) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:SI <3> [ c ])
+ (int_list:REG_BR_PROB 536870916)))
+ (edge-to 4)
+ (edge-to 3 (flags "FALLTHRU"))
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 6 (set (reg/v:SI <0> [ <retval> ])
+ (reg/v:SI <1> [ a ])) "pr105314.c":9:6
+ (expr_list:REG_DEAD (reg/v:SI <1> [ a ])))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 3
+ (block 4
+ (edge-from 2)
+ (clabel 23 3)
+ (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 7 (set (reg/v:SI <0> [ <retval> ])
+ (const_int 0)) "pr105314.c":10:7)
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3 (flags "FALLTHRU"))
+ (clabel 16 1)
+ (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 17 (set (reg/i:SI a0)
+ (reg/v:SI <0> [ <retval> ])) "pr105314.c":12:1
+ (expr_list:REG_DEAD (reg/v:SI <0> [ <retval> ])))
+ (cinsn 18 (use (reg/i:SI a0)) "pr105314.c":12:1)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI a0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */