diff mbox series

[1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants

Message ID alpine.DEB.2.20.2401241105360.14163@tpp.orcam.me.uk
State New
Headers show
Series RISC-V/testsuite: Add RTL if-conversion testcases | expand

Commit Message

Maciej W. Rozycki Jan. 24, 2024, 11:16 a.m. UTC
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.
---
 gcc/testsuite/gcc.target/riscv/pr105314-rtl.c   |   78 ++++++++++++++++++++++++
 gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c |   78 ++++++++++++++++++++++++
 2 files changed, 156 insertions(+)

gcc-test-riscv-pr105314-rtl.diff

Comments

Jeff Law Jan. 24, 2024, 5:09 p.m. UTC | #1
On 1/24/24 04:16, Maciej W. Rozycki wrote:
> 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.
OK
jeff
diff mbox series

Patch

Index: gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
===================================================================
--- /dev/null
+++ gcc/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" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
===================================================================
--- /dev/null
+++ gcc/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" } } */