2014-09-08 14:04:59 +00:00
|
|
|
/* This testcase is part of GDB, the GNU debugger.
|
|
|
|
|
2016-01-01 04:33:14 +00:00
|
|
|
Copyright 2014-2016 Free Software Foundation, Inc.
|
2014-09-08 14:04:59 +00:00
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
|
|
class A
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
A () {}
|
|
|
|
A (A &obj);
|
|
|
|
|
|
|
|
int a;
|
|
|
|
};
|
|
|
|
|
|
|
|
A::A(A &obj)
|
|
|
|
{
|
|
|
|
a = obj.a;
|
|
|
|
}
|
|
|
|
|
|
|
|
A
|
|
|
|
f1 (int i1, int i2)
|
|
|
|
{
|
|
|
|
A a;
|
|
|
|
|
|
|
|
a.a = i1 + i2;
|
|
|
|
|
|
|
|
return a;
|
|
|
|
}
|
|
|
|
|
|
|
|
class B
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
B () {}
|
|
|
|
B (const B &obj);
|
|
|
|
|
|
|
|
int b;
|
|
|
|
};
|
|
|
|
|
|
|
|
B::B(const B &obj)
|
|
|
|
{
|
|
|
|
b = obj.b;
|
|
|
|
}
|
|
|
|
|
|
|
|
B
|
|
|
|
f2 (int i1, int i2)
|
|
|
|
{
|
|
|
|
B b;
|
|
|
|
|
|
|
|
b.b = i1 + i2;
|
|
|
|
|
|
|
|
return b;
|
|
|
|
}
|
|
|
|
|
2014-10-16 14:14:13 +00:00
|
|
|
class B1
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
B1 () {}
|
|
|
|
/* This class exists to test that GDB does not trip on other
|
|
|
|
constructors (not copy constructors) which take one
|
|
|
|
argument. Hence, put this decl before the copy-ctor decl.
|
|
|
|
If it is put after copy-ctor decl, then the decision to mark
|
|
|
|
this class as non-trivial will already be made and GDB will
|
|
|
|
not look at this constructor. */
|
|
|
|
B1 (int i);
|
|
|
|
B1 (const B1 &obj);
|
|
|
|
|
|
|
|
int b1;
|
|
|
|
};
|
|
|
|
|
|
|
|
B1::B1 (const B1 &obj)
|
|
|
|
{
|
|
|
|
b1 = obj.b1;
|
|
|
|
}
|
|
|
|
|
|
|
|
B1::B1 (int i) : b1 (i) { }
|
|
|
|
|
|
|
|
B1
|
|
|
|
f22 (int i1, int i2)
|
|
|
|
{
|
|
|
|
B1 b1;
|
|
|
|
|
|
|
|
b1.b1 = i1 + i2;
|
|
|
|
|
|
|
|
return b1;
|
|
|
|
}
|
|
|
|
|
2014-09-09 13:46:14 +00:00
|
|
|
class C
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual int method ();
|
|
|
|
|
|
|
|
int c;
|
|
|
|
};
|
|
|
|
|
|
|
|
int
|
|
|
|
C::method ()
|
|
|
|
{
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
C
|
|
|
|
f3 (int i1, int i2)
|
|
|
|
{
|
|
|
|
C c;
|
|
|
|
|
|
|
|
c.c = i1 + i2;
|
|
|
|
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
class D
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int d;
|
|
|
|
};
|
|
|
|
|
|
|
|
class E : public virtual D
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int e;
|
|
|
|
};
|
|
|
|
|
|
|
|
E
|
|
|
|
f4 (int i1, int i2)
|
|
|
|
{
|
|
|
|
E e;
|
|
|
|
|
|
|
|
e.e = i1 + i2;
|
|
|
|
|
|
|
|
return e;
|
|
|
|
}
|
|
|
|
|
2014-09-08 14:04:59 +00:00
|
|
|
int
|
|
|
|
main (void)
|
|
|
|
{
|
|
|
|
int i1 = 23;
|
|
|
|
int i2 = 100;
|
|
|
|
|
|
|
|
return 0; /* Break here */
|
|
|
|
}
|