From: Maciej W. Rozycki Date: Fri, 26 Jan 2024 21:47:40 +0000 (+0000) Subject: RISC-V/testsuite: Add RTL pr105314.c testcase variants X-Git-Tag: basepoints/gcc-15~1679 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d4e15084e2155c7e7c5e872b3a88e64df27aa4e6;p=thirdparty%2Fgcc.git 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. --- 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 000000000000..693291f4dbd2 --- /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> [ ]) + (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> [ ]) + (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> [ ])) "pr105314.c":12:1 + (expr_list:REG_DEAD (reg/v:DI <0> [ ]))) + (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 000000000000..9f9600f7679f --- /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> [ ]) + (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> [ ]) + (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> [ ])) "pr105314.c":12:1 + (expr_list:REG_DEAD (reg/v:SI <0> [ ]))) + (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" } } */