| /* 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; |
| } |