@@ -161,12 +161,17 @@ define void @derived_type() !dbg !3 {
161
161
162
162
; CHECK-DAG: #[[INT:.+]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int">
163
163
; CHECK-DAG: #[[FILE:.+]] = #llvm.di_file<"debug-info.ll" in "/">
164
+ ; CHECK-DAG: #[[VAR:.+]] = #llvm.di_local_variable<{{.*}}name = "size">
165
+ ; CHECK-DAG: #[[GV:.+]] = #llvm.di_global_variable<{{.*}}name = "gv"{{.*}}>
164
166
; CHECK-DAG: #[[COMP1:.+]] = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array1", line = 10, baseType = #[[INT]], sizeInBits = 128, alignInBits = 32>
165
167
; CHECK-DAG: #[[COMP2:.+]] = #llvm.di_composite_type<{{.*}}, file = #[[FILE]], scope = #[[FILE]], baseType = #[[INT]]>
166
168
; CHECK-DAG: #[[COMP3:.+]] = #llvm.di_composite_type<{{.*}}, flags = Vector, elements = #llvm.di_subrange<count = 4 : i64>>
167
169
; CHECK-DAG: #[[COMP4:.+]] = #llvm.di_composite_type<{{.*}}, flags = Vector, elements = #llvm.di_subrange<lowerBound = 0 : i64, upperBound = 4 : i64, stride = 1 : i64>>
168
- ; CHECK-DAG: #[[COMP5:.+]] = #llvm.di_composite_type<{{.*}}, flags = Vector>
169
- ; CHECK-DAG: #llvm.di_subroutine_type<types = #[[COMP1]], #[[COMP2]], #[[COMP3]], #[[COMP4]], #[[COMP5]]>
170
+ ; CHECK-DAG: #[[COMP5:.+]] = #llvm.di_composite_type<{{.*}}, name = "var_elements"{{.*}}elements = #llvm.di_subrange<count = #[[VAR]], stride = #[[GV]]>>
171
+ ; CHECK-DAG: #[[COMP6:.+]] = #llvm.di_composite_type<{{.*}}, name = "expr_elements"{{.*}}elements = #llvm.di_subrange<count = #llvm.di_expression<[DW_OP_push_object_address, DW_OP_plus_uconst(16), DW_OP_deref]>>>
172
+ ; CHECK-DAG: #llvm.di_subroutine_type<types = #[[COMP1]], #[[COMP2]], #[[COMP3]], #[[COMP4]], #[[COMP5]], #[[COMP6]]>
173
+
174
+ @gv = external global i64
170
175
171
176
define void @composite_type () !dbg !3 {
172
177
ret void
@@ -179,7 +184,7 @@ define void @composite_type() !dbg !3 {
179
184
!2 = !DIFile (filename: "debug-info.ll" , directory: "/" )
180
185
!3 = distinct !DISubprogram (name: "composite_type" , scope: !2 , file: !2 , spFlags: DISPFlagDefinition, unit: !1 , type: !4 )
181
186
!4 = !DISubroutineType (types: !5 )
182
- !5 = !{!7 , !8 , !9 , !10 , !18 }
187
+ !5 = !{!7 , !8 , !9 , !10 , !18 , !22 }
183
188
!6 = !DIBasicType (name: "int" )
184
189
!7 = !DICompositeType (tag: DW_TAG_array_type, name: "array1" , line: 10 , size: 128 , align: 32 , baseType: !6 )
185
190
!8 = !DICompositeType (tag: DW_TAG_array_type, name: "array2" , file: !2 , scope: !2 , baseType: !6 )
@@ -189,12 +194,16 @@ define void @composite_type() !dbg !3 {
189
194
!12 = !DISubrange (lowerBound: 0 , upperBound: 4 , stride: 1 )
190
195
!13 = !{!11 }
191
196
!14 = !{!12 }
192
-
193
- ; Verifies that unsupported subrange nodes are skipped.
194
- !15 = !DISubrange (count: !16 )
197
+ !15 = !DISubrange (count: !16 , stride: !23 )
195
198
!16 = !DILocalVariable (scope: !3 , name: "size" )
196
199
!17 = !{!15 }
197
- !18 = !DICompositeType (tag: DW_TAG_array_type, name: "unsupported_elements" , flags: DIFlagVector, elements: !17 , baseType: !6 )
200
+ !18 = !DICompositeType (tag: DW_TAG_array_type, name: "var_elements" , flags: DIFlagVector, elements: !17 , baseType: !6 )
201
+ !19 = !DISubrange (count: !20 )
202
+ !20 = !DIExpression (DW_OP_push_object_address, DW_OP_plus_uconst, 16 , DW_OP_deref)
203
+ !21 = !{!19 }
204
+ !22 = !DICompositeType (tag: DW_TAG_array_type, name: "expr_elements" , flags: DIFlagVector, elements: !21 , baseType: !6 )
205
+ !23 = !DIGlobalVariable (name: "gv" , scope: !1 , file: !2 , line: 3 , type: !6 , isLocal: false , isDefinition: false )
206
+
198
207
199
208
; // -----
200
209
0 commit comments