1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2014-2017 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 struct container; 19 20 struct element 21 { 22 container &c; 23 24 element(container &cc) : c (cc) { } 25 }; 26 27 struct container 28 { 29 element e; 30 31 container() : e(*this) { } 32 }; 33 34 int main(int argc, char **argv) 35 { 36 int z = 3; 37 // Note that this is a GNU extension. 38 int vla[z]; 39 typeof (vla) &vlaref (vla); 40 typedef typeof (vla) &vlareftypedef; 41 vlareftypedef vlaref2 (vla); 42 container c; 43 44 for (int i = 0; i < z; ++i) 45 vla[i] = 5 + 2 * i; 46 47 // vlas_filled 48 vla[0] = 2 * vla[0]; 49 return vla[2]; 50 } 51