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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.other/] [anon3.C] - Blame information for rev 749

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 699 jeremybenn
// { dg-do run  }
2
// Copyright (C) 1999 Free Software Foundation, Inc.
3
// Contributed by Nathan Sidwell 20 May 1999 
4
 
5
// Although anon unions cannot have user defined member functions
6
// [class.union/2].  They should have implicitly defined copy ctors and
7
// and the like [class.copy/4].  Make sure we generate one of the correct
8
// signature and that it works ok.
9
 
10
extern "C" void abort();
11
 
12
struct A
13
{
14
  union
15
  {
16
    int a;
17
  };
18
};
19
union B
20
{
21
  int a;
22
};
23
 
24
static A Ctor(A const &src)
25
{
26
  A result(src);  // this should not cause a const violation
27
 
28
  result = src;   // and neither should this
29
 
30
  return result;
31
}
32
 
33
typedef __SIZE_TYPE__ size_t;
34
 
35
void *operator new(size_t, void *ptr)
36
{
37
  return ptr;
38
}
39
 
40
// check copy ctor and assignment for plain union
41
void check_union()
42
{
43
  B b1;
44
  B b2;
45
 
46
  b1.a = 5;
47
  b2.a = 6;
48
  b2 = b1;
49
  if(b2.a != 5)
50
    abort();
51
 
52
  b2.a = 6;
53
  new (&b2) B(b1);
54
  if(b2.a != 5)
55
    abort();
56
 
57
  return;
58
}
59
 
60
// check copy ctor and assignment for class containing anon-union
61
void check_union_member()
62
{
63
  A a1;
64
  A a2;
65
 
66
  a1.a = 5;
67
  a2.a = 6;
68
  a2 = a1;
69
  if(a2.a != 5)
70
    abort();
71
 
72
  a2.a = 6;
73
  new (&a2) A(a1);
74
  if(a2.a != 5)
75
    abort();
76
 
77
  return;
78
}
79
 
80
int main()
81
{
82
  check_union();
83
  check_union_member();
84
 
85
  return 0;
86
}

powered by: WebSVN 2.1.0

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