aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/pr53060.c
blob: 503f05407742eff5bc7dad4852c23329ff1db095 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* { dg-do run } */

extern void abort (void);

int                     f(void) { return 2; }
unsigned int            g(void) { return 5; }
unsigned int            h = 1;

typedef unsigned int vec __attribute__((vector_size(16)));

vec i = { 1, 2, 3, 4};

vec fv1(void) { return i + (h ? f() : g()); }
vec fv2(void) { return (h ? f() : g()) + i; }

int main()
{
  vec i, j;
  j = fv1();
  if (j[0] != 3) abort();
  i = fv2();
  if (i[0] != 3) abort();
  return 0;
}

/* Ignore a warning that is irrelevant to the purpose of this test.  */
/* { dg-prune-output ".*GCC vector returned by reference.*" } */
/* { dg-prune-output "changes the ABI" } */