1  /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
       2  
       3  extern void abort (void);
       4  
       5  int __RTL (startwith ("vregs")) times_two (int i)
       6  {
       7    /* C function:
       8       return i * 2;  */
       9  (function "times_two"
      10    (param "i"
      11      (DECL_RTL (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
      12                      (const_int -4)) [1 i+0 S4 A32]))
      13      (DECL_RTL_INCOMING (reg:SI di [ i ]))
      14    ) ;; param "i"
      15    (insn-chain
      16      (cnote 1 NOTE_INSN_DELETED)
      17      (block 2
      18        (edge-from entry (flags "FALLTHRU"))
      19        (cnote 4 [bb 2] NOTE_INSN_BASIC_BLOCK)
      20        (cinsn 2 (set (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
      21                              (const_int -4)) [1 i+0 S4 A32])
      22                      (reg:SI di [ i ])) "../../src/times-two.c":2
      23                   (nil))
      24        (cnote 3 NOTE_INSN_FUNCTION_BEG)
      25        (cinsn 6 (set (reg:SI <2>)
      26                      (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
      27                              (const_int -4)) [1 i+0 S4 A32])) "../../src/times-two.c":3
      28                   (nil))
      29        (cinsn 7 (parallel [
      30                          (set (reg:SI <0> [ _2 ])
      31                              (ashift:SI (reg:SI <2>)
      32                                  (const_int 1)))
      33                          (clobber (reg:CC flags))
      34                      ]) "../../src/times-two.c":3
      35                   (expr_list:REG_EQUAL (ashift:SI (mem/c:SI (plus:DI (reg/f:DI virtual-stack-vars)
      36                                  (const_int -4)) [1 i+0 S4 A32])
      37                          (const_int 1))
      38                      (nil)))
      39        (cinsn 10 (set (reg:SI <1> [ <retval> ])
      40                      (reg:SI <0> [ _2 ])) "../../src/times-two.c":3
      41                   (nil))
      42        (cinsn 14 (set (reg/i:SI ax)
      43                      (reg:SI <1> [ <retval> ])) "../../src/times-two.c":4
      44                   (nil))
      45        (cinsn 15 (use (reg/i:SI ax)) "../../src/times-two.c":4
      46                   (nil))
      47        (edge-to exit (flags "FALLTHRU"))
      48      ) ;; block 2
      49    ) ;; insn-chain
      50    (crtl
      51      (return_rtx 
      52        (reg/i:SI ax)
      53      ) ;; return_rtx
      54    ) ;; crtl
      55  ) ;; function "times_two"
      56  }
      57  
      58  int main (void)
      59  {
      60    if (times_two (0) != 0)
      61      abort ();
      62  
      63    if (times_two (1) != 2)
      64      abort ();
      65  
      66    if (times_two (100) != 200)
      67      abort ();
      68  
      69    return 0;
      70  }