|  | /* This testcase is part of GDB, the GNU debugger. | 
|  |  | 
|  | Copyright 2019-2021 Free Software Foundation, Inc. | 
|  |  | 
|  | 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/>.  */ | 
|  |  | 
|  | struct s1 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | } s1; | 
|  |  | 
|  | struct s2 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | }; | 
|  | } s2; | 
|  |  | 
|  | struct s3 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b; | 
|  | int c; | 
|  | }; | 
|  | }; | 
|  | } s3; | 
|  |  | 
|  | struct s4 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | } l2; | 
|  | } l1; | 
|  | } s4; | 
|  |  | 
|  | struct s5 | 
|  | { | 
|  | union | 
|  | { | 
|  | int raw[3]; | 
|  | struct | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | int z; | 
|  | }; | 
|  | }; | 
|  | } s5; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | union | 
|  | { | 
|  | int raw[3]; | 
|  | struct | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | int z; | 
|  | }; | 
|  | }; | 
|  | } s6_t; | 
|  |  | 
|  | s6_t s6; | 
|  |  | 
|  | struct s7 | 
|  | { | 
|  | struct | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | }; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | }; | 
|  | struct | 
|  | { | 
|  | int b; | 
|  | int c; | 
|  | }; | 
|  | } s7; | 
|  |  | 
|  | struct s8 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b; | 
|  | int c; | 
|  | }; | 
|  | } d1; | 
|  | } s8; | 
|  |  | 
|  | struct s9 | 
|  | { | 
|  | int x; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int k; | 
|  | int j; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b; | 
|  | int c; | 
|  | }; | 
|  | } d1; | 
|  | }; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b; | 
|  | int c; | 
|  | }; | 
|  | } d2; | 
|  | } s9; | 
|  |  | 
|  | struct s10 | 
|  | { | 
|  | int x[10]; | 
|  | int y; | 
|  | struct | 
|  | { | 
|  | int k[10]; | 
|  | int j; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b[10]; | 
|  | int c; | 
|  | }; | 
|  | } d1; | 
|  | }; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | struct | 
|  | { | 
|  | int b[10]; | 
|  | int c; | 
|  | }; | 
|  | } d2; | 
|  | } s10; | 
|  |  | 
|  | struct s11 | 
|  | { | 
|  | int x; | 
|  | char s[10]; | 
|  | struct | 
|  | { | 
|  | int z; | 
|  | int a; | 
|  | }; | 
|  | } s11; | 
|  |  | 
|  | /* The following are C++ inheritance testing.  */ | 
|  | #ifdef __cplusplus | 
|  |  | 
|  | /* This is non-virtual inheritance.  */ | 
|  | struct C1 { int c1 = 1; } c1; | 
|  | struct C2 { int c2 = 2; } c2; | 
|  | struct C3 : C2 { int c3 = 3; } c3; | 
|  | struct C4 { int c4 = 4; } c4; | 
|  | struct C5 : C4 { int c5 = 5; } c5; | 
|  | struct C6 : C5 { int c6 = 6; } c6; | 
|  | struct C7 : C1, C3, C6 { int c7 = 7; } c7; | 
|  |  | 
|  | /* This is virtual inheritance.  */ | 
|  | struct V1 { int v1 = 1; } v1; | 
|  | struct V2 : virtual V1 { int v2 = 2; } v2; | 
|  | struct V3 : virtual V1 { int v3 = 3; } v3; | 
|  | struct V4 : virtual V2 { int v4 = 4; } v4; | 
|  | struct V5 : virtual V2 { int v5 = 1; } v5; | 
|  | struct V6 : virtual V2, virtual V3 { int v6 = 1; } v6; | 
|  | struct V7 : virtual V4, virtual V5, virtual V6 { int v7 = 1; } v7; | 
|  |  | 
|  | #endif /* __cplusplus */ | 
|  |  | 
|  | int | 
|  | main () | 
|  | { | 
|  | return 0; | 
|  | } |