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 | |