1 /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
2 
3 extern double sqrt(double x);
4 
5 struct foo
6 {
7   double x;
8   double y;
9 };
10 
11 struct bar
12 {
13   double x;
14   double y;
15 };
16 
test(struct foo * f,const struct bar * b)17 double __RTL test (struct foo *f, const struct bar *b)
18 {
19 #if 0
20   /* Result of "expand" on this C code, compiled for x86_64 with -Os.  */
21   f->x += b->x;
22   f->y += b->y;
23   return sqrt (f->x * f->x + f->y * f->y);
24 #endif
25 (function "test"
26   (insn-chain
27     (cnote 1 NOTE_INSN_DELETED)
28     (block 2
29       (edge-from entry (flags "FALLTHRU"))
30       (cnote 5 [bb 2] NOTE_INSN_BASIC_BLOCK)
31       (cinsn 2 (set (reg/v/f:DI <10> [ f ])
32                     (reg:DI di [ f ])) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":18)
33       (cinsn 3 (set (reg/v/f:DI <11> [ b ])
34                     (reg:DI si [ b ])) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":18)
35       (cnote 4 NOTE_INSN_FUNCTION_BEG)
36       (cinsn 7 (set (reg:DF <12>)
37                     (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)
38       (cinsn 8 (set (reg:DF <2> [ _3 ])
39                     (plus:DF (reg:DF <12>)
40                         (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)
41       (cinsn 9 (set (mem:DF (reg/v/f:DI <10> [ f ]) [2 f_11(D)->x+0 S8 A64])
42                     (reg:DF <2> [ _3 ])) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":21)
43       (cinsn 10 (set (reg:DF <13>)
44                     (mem:DF (plus:DI (reg/v/f:DI <10> [ f ])
45                             (const_int 8)) [2 f_11(D)->y+0 S8 A64])) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
46       (cinsn 11 (set (reg:DF <5> [ _6 ])
47                     (plus:DF (reg:DF <13>)
48                         (mem:DF (plus:DI (reg/v/f:DI <11> [ b ])
49                                 (const_int 8)) [2 b_12(D)->y+0 S8 A64]))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
50       (cinsn 12 (set (mem:DF (plus:DI (reg/v/f:DI <10> [ f ])
51                             (const_int 8)) [2 f_11(D)->y+0 S8 A64])
52                     (reg:DF <5> [ _6 ])) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":22)
53       (cinsn 13 (set (reg:DF <14>)
54                     (mult:DF (reg:DF <2> [ _3 ])
55                         (reg:DF <2> [ _3 ]))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
56       (cinsn 14 (set (reg:DF <15>)
57                     (mult:DF (reg:DF <5> [ _6 ])
58                         (reg:DF <5> [ _6 ]))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
59       (cinsn 15 (set (reg:DF <16>)
60                     (plus:DF (reg:DF <14>)
61                         (reg:DF <15>))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
62       (cinsn 16 (set (reg:DF xmm0)
63                     (reg:DF <16>)) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23)
64       (ccall_insn/j 17 (set (reg:DF xmm0)
65                     (call (mem:QI (symbol_ref:DI ("sqrt") [flags 0x41]  <function_decl 0x7fa24e331d00 sqrt>) [0 __builtin_sqrt S1 A8])
66                         (const_int 0))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23
67                  (expr_list:REG_CALL_DECL (symbol_ref:DI ("sqrt") [flags 0x41]  <function_decl 0x7fa24e331d00 sqrt>)
68                     (expr_list:REG_EH_REGION (const_int 0)))
69                 (expr_list:DF (use (reg:DF xmm0))))
70       (edge-to exit (flags "ABNORMAL | SIBCALL"))
71     ) ;; block 2
72     (cbarrier 18)
73   ) ;; insn-chain
74   (crtl
75     (return_rtx
76       (reg/i:DF xmm0)
77     ) ;; return_rtx
78   ) ;; crtl
79 ) ;; function "test"
80 
81 }
82