view gcc/testsuite/gcc.dg/rtl/x86_64/final.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
/* { dg-options "-fdwarf2-cfi-asm -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" } } */