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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [g++.dg/] [template/] [ptrmem18.C] - Blame information for rev 328

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

Line No. Rev Author Line
1 301 jeremybenn
// PR c++/33616
2
// { dg-do run }
3
// { dg-options "-O2" }
4
 
5
extern "C" void abort ();
6
 
7
struct S {
8
  int c;
9
  S () : c (0) {}
10
  virtual void f1 () { c += 1; }
11
  virtual void f2 () { c += 16; }
12
};
13
 
14
struct T {
15
  S s;
16
};
17
 
18
typedef void (S::*Q) ();
19
 
20
template 
21
void test1 (T *t)
22
{
23
  (t->s.*P)();
24
}
25
 
26
template 
27
void test2 (T *t)
28
{
29
  S &s = t->s;
30
  (s.*P)();
31
}
32
 
33
int
34
main ()
35
{
36
  T t;
37
  test1 <&S::f1> (&t);
38
  if (t.s.c != 1)
39
    abort ();
40
  test1 <&S::f2> (&t);
41
  if (t.s.c != 17)
42
    abort ();
43
  test2 <&S::f1> (&t);
44
  if (t.s.c != 18)
45
    abort ();
46
  test2 <&S::f2> (&t);
47
  if (t.s.c != 34)
48
    abort ();
49
}

powered by: WebSVN 2.1.0

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