OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.dg/] [ext/] [attribute-test-3.C] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 301 jeremybenn
// { dg-do run }
2
 
3
#define vector __attribute__((vector_size(16)))
4
 
5
extern "C" void abort();
6
 
7
class Star
8
{
9
  public:
10
        inline vector float foo() const;
11
 
12
        Star()
13
          {
14
            data.f[0] = 1.0; data.f[1] = 2.0; data.f[2] = 3.0, data.f[3] = 4.0;
15
          }
16
 
17
  private:
18
         union {
19
              float f[4];
20
              vector float v;
21
         } data;
22
 
23
        friend vector float fTest(const Star &);
24
};
25
 
26
vector float Star::foo() const
27
{
28
    return data.v;
29
}
30
 
31
vector float fTest(const Star & val)
32
{
33
    vector float vf = val.foo();
34
    return vf;
35
}
36
 
37
int main() {
38
 
39
  Star s;
40
 
41
  union u {
42
              float f[4];
43
              vector float v;
44
  } data;
45
 
46
  data.v = fTest(s);
47
  for (int i=0 ; i < 4; i++)
48
     if (data.f[i] != (float)(i+1))
49
       abort();
50
  return 0;
51
}
52
 
53
/* Ignore a warning that is irrelevant to the purpose of this test.  */
54
/* { dg-prune-output ".*GCC vector returned by reference.*" } */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.