class2.cc revision 1.3
1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2003-2015 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18struct A 19{ 20 virtual ~A (); 21 int a1; 22}; 23 24A::~A() 25{ 26 a1 = 800; 27} 28 29struct B : public A 30{ 31 virtual ~B (); 32 int b1; 33 int b2; 34}; 35 36B::~B() 37{ 38 a1 = 900; 39 b1 = 901; 40 b2 = 902; 41} 42 43struct C : public B 44{ 45 A *c1; 46 A *c2; 47}; 48 49// Stop the compiler from optimizing away data. 50void refer (A *) 51{ 52 ; 53} 54 55struct empty {}; 56 57// Stop the compiler from optimizing away data. 58void refer (empty *) 59{ 60 ; 61} 62 63int main (void) 64{ 65 A alpha, *aap, *abp, *acp; 66 B beta, *bbp; 67 C gamma; 68 empty e; 69 A &aref (alpha); 70 71 alpha.a1 = 100; 72 beta.a1 = 200; beta.b1 = 201; beta.b2 = 202; 73 gamma.c1 = 0; gamma.c2 = (A *) ~0UL; 74 75 aap = α refer (aap); 76 abp = β refer (abp); 77 bbp = β refer (bbp); 78 acp = γ refer (acp); 79 refer (&e); 80 81 return 0; // marker return 0 82} // marker close brace 83