@@ -161,12 +161,17 @@ define void @derived_type() !dbg !3 {
161161
162162; CHECK-DAG: #[[INT:.+]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "int">
163163; 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"{{.*}}>
164166; CHECK-DAG: #[[COMP1:.+]] = #llvm.di_composite_type<tag = DW_TAG_array_type, name = "array1", line = 10, baseType = #[[INT]], sizeInBits = 128, alignInBits = 32>
165167; CHECK-DAG: #[[COMP2:.+]] = #llvm.di_composite_type<{{.*}}, file = #[[FILE]], scope = #[[FILE]], baseType = #[[INT]]>
166168; CHECK-DAG: #[[COMP3:.+]] = #llvm.di_composite_type<{{.*}}, flags = Vector, elements = #llvm.di_subrange<count = 4 : i64>>
167169; 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
170175
171176define void @composite_type () !dbg !3 {
172177 ret void
@@ -179,7 +184,7 @@ define void @composite_type() !dbg !3 {
179184!2 = !DIFile (filename: "debug-info.ll" , directory: "/" )
180185!3 = distinct !DISubprogram (name: "composite_type" , scope: !2 , file: !2 , spFlags: DISPFlagDefinition, unit: !1 , type: !4 )
181186!4 = !DISubroutineType (types: !5 )
182- !5 = !{!7 , !8 , !9 , !10 , !18 }
187+ !5 = !{!7 , !8 , !9 , !10 , !18 , !22 }
183188!6 = !DIBasicType (name: "int" )
184189!7 = !DICompositeType (tag: DW_TAG_array_type, name: "array1" , line: 10 , size: 128 , align: 32 , baseType: !6 )
185190!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 {
189194!12 = !DISubrange (lowerBound: 0 , upperBound: 4 , stride: 1 )
190195!13 = !{!11 }
191196!14 = !{!12 }
192-
193- ; Verifies that unsupported subrange nodes are skipped.
194- !15 = !DISubrange (count: !16 )
197+ !15 = !DISubrange (count: !16 , stride: !23 )
195198!16 = !DILocalVariable (scope: !3 , name: "size" )
196199!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+
198207
199208; // -----
200209
0 commit comments