1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2003, 2004, 2007 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 */ 18 19struct A 20{ 21 virtual ~A (); 22 int a1; 23}; 24 25A::~A() 26{ 27 a1 = 800; 28} 29 30struct B : public A 31{ 32 virtual ~B (); 33 int b1; 34 int b2; 35}; 36 37B::~B() 38{ 39 a1 = 900; 40 b1 = 901; 41 b2 = 902; 42} 43 44// Stop the compiler from optimizing away data. 45void refer (A *) 46{ 47 ; 48} 49 50struct empty {}; 51 52// Stop the compiler from optimizing away data. 53void refer (empty *) 54{ 55 ; 56} 57 58int main (void) 59{ 60 A alpha, *aap, *abp; 61 B beta, *bbp; 62 empty e; 63 64 alpha.a1 = 100; 65 beta.a1 = 200; beta.b1 = 201; beta.b2 = 202; 66 67 aap = α refer (aap); 68 abp = β refer (abp); 69 bbp = β refer (bbp); 70 refer (&e); 71 72 return 0; // marker return 0 73} // marker close brace 74