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