// When linking with link.exe, -gdwarf still produces PDB instead. // UNSUPPORTED: system-windows // RUN: %clangxx_host -gdwarf -std=c++11 -o %t %s // RUN: %lldb %t \ // RUN: -o run \ // RUN: -o "frame var --show-types f" \ // RUN: -o "frame var vla0" \ // RUN: -o "frame var fla0" \ // RUN: -o "frame var fla1" \ // RUN: -o "frame var vla01" \ // RUN: -o "frame var vla10" \ // RUN: -o "frame var vlaN" \ // RUN: -o "frame var vlaNM" \ // RUN: -o exit | FileCheck %s struct Foo { static constexpr int n = 1; int m_vlaN[n]; int m_vla0[0]; }; int main() { Foo f; f.m_vlaN[0] = 60; // CHECK: (lldb) frame var --show-types f // CHECK-NEXT: (Foo) f = { // CHECK-NEXT: (int[1]) m_vlaN = { // CHECK-NEXT: (int) [0] = 60 // CHECK-NEXT: } // CHECK-NEXT: (int[0]) m_vla0 = {} // CHECK-NEXT: } int vla0[0] = {}; // CHECK: (lldb) frame var vla0 // CHECK-NEXT: (int[0]) vla0 = {} int fla0[] = {}; // CHECK: (lldb) frame var fla0 // CHECK-NEXT: (int[0]) fla0 = {} int fla1[] = {42}; // CHECK: (lldb) frame var fla1 // CHECK-NEXT: (int[1]) fla1 = ([0] = 42) int vla01[0][1]; // CHECK: (lldb) frame var vla01 // CHECK-NEXT: (int[0][1]) vla01 = {} int vla10[1][0]; // CHECK: (lldb) frame var vla10 // CHECK-NEXT: (int[1][0]) vla10 = ([0] = int[0] int n = 3; int vlaN[n]; for (int i = 0; i < n; ++i) vlaN[i] = -i; // CHECK: (lldb) frame var vlaN // CHECK-NEXT: (int[]) vlaN = ([0] = 0, [1] = -1, [2] = -2) int m = 2; int vlaNM[n][m]; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) vlaNM[i][j] = i + j; // FIXME: multi-dimensional VLAs aren't well supported // CHECK: (lldb) frame var vlaNM // CHECK-NEXT: (int[][]) vlaNM = { // CHECK-NEXT: [0] = ([0] = 0, [1] = 1, [2] = 1) // CHECK-NEXT: [1] = ([0] = 1, [1] = 1, [2] = 2) // CHECK-NEXT: } __builtin_debugtrap(); }