A collection of test cases, capturing the state of various
functions at various places within the pass list, and verifying
that we can restart at various passes.
gcc/testsuite/ChangeLog:
* gcc.dg/rtl/x86_64/dfinit.c: New test case.
* gcc.dg/rtl/x86_64/different-structs.c: New test case.
* gcc.dg/rtl/x86_64/final.c: New test case.
* gcc.dg/rtl/x86_64/into-cfglayout.c: New test case.
* gcc.dg/rtl/x86_64/ira.c: New test case.
* gcc.dg/rtl/x86_64/pro_and_epilogue.c: New test case.
* gcc.dg/rtl/x86_64/test-multiple-fns.c: New test case.
* gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c: New test case.
* gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c: New test case.
* gcc.dg/rtl/x86_64/test-rtl.c: New test case.
* gcc.dg/rtl/x86_64/test_1.h: New file.
* gcc.dg/rtl/x86_64/times-two.c.after-expand.c: New test case.
* gcc.dg/rtl/x86_64/times-two.c.before-df.c: New test case.
* gcc.dg/rtl/x86_64/times-two.h: New file.
* gcc.dg/rtl/x86_64/vregs.c: New test case.
---
gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c | 116 ++++++++++++++++++
.../gcc.dg/rtl/x86_64/different-structs.c | 81 +++++++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/final.c | 133 +++++++++++++++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c | 117 ++++++++++++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/ira.c | 111 +++++++++++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c | 110 +++++++++++++++++
.../gcc.dg/rtl/x86_64/test-multiple-fns.c | 105 ++++++++++++++++
.../rtl/x86_64/test-return-const.c.after-expand.c | 39 ++++++
.../rtl/x86_64/test-return-const.c.before-fwprop.c | 42 +++++++
gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c | 101 ++++++++++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h | 16 +++
.../gcc.dg/rtl/x86_64/times-two.c.after-expand.c | 70 +++++++++++
.../gcc.dg/rtl/x86_64/times-two.c.before-df.c | 54 +++++++++
gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h | 22 ++++
gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c | 112 +++++++++++++++++
15 files changed, 1229 insertions(+)
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/final.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
create mode 100644
gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
create mode 100644
gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.before-df.c
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h
create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
new file mode 100644
index 0000000..3425b97
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
@@ -0,0 +1,116 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-dfinit" } */
+
+#include "test_1.h"
+
+/* Lightly-modified dump of test.c.261r.split1 for x86_64. */
+
+int __RTL (startwith ("no-opt dfinit")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 3 (flags "FALLTHRU"))
+ (edge-to 4)
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI <3>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (plus:SI (reg:SI <3>)
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 29 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 5)
+ ) ;; block 3
+ (cbarrier 30)
+ (block 4
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI <4>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (neg:SI (reg:SI <4>)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3)
+ (clabel 20 3)
+ (cnote 21 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 22 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])))
+ (cinsn 26 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* Verify that the dataflow information matches what cc1 would normally
+ have generated. In particular, in earlier versions of the RTL
+ frontend, the exit block use of reg 0 (ax) wasn't picked up
+ on, due to not setting up crtl->return_rtx based on
+ DECL_RESULT (fndecl). */
+/* { dg-final { scan-rtl-dump ";; exit block uses.*0 .ax. 6 .bp. 7 .sp. 20
.frame." "dfinit" } } */
+/* { dg-final { scan-rtl-dump ";; regs ever live.*0 .ax. 1 .dx. 4 .si. 5 .di.
17 .flags." "dfinit" } } */
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
new file mode 100644
index 0000000..90efaa7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
@@ -0,0 +1,81 @@
+/* { dg-do compile { target x86_64-*-* } } */
+
+extern double sqrt(double x);
+
+struct foo
+{
+ double x;
+ double y;
+};
+
+struct bar
+{
+ double x;
+ double y;
+};
+
+double __RTL test (struct foo *f, const struct bar *b)
+{
+#if 0
+ /* Result of "expand" on this C code, compiled for x86_64 with -Os. */
+ f->x += b->x;
+ f->y += b->y;
+ return sqrt (f->x * f->x + f->y * f->y);
+#endif
+(function "test"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 5 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (reg/v/f:DI <10> [ f ])
+ (reg:DI di [ f ]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":18)
+ (cinsn 3 (set (reg/v/f:DI <11> [ b ])
+ (reg:DI si [ b ]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":18)
+ (cnote 4 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 7 (set (reg:DF <12>)
+ (mem:DF (reg/v/f:DI <10> [ f ]) [2 f_11(D)->x+0 S8 A64]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":21)
+ (cinsn 8 (set (reg:DF <2> [ _3 ])
+ (plus:DF (reg:DF <12>)
+ (mem:DF (reg/v/f:DI <11> [ b ]) [2 b_12(D)->x+0 S8
A64]))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":21)
+ (cinsn 9 (set (mem:DF (reg/v/f:DI <10> [ f ]) [2 f_11(D)->x+0 S8 A64])
+ (reg:DF <2> [ _3 ]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":21)
+ (cinsn 10 (set (reg:DF <13>)
+ (mem:DF (plus:DI (reg/v/f:DI <10> [ f ])
+ (const_int 8)) [2 f_11(D)->y+0 S8 A64]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
+ (cinsn 11 (set (reg:DF <5> [ _6 ])
+ (plus:DF (reg:DF <13>)
+ (mem:DF (plus:DI (reg/v/f:DI <11> [ b ])
+ (const_int 8)) [2 b_12(D)->y+0 S8 A64])))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
+ (cinsn 12 (set (mem:DF (plus:DI (reg/v/f:DI <10> [ f ])
+ (const_int 8)) [2 f_11(D)->y+0 S8 A64])
+ (reg:DF <5> [ _6 ]))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
+ (cinsn 13 (set (reg:DF <14>)
+ (mult:DF (reg:DF <2> [ _3 ])
+ (reg:DF <2> [ _3 ])))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
+ (cinsn 14 (set (reg:DF <15>)
+ (mult:DF (reg:DF <5> [ _6 ])
+ (reg:DF <5> [ _6 ])))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
+ (cinsn 15 (set (reg:DF <16>)
+ (plus:DF (reg:DF <14>)
+ (reg:DF <15>)))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
+ (cinsn 16 (set (reg:DF xmm0)
+ (reg:DF <16>))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
+ (ccall_insn/j 17 (set (reg:DF xmm0)
+ (call (mem:QI (symbol_ref:DI ("sqrt") [flags 0x41]
<function_decl 0x7fa24e331d00 sqrt>) [0 __builtin_sqrt S1 A8])
+ (const_int 0)))
"../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23
+ (expr_list:REG_CALL_DECL (symbol_ref:DI ("sqrt") [flags 0x41]
<function_decl 0x7fa24e331d00 sqrt>)
+ (expr_list:REG_EH_REGION (const_int 0)))
+ (expr_list:DF (use (reg:DF xmm0))))
+ (edge-to exit (flags "ABNORMAL | SIBCALL"))
+ ) ;; block 2
+ (cbarrier 18)
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:DF xmm0)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test"
+
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/final.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/final.c
new file mode 100644
index 0000000..ff84c68
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/final.c
@@ -0,0 +1,133 @@
+/* { dg-do compile { target x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-final" } */
+
+/* Lightly-modified dump of test.c.304r.dwarf2 for x86_64 target,
+ with various NOTE_INSN_CFI deleted by hand for now. */
+
+int __RTL (startwith ("final")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn/f 32 (set (mem:DI (pre_dec:DI (reg/f:DI sp)) [0 S8 A8])
+ (reg/f:DI bp))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn/f 33 (set (reg/f:DI bp)
+ (reg/f:DI sp))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 34 (set (mem/v:BLK (0|scratch:DI) [0 A8])
+ (unspec:BLK [
+ (mem/v:BLK (reuse_rtx 0) [0 A8])
+ ] UNSPEC_MEMORY_BLOCKAGE))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 35 NOTE_INSN_PROLOGUE_END)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI ax [89])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI ax [89])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 3 (flags "FALLTHRU"))
+ (edge-to 4)
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI ax [90])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI ax [orig:87 _1 ] [87])
+ (plus:SI (reg:SI ax [90])
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 29 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 5)
+ ) ;; block 3
+ (cbarrier 30)
+ (block 4
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI ax [91])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI ax [orig:87 _1 ] [87])
+ (neg:SI (reg:SI ax [91])))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3)
+ (clabel 20 3)
+ (cnote 21 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cnote 36 NOTE_INSN_EPILOGUE_BEG)
+ (cinsn 37 (set (mem/v:BLK (1|scratch:DI) [0 A8])
+ (unspec:BLK [
+ (mem/v:BLK (reuse_rtx 1) [0 A8])
+ ] UNSPEC_MEMORY_BLOCKAGE))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn/f 38 (set (reg/f:DI bp)
+ (mem:DI (post_inc:DI (reg/f:DI sp)) [0 S8 A8]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7
+ (expr_list:REG_CFA_DEF_CFA (plus:DI (reg/f:DI sp)
+ (const_int 8))))
+ (cjump_insn 39 (simple_return)
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit)
+ ) ;; block 5
+ (cbarrier 40)
+ (cnote 31 NOTE_INSN_DELETED)
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* Verify that asm was emitted. */
+/* { dg-final { scan-assembler "test_1:" } } */
+/* { dg-final { scan-assembler ".cfi_startproc" } } */
+/* { dg-final { scan-assembler ".cfi_endproc" } } */
+
+/* Verify that the "simple_return" was recognized.
+ FIXME: this assumes i386.md. */
+/* { dg-final { scan-assembler "ret" } } */
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
new file mode 100644
index 0000000..4a82e80
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
@@ -0,0 +1,117 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-into_cfglayout" } */
+
+/* Lightly-modified dump of test.c.226r.vregs for x86_64. */
+
+#include "test_1.h"
+
+int __RTL (startwith ("into_cfglayout")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 4 (flags "FALLTHRU"))
+ (edge-to 5)
+ ) ;; block 2
+ (block 4
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI <3>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (plus:SI (reg:SI <3>)
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 14 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 6)
+ ) ;; block 4
+ (cbarrier 15)
+ (block 5
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI <4>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (neg:SI (reg:SI <4>)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 6 (flags "FALLTHRU"))
+ ) ;; block 5
+ (block 6
+ (edge-from 4)
+ (edge-from 5 (flags "FALLTHRU"))
+ (clabel 20 3)
+ (cnote 21 [bb 6] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 22 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])))
+ (cinsn 26 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 6
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* The conversion to cfglayout should eliminate unconditional jump
+ instructions... */
+/* { dg-final { scan-rtl-dump "Removing jump 14." "into_cfglayout" } } */
+/* { dg-final { scan-rtl-dump-not "jump_insn 14" "into_cfglayout" } } */
+/* { dg-final { scan-rtl-dump-not "barrier" "into_cfglayout" } } */
+
+/* ...but conditional jumps should be preserved. */
+/* { dg-final { scan-rtl-dump "jump_insn 10" "into_cfglayout" } } */
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
new file mode 100644
index 0000000..a86a846
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
@@ -0,0 +1,111 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-ira" } */
+
+/* Lightly-modified dump of test.c.265r.asmcons for x86_64. */
+
+#include "test_1.h"
+
+int __RTL (startwith ("ira")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 3 (flags "FALLTHRU"))
+ (edge-to 4)
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI <3>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (plus:SI (reg:SI <3>)
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 29 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 5)
+ ) ;; block 3
+ (cbarrier 30)
+ (block 4
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI <4>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (neg:SI (reg:SI <4>)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3)
+ (clabel 20 3)
+ (cnote 21 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 22 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])))
+ (cinsn 26 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* Verify that IRA was run. */
+/* { dg-final { scan-rtl-dump "Building IRA IR" "ira" } } */
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
new file mode 100644
index 0000000..4ba3d6e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
@@ -0,0 +1,110 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-pro_and_epilogue" } */
+
+/* Lightly-modified dump of test.c.274r.split2 for x86_64. */
+
+int __RTL (startwith ("pro_and_epilogue")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI ax [89])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI ax [89])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 3 (flags "FALLTHRU"))
+ (edge-to 4)
+ ) ;; block 2
+ (block 3
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI ax [90])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI ax [orig:87 _1 ] [87])
+ (plus:SI (reg:SI ax [90])
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 29 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 5)
+ ) ;; block 3
+ (cbarrier 30)
+ (block 4
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI ax [91])
+ (mem/c:SI (plus:DI (reg/f:DI bp)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI ax [orig:87 _1 ] [87])
+ (neg:SI (reg:SI ax [91])))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 5 (flags "FALLTHRU"))
+ ) ;; block 4
+ (block 5
+ (edge-from 4 (flags "FALLTHRU"))
+ (edge-from 3)
+ (clabel 20 3)
+ (cnote 21 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 5
+ (cnote 31 NOTE_INSN_DELETED)
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* Verify that the prologue and epilogue were added. */
+/* { dg-final { scan-rtl-dump-times "NOTE_INSN_PROLOGUE_END" 1
"pro_and_epilogue" } } */
+
+/* We expect a jump_insn to "simple_return". */
+/* { dg-final { scan-rtl-dump-times "simple_return" 2 "pro_and_epilogue" } }
*/
+
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
new file mode 100644
index 0000000..dff4a1b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
@@ -0,0 +1,105 @@
+/* { dg-do run { target x86_64-*-* } } */
+
+/* Verify that we can have multiple __RTL functions in one test case.
+ Each of these __RTL functions returns a const, dumped immediately after
+ expand. */
+
+extern void abort (void);
+
+int __RTL (startwith ("vregs")) test_return_42 (void)
+{
+ /* C code:
+ return 42; */
+(function "test_return_42"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 5 (set (reg:SI <0> [ _1 ])
+ (const_int 42)) "../../src/test-return-const.c":3)
+ (cinsn 8 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])) "../../src/test-return-const.c":3)
+ (cinsn 12 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/test-return-const.c":4)
+ (cinsn 13 (use (reg/i:SI ax)) "../../src/test-return-const.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_return_42"
+}
+
+int __RTL (startwith ("vregs")) test_return_43 (void)
+{
+ /* C code:
+ return 43; */
+(function "test_return_43"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 5 (set (reg:SI <0> [ _1 ])
+ (const_int 43)) "../../src/test-return-const.c":3)
+ (cinsn 8 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])) "../../src/test-return-const.c":3)
+ (cinsn 12 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/test-return-const.c":4)
+ (cinsn 13 (use (reg/i:SI ax)) "../../src/test-return-const.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_return_43"
+}
+
+int __RTL (startwith ("vregs")) test_return_44 (void)
+{
+ /* C code:
+ return 44; */
+(function "test_return_44"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 5 (set (reg:SI <0> [ _1 ])
+ (const_int 44)) "../../src/test-return-const.c":3)
+ (cinsn 8 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])) "../../src/test-return-const.c":3)
+ (cinsn 12 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/test-return-const.c":4)
+ (cinsn 13 (use (reg/i:SI ax)) "../../src/test-return-const.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_return_44"
+}
+
+int main (void)
+{
+ if (test_return_42 () != 42)
+ abort ();
+ if (test_return_43 () != 43)
+ abort ();
+ if (test_return_44 () != 44)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
new file mode 100644
index 0000000..6c1202d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
@@ -0,0 +1,39 @@
+/* { dg-do run { target x86_64-*-* } } */
+
+extern void abort (void);
+
+int __RTL (startwith ("vregs")) test_returning_constant (void)
+{
+ /* C code:
+ return 42; */
+(function "test_returning_constant"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 5 (set (reg:SI <0> [ _1 ])
+ (const_int 42)) "../../src/test-return-const.c":3)
+ (cinsn 8 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])) "../../src/test-return-const.c":3)
+ (cinsn 12 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/test-return-const.c":4)
+ (cinsn 13 (use (reg/i:SI ax)) "../../src/test-return-const.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_returning_constant"
+}
+
+int main (void)
+{
+ if (test_returning_constant () != 42)
+ abort ();
+ return 0;
+}
diff --git
a/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
new file mode 100644
index 0000000..d83029e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
@@ -0,0 +1,42 @@
+/* { dg-do run { target x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-fwprop1 -O2" } */
+
+extern void abort (void);
+
+int __RTL (startwith ("fwprop1")) test_returning_constant (void)
+{
+ /* C code:
+ return 42; */
+(function "test_returning_constant"
+ (insn-chain
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 5 (set (reg:SI <0> [ <retval> ])
+ (const_int 42)) "../../src/test-return-const.c":3)
+ (cinsn 9 (set (reg/i:SI ax)
+ (const_int 42)) "../../src/test-return-const.c":4
+ (expr_list:REG_DEAD (reg:SI <0> [ <retval> ])))
+ (cinsn 10 (use (reg/i:SI ax)) "../../src/test-return-const.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_returning_constant"
+}
+
+/* Verify that insn 5 is eliminated. */
+/* { dg-final { scan-rtl-dump "deferring deletion of insn with uid = 5"
"fwprop1" } } */
+/* { dg-final { scan-rtl-dump "Deleted 1 trivially dead insns" "fwprop1" } } */
+
+int main (void)
+{
+ if (test_returning_constant () != 42)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
new file mode 100644
index 0000000..4496868
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
@@ -0,0 +1,101 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+
+/* Test of embedding RTL dump in a C function, tagged with "__RTL".
+
+ This is a dump of test.c from immediately after "expand", for x86_64. */
+
+int __RTL test_1 (int i, int j, int k)
+{
+ /*
+ if (i < j)
+ return k + 4;
+ else
+ return -k;
+ */
+(function "test_1"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 4 (flags "FALLTHRU"))
+ (edge-to 5)
+ ) ;; block 2
+ (block 4
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI <3>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (plus:SI (reg:SI <3>)
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 14 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 6)
+ ) ;; block 4
+ (cbarrier 15)
+ (block 5
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI <4>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (neg:SI (reg:SI <4>)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 6 (flags "FALLTHRU"))
+ ) ;; block 5
+ (block 6
+ (edge-from 4)
+ (edge-from 5 (flags "FALLTHRU"))
+ (clabel 20 3)
+ (cnote 21 [bb 6] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 22 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])))
+ (cinsn 26 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 6
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
b/gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
new file mode 100644
index 0000000..a783ea8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
@@ -0,0 +1,16 @@
+/* Shared test code for the various __RTL tests of test_1 that
+ start at different passes. */
+
+extern void abort (void);
+extern int test_1 (int i, int j, int k);
+
+int main (void)
+{
+ if (test_1 (0, 0, 3) != -3)
+ abort ();
+
+ if (test_1 (0, 1, 3) != 7)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
new file mode 100644
index 0000000..a922c62
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
@@ -0,0 +1,70 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+
+extern void abort (void);
+
+int __RTL (startwith ("vregs")) times_two (int i)
+{
+ /* C function:
+ return i * 2; */
+(function "times_two"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ]))
+ ) ;; param "i"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 4 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ])) "../../src/times-two.c":2
+ (nil))
+ (cnote 3 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 6 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/times-two.c":3
+ (nil))
+ (cinsn 7 (parallel [
+ (set (reg:SI <0> [ _2 ])
+ (ashift:SI (reg:SI <2>)
+ (const_int 1)))
+ (clobber (reg:CC flags))
+ ]) "../../src/times-two.c":3
+ (expr_list:REG_EQUAL (ashift:SI (mem/c:SI (plus:DI (reg/f:DI
virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32])
+ (const_int 1))
+ (nil)))
+ (cinsn 10 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _2 ])) "../../src/times-two.c":3
+ (nil))
+ (cinsn 14 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ])) "../../src/times-two.c":4
+ (nil))
+ (cinsn 15 (use (reg/i:SI ax)) "../../src/times-two.c":4
+ (nil))
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "times_two"
+}
+
+int main (void)
+{
+ if (times_two (0) != 0)
+ abort ();
+
+ if (times_two (1) != 2)
+ abort ();
+
+ if (times_two (100) != 200)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.before-df.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.before-df.c
new file mode 100644
index 0000000..45f4961
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.before-df.c
@@ -0,0 +1,54 @@
+/* { dg-do compile { target x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-dfinit" } */
+
+int __RTL (startwith ("rtl-dfinit")) times_two (int i)
+{
+ /* C function:
+ return i * 2; */
+(function "times_two"
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 4 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ])) "../../src/times-two.c":2)
+ (cnote 3 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 6 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/times-two.c":3)
+ (cinsn 7 (parallel [
+ (set (reg:SI <0> [ _2 ])
+ (ashift:SI (reg:SI <2>)
+ (const_int 1)))
+ (clobber (reg:CC flags))
+ ]) "../../src/times-two.c":3
+ (expr_list:REG_EQUAL (ashift:SI (mem/c:SI (plus:DI (reg/f:DI
frame)
+ (const_int -4)) [1 i+0 S4 A32])
+ (const_int 1))))
+ (cinsn 10 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _2 ])) "../../src/times-two.c":3)
+ (cinsn 14 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ])) "../../src/times-two.c":4)
+ (cinsn 15 (use (reg/i:SI ax)) "../../src/times-two.c":4)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 2
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "times_two"
+}
+
+/* Verify that the dataflow information matches what cc1 would have
+ generated. In particular, in earlier versions of the RTL
+ frontend, the exit block use of reg 0 (ax) wasn't picked up
+ on, due to not setting up crtl->return_rtx based on
+ DECL_RESULT (fndecl). */
+
+/* { dg-final { scan-rtl-dump ";; exit block uses.*0 .ax. 6 .bp. 7 .sp. 20
.frame." "dfinit" } } */
+
+/* { dg-final { scan-rtl-dump ";; regs ever live.*0 .ax. 5 .di. 17 .flags."
"dfinit" } } */
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h
b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h
new file mode 100644
index 0000000..3b89cb9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h
@@ -0,0 +1,22 @@
+/* Shared test code for the various __RTL tests of times_two that
+ start at different passes. */
+
+extern void abort (void);
+int times_two (int i);
+
+int main (void)
+{
+ if (times_two (0) != 0)
+ abort ();
+
+ if (times_two (1) != 2)
+ abort ();
+
+ if (times_two (100) != 200)
+ abort ();
+
+ if (times_two (-20) != -40)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c
b/gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c
new file mode 100644
index 0000000..0a3b57a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c
@@ -0,0 +1,112 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-fdump-rtl-vregs" } */
+
+/* Lightly-modified dump of test.c.225r.expand for x86_64. */
+
+#include "test_1.h"
+
+int __RTL (startwith ("vregs")) test_1 (int i, int j, int k)
+{
+(function "test_1"
+ (param "i"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -4)) [1 i+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI di [ i ])))
+ (param "j"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -8)) [1 j+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI si [ j ])))
+ (param "k"
+ (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
+ (const_int -12)) [1 k+0 S4 A32]))
+ (DECL_RTL_INCOMING (reg:SI dx [ k ])))
+ (insn-chain
+ (cnote 1 NOTE_INSN_DELETED)
+ (block 2
+ (edge-from entry (flags "FALLTHRU"))
+ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32])
+ (reg:SI di [ i ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -8)) [1 j+0 S4 A32])
+ (reg:SI si [ j ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32])
+ (reg:SI dx [ k ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
+ (cnote 5 NOTE_INSN_FUNCTION_BEG)
+ (cinsn 8 (set (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -4)) [1 i+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cinsn 9 (set (reg:CCGC flags)
+ (compare:CCGC (reg:SI <2>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -8)) [1 j+0 S4 A32])))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (cjump_insn 10 (set (pc)
+ (if_then_else (ge (reg:CCGC flags)
+ (const_int 0))
+ (label_ref 16)
+ (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
+ (edge-to 4 (flags "FALLTHRU"))
+ (edge-to 5)
+ ) ;; block 2
+ (block 4
+ (edge-from 2 (flags "FALLTHRU"))
+ (cnote 11 [bb 4] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 12 (set (reg:SI <3>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (cinsn 13 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (plus:SI (reg:SI <3>)
+ (const_int 4)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
+ (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI
virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32])
+ (const_int 4))))
+ (cjump_insn 14 (set (pc)
+ (label_ref 20))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
+ (edge-to 6)
+ ) ;; block 4
+ (cbarrier 15)
+ (block 5
+ (edge-from 2)
+ (clabel 16 2)
+ (cnote 17 [bb 5] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 18 (set (reg:SI <4>)
+ (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
+ (cinsn 19 (parallel [
+ (set (reg:SI <0> [ _1 ])
+ (neg:SI (reg:SI <4>)))
+ (clobber (reg:CC flags))
+ ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
+ (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI
virtual-stack-vars)
+ (const_int -12)) [1 k+0 S4 A32]))))
+ (edge-to 6 (flags "FALLTHRU"))
+ ) ;; block 5
+ (block 6
+ (edge-from 4)
+ (edge-from 5 (flags "FALLTHRU"))
+ (clabel 20 3)
+ (cnote 21 [bb 6] NOTE_INSN_BASIC_BLOCK)
+ (cinsn 22 (set (reg:SI <1> [ <retval> ])
+ (reg:SI <0> [ _1 ])))
+ (cinsn 26 (set (reg/i:SI ax)
+ (reg:SI <1> [ <retval> ]))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (cinsn 27 (use (reg/i:SI ax))
"../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
+ (edge-to exit (flags "FALLTHRU"))
+ ) ;; block 6
+ ) ;; insn-chain
+ (crtl
+ (return_rtx
+ (reg/i:SI ax)
+ ) ;; return_rtx
+ ) ;; crtl
+) ;; function "test_1"
+}
+
+/* The 9 instances of "virtual-stack-vars" should now all be "frame". */
+/* { dg-final { scan-rtl-dump-times "frame" 9 "vregs" } } */
+/* { dg-final { scan-rtl-dump-not "virtual-stack-vars" "vregs" } } */
--
1.8.5.3