1 // When linking with link.exe, -gdwarf still produces PDB instead. 2 // UNSUPPORTED: system-windows 3 4 // RUN: %clangxx_host -gdwarf -std=c++11 -o %t %s 5 // RUN: %lldb %t \ 6 // RUN: -o run \ 7 // RUN: -o "frame var --show-types f" \ 8 // RUN: -o "frame var vla0" \ 9 // RUN: -o "frame var fla0" \ 10 // RUN: -o "frame var fla1" \ 11 // RUN: -o "frame var vla01" \ 12 // RUN: -o "frame var vla10" \ 13 // RUN: -o "frame var vlaN" \ 14 // RUN: -o "frame var vlaNM" \ 15 // RUN: -o exit | FileCheck %s 16 17 struct Foo { 18 static constexpr int n = 1; 19 int m_vlaN[n]; 20 21 int m_vla0[0]; 22 }; 23 24 int main() { 25 Foo f; 26 f.m_vlaN[0] = 60; 27 28 // CHECK: (lldb) frame var --show-types f 29 // CHECK-NEXT: (Foo) f = { 30 // CHECK-NEXT: (int[1]) m_vlaN = { 31 // CHECK-NEXT: (int) [0] = 60 32 // CHECK-NEXT: } 33 // CHECK-NEXT: (int[0]) m_vla0 = {} 34 // CHECK-NEXT: } 35 36 int vla0[0] = {}; 37 38 // CHECK: (lldb) frame var vla0 39 // CHECK-NEXT: (int[0]) vla0 = {} 40 41 int fla0[] = {}; 42 43 // CHECK: (lldb) frame var fla0 44 // CHECK-NEXT: (int[0]) fla0 = {} 45 46 int fla1[] = {42}; 47 48 // CHECK: (lldb) frame var fla1 49 // CHECK-NEXT: (int[1]) fla1 = ([0] = 42) 50 51 int vla01[0][1]; 52 53 // CHECK: (lldb) frame var vla01 54 // CHECK-NEXT: (int[0][1]) vla01 = {} 55 56 int vla10[1][0]; 57 58 // CHECK: (lldb) frame var vla10 59 // CHECK-NEXT: (int[1][0]) vla10 = ([0] = int[0] 60 61 int n = 3; 62 int vlaN[n]; 63 for (int i = 0; i < n; ++i) 64 vlaN[i] = -i; 65 66 // CHECK: (lldb) frame var vlaN 67 // CHECK-NEXT: (int[]) vlaN = ([0] = 0, [1] = -1, [2] = -2) 68 69 int m = 2; 70 int vlaNM[n][m]; 71 for (int i = 0; i < n; ++i) 72 for (int j = 0; j < m; ++j) 73 vlaNM[i][j] = i + j; 74 75 // FIXME: multi-dimensional VLAs aren't well supported 76 // CHECK: (lldb) frame var vlaNM 77 // CHECK-NEXT: (int[][]) vlaNM = { 78 // CHECK-NEXT: [0] = ([0] = 0, [1] = 1, [2] = 1) 79 // CHECK-NEXT: [1] = ([0] = 1, [1] = 1, [2] = 2) 80 // CHECK-NEXT: } 81 82 __builtin_debugtrap(); 83 } 84