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/] [ptrmem8.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 assemble  }
2
// Copyright (C) 2000 Free Software Foundation, Inc.
3
// Contributed by Nathan Sidwell 22 Nov 2000 
4
 
5
// bug 827. We died issuing warnings about dangerous pointer to member
6
// conversions.
7
 
8
struct bar
9
{
10
  int barm;
11
    static void a();
12
};
13
struct filler1 {int fm;};
14
struct filler2 {int fm;};
15
struct filler3 {int fm;};
16
struct filler4 {int fm;};
17
 
18
struct baz : filler1, bar, filler2
19
{
20
  int bazm;
21
};
22
 
23
struct foo : filler3, virtual baz, filler4
24
{
25
    static void a();
26
    void b() {}
27
    int m;
28
};
29
 
30
typedef void (bar::*barfPtr)();
31
typedef void (foo::*foofPtr)();
32
typedef int bar::*barmPtr;
33
typedef int foo::*foomPtr;
34
 
35
int main ()
36
{
37
  foofPtr fp = &foo::b;
38
  barfPtr bp = (barfPtr)fp;         // { dg-error "pointer to member" }
39
  foofPtr fp2 = (foofPtr)bp;        // { dg-error "pointer to member" }
40
 
41
  if (fp2 != fp)
42
    return 1;
43
 
44
  foo fobj;
45
  fobj.filler1::fm = 1;
46
  fobj.filler2::fm = 2;
47
  fobj.filler3::fm = 3;
48
  fobj.filler4::fm = 4;
49
  fobj.bazm = 5;
50
  fobj.barm = 6;
51
  fobj.m = 78;
52
 
53
  foomPtr fmp = &foo::m;
54
  barmPtr bmp = (barmPtr)fmp;          // { dg-error "pointer to member" }
55
  foomPtr fmp2 = (foomPtr)bmp;         // { dg-error "pointer to member" }
56
  bar *bptr = &fobj;
57
 
58
  if (fmp != fmp2)
59
    return 2;
60
 
61
  if (bptr->*bmp != 78)
62
    return 3;
63
 
64
  bp = reinterpret_cast  (fp);
65
  fp2 = reinterpret_cast  (bp);
66
  if (fp2 != fp)
67
    return 4;
68
 
69
  bmp = reinterpret_cast  (fmp);
70
  fmp2 = reinterpret_cast  (bmp);
71
  if (fmp != fmp2)
72
    return 5;
73
 
74
  return 0;
75
}

powered by: WebSVN 2.1.0

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