(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
rtl/
x86_64/
pro_and_epilogue.c
       1  /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
       2  /* { dg-options "-fdump-rtl-pro_and_epilogue" } */
       3  
       4  /* Lightly-modified dump of test.c.274r.split2 for x86_64.  */
       5  
       6  int __RTL (startwith ("pro_and_epilogue")) test_1 (int i, int j, int k)
       7  {
       8  (function "test_1"
       9    (param "i"
      10      (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
      11          (const_int -4)) [1 i+0 S4 A32]))
      12      (DECL_RTL_INCOMING (reg:SI di [ i ])))
      13    (param "j"
      14      (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
      15          (const_int -8)) [1 j+0 S4 A32]))
      16      (DECL_RTL_INCOMING (reg:SI si [ j ])))
      17    (param "k"
      18      (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI frame)
      19          (const_int -12)) [1 k+0 S4 A32]))
      20      (DECL_RTL_INCOMING (reg:SI dx [ k ])))
      21    (insn-chain
      22      (cnote 1 NOTE_INSN_DELETED)
      23      (block 2
      24        (edge-from entry (flags "FALLTHRU"))
      25        (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
      26        (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI bp)
      27                              (const_int -4)) [1 i+0 S4 A32])
      28                      (reg:SI di [ i ])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
      29        (cinsn 3 (set (mem/c:SI (plus:DI (reg/f:DI bp)
      30                              (const_int -8)) [1 j+0 S4 A32])
      31                      (reg:SI si [ j ])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
      32        (cinsn 4 (set (mem/c:SI (plus:DI (reg/f:DI bp)
      33                              (const_int -12)) [1 k+0 S4 A32])
      34                      (reg:SI dx [ k ])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":2)
      35        (cnote 5 NOTE_INSN_FUNCTION_BEG)
      36        (cinsn 8 (set (reg:SI ax [89])
      37                      (mem/c:SI (plus:DI (reg/f:DI bp)
      38                              (const_int -4)) [1 i+0 S4 A32])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
      39        (cinsn 9 (set (reg:CCGC flags)
      40                      (compare:CCGC (reg:SI ax [89])
      41                          (mem/c:SI (plus:DI (reg/f:DI bp)
      42                                  (const_int -8)) [1 j+0 S4 A32]))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
      43        (cjump_insn 10 (set (pc)
      44                      (if_then_else (ge (reg:CCGC flags)
      45                              (const_int 0))
      46                          (label_ref 16)
      47                          (pc))) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":3)
      48        (edge-to 3 (flags "FALLTHRU"))
      49        (edge-to 4)
      50      ) ;; block 2
      51      (block 3
      52        (edge-from 2 (flags "FALLTHRU"))
      53        (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
      54        (cinsn 12 (set (reg:SI ax [90])
      55                      (mem/c:SI (plus:DI (reg/f:DI bp)
      56                              (const_int -12)) [1 k+0 S4 A32])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
      57        (cinsn 13 (parallel [
      58                          (set (reg:SI ax [orig:87 _1 ] [87])
      59                              (plus:SI (reg:SI ax [90])
      60                                  (const_int 4)))
      61                          (clobber (reg:CC flags))
      62                      ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4
      63                   (expr_list:REG_EQUAL (plus:SI (mem/c:SI (plus:DI (reg/f:DI frame)
      64                                  (const_int -12)) [1 k+0 S4 A32])
      65                          (const_int 4))))
      66        (cjump_insn 29 (set (pc)
      67                      (label_ref 20)) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":4)
      68        (edge-to 5)
      69      ) ;; block 3
      70      (cbarrier 30)
      71      (block 4
      72        (edge-from 2)
      73        (clabel 16 2)
      74        (cnote 17 [bb 4] NOTE_INSN_BASIC_BLOCK)
      75        (cinsn 18 (set (reg:SI ax [91])
      76                      (mem/c:SI (plus:DI (reg/f:DI bp)
      77                              (const_int -12)) [1 k+0 S4 A32])) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6)
      78        (cinsn 19 (parallel [
      79                          (set (reg:SI ax [orig:87 _1 ] [87])
      80                              (neg:SI (reg:SI ax [91])))
      81                          (clobber (reg:CC flags))
      82                      ]) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":6
      83                   (expr_list:REG_EQUAL (neg:SI (mem/c:SI (plus:DI (reg/f:DI frame)
      84                                  (const_int -12)) [1 k+0 S4 A32]))))
      85        (edge-to 5 (flags "FALLTHRU"))
      86      ) ;; block 4
      87      (block 5
      88        (edge-from 4 (flags "FALLTHRU"))
      89        (edge-from 3)
      90        (clabel 20 3)
      91        (cnote 21 [bb 5] NOTE_INSN_BASIC_BLOCK)
      92        (cinsn 27 (use (reg/i:SI ax)) "../../src/gcc/testsuite/gcc.dg/rtl/test.c":7)
      93        (edge-to exit (flags "FALLTHRU"))
      94      ) ;; block 5
      95      (cnote 31 NOTE_INSN_DELETED)
      96    ) ;; insn-chain
      97    (crtl
      98      (return_rtx 
      99        (reg/i:SI ax)
     100      ) ;; return_rtx
     101    ) ;; crtl
     102  ) ;; function "test_1"
     103  }
     104  
     105  /* Verify that the prologue and epilogue were added.  */
     106  /* { dg-final { scan-rtl-dump-times "NOTE_INSN_PROLOGUE_END" 1 "pro_and_epilogue" } }  */
     107  
     108  /* We expect a jump_insn to "simple_return".  */
     109  /* { dg-final { scan-rtl-dump-times "simple_return" 2 "pro_and_epilogue" } }  */
     110