Home | History | Annotate | Line # | Download | only in gdb.cp
ambiguous.cc revision 1.1.1.3
      1 class empty { };
      2 
      3 class A1 {
      4 public:
      5   int x;
      6   int y;
      7 };
      8 
      9 class A2 {
     10 public:
     11   int x;
     12   int y;
     13 };
     14 
     15 class A3 {
     16 public:
     17   int x;
     18   int y;
     19 };
     20 
     21 #if !defined (__GNUC__) || __GNUC__ > 7
     22 # define NO_UNIQUE_ADDRESS [[no_unique_address]]
     23 #else
     24 # define NO_UNIQUE_ADDRESS
     25 #endif
     26 
     27 class A4 {
     28 public:
     29     NO_UNIQUE_ADDRESS empty x;
     30 };
     31 
     32 class X : public A1, public A2 {
     33 public:
     34   int z;
     35 };
     36 
     37 class L : public A1 {
     38 public:
     39   int z;
     40 };
     41 
     42 class LV : public virtual A1 {
     43 public:
     44   int z;
     45 };
     46 
     47 class M : public A2 {
     48 public:
     49   int w;
     50 };
     51 
     52 class N : public L, public M {
     53 public:
     54   int r;
     55 };
     56 
     57 class K : public A1 {
     58 public:
     59   int i;
     60 };
     61 
     62 class KV : public virtual A1 {
     63 public:
     64   int i;
     65 };
     66 
     67 class J : public K, public L {
     68 public:
     69   int j;
     70 };
     71 
     72 class JV : public KV, public LV {
     73 public:
     74   int jv;
     75 };
     76 
     77 class JVA1 : public KV, public LV, public A1 {
     78 public:
     79   int jva1;
     80 };
     81 
     82 class JVA2 : public KV, public LV, public A2 {
     83 public:
     84   int jva2;
     85 };
     86 
     87 class JVA1V : public KV, public LV, public virtual A1 {
     88 public:
     89   int jva1v;
     90 };
     91 
     92 class JE : public A1, public A4 {
     93 public:
     94 };
     95 
     96 int main()
     97 {
     98   A1 a1;
     99   A2 a2;
    100   A3 a3;
    101   X x;
    102   L l;
    103   M m;
    104   N n;
    105   K k;
    106   J j;
    107   JV jv;
    108   JVA1 jva1;
    109   JVA2 jva2;
    110   JVA1V jva1v;
    111   JE je;
    112 
    113   int i;
    114 
    115   i += k.i + m.w + a1.x + a2.x + a3.x + x.z + l.z + n.r + j.j;
    116 
    117   /* Initialize all the fields.  Keep the order the same as in the
    118      .exp file.  */
    119 
    120   a1.x = 1;
    121   a1.y = 2;
    122 
    123   a2.x = 1;
    124   a2.y = 2;
    125 
    126   a3.x = 1;
    127   a3.y = 2;
    128 
    129   x.A1::x = 1;
    130   x.A1::y = 2;
    131   x.A2::x = 3;
    132   x.A2::y = 4;
    133   x.z = 5;
    134 
    135   l.x = 1;
    136   l.y = 2;
    137   l.z = 3;
    138 
    139   m.x = 1;
    140   m.y = 2;
    141   m.w = 3;
    142 
    143   n.A1::x = 1;
    144   n.A1::y = 2;
    145   n.A2::x = 3;
    146   n.A2::y = 4;
    147   n.w = 5;
    148   n.r = 6;
    149   n.z = 7;
    150 
    151   k.x = 1;
    152   k.y = 2;
    153   k.i = 3;
    154 
    155   j.K::x = 1;
    156   j.K::y = 2;
    157   j.L::x = 3;
    158   j.L::y = 4;
    159   j.i = 5;
    160   j.z = 6;
    161   j.j = 7;
    162 
    163   jv.x = 1;
    164   jv.y = 2;
    165   jv.i = 3;
    166   jv.z = 4;
    167   jv.jv = 5;
    168 
    169   jva1.KV::x = 1;
    170   jva1.KV::y = 2;
    171   jva1.LV::x = 3;
    172   jva1.LV::y = 4;
    173   jva1.z = 5;
    174   jva1.i = 6;
    175   jva1.jva1 = 7;
    176 
    177   jva2.KV::x = 1;
    178   jva2.KV::y = 2;
    179   jva2.LV::x = 3;
    180   jva2.LV::y = 4;
    181   jva2.A2::x = 5;
    182   jva2.A2::y = 6;
    183   jva2.z = 7;
    184   jva2.i = 8;
    185   jva2.jva2 = 9;
    186 
    187   jva1v.x = 1;
    188   jva1v.y = 2;
    189   jva1v.z = 3;
    190   jva1v.i = 4;
    191   jva1v.jva1v = 5;
    192 
    193   je.A1::x = 1;
    194 
    195   return 0; /* set breakpoint here */
    196 }
    197