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
      10  fn1 (int i)
      11  {
      12    return i <= (v4si){(0, 0)};
      13  }
      14  
      15  v4si
      16  fn2 (int i)
      17  {
      18    v4si r;
      19    r = i <= (v4si){(0, 0)};
      20    return r;
      21  }
      22  
      23  v4si
      24  fn3 (int i)
      25  {
      26    return foo (i <= (v4si){(0, 0)});
      27  }
      28  
      29  v4si
      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
      38  fn5 (int i)
      39  {
      40    return (v4si){(1, i++)} == (v4si){(0, 0)};
      41  }
      42  
      43  v4si
      44  fn6 (int i)
      45  {
      46    v4si r;
      47    r = (v4si){(1, i++)} == (v4si){(0, 0)};
      48    return r;
      49  }
      50  
      51  v4si
      52  fn7 (int i)
      53  {
      54    return foo ((v4si){(1, i++)} == (v4si){(0, 0)});
      55  }
      56  
      57  v4si
      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\]*" } */