1 /* PR c/70307 */
2 /* { dg-do compile } */
3 /* { dg-options "-Wno-psabi" } */
4 
5 typedef int v4si __attribute__ ((vector_size (16)));
6 
7 v4si foo (v4si);
8 
9 v4si
fn1(int i)10 fn1 (int i)
11 {
12   return i <= (v4si){(0, 0)};
13 }
14 
15 v4si
fn2(int i)16 fn2 (int i)
17 {
18   v4si r;
19   r = i <= (v4si){(0, 0)};
20   return r;
21 }
22 
23 v4si
fn3(int i)24 fn3 (int i)
25 {
26   return foo (i <= (v4si){(0, 0)});
27 }
28 
29 v4si
fn4(int i)30 fn4 (int i)
31 {
32   struct S { v4si v; };
33   struct S s = { .v = i <= (v4si){(0, 0)} };
34   return s.v;
35 }
36 
37 v4si
fn5(int i)38 fn5 (int i)
39 {
40   return (v4si){(1, i++)} == (v4si){(0, 0)};
41 }
42 
43 v4si
fn6(int i)44 fn6 (int i)
45 {
46   v4si r;
47   r = (v4si){(1, i++)} == (v4si){(0, 0)};
48   return r;
49 }
50 
51 v4si
fn7(int i)52 fn7 (int i)
53 {
54   return foo ((v4si){(1, i++)} == (v4si){(0, 0)});
55 }
56 
57 v4si
fn8(int i)58 fn8 (int i)
59 {
60   struct S { v4si v; };
61   struct S s = { .v = (v4si){(1, i++)} == (v4si){(0, 0)} };
62   return s.v;
63 }
64 
65 /* Ignore a warning that is irrelevant to the purpose of this test.  */
66 /* { dg-prune-output "\[^\n\r\]*GCC vector passed by reference\[^\n\r\]*" } */
67 /* { dg-prune-output "\[^\n\r\]*GCC vector returned by reference\[^\n\r\]*" } */
68