@@ -120,7 +120,7 @@ fn build_fixed_size_array_di_node<'ll, 'tcx>(
120120 unsafe { Some ( llvm:: LLVMRustDIBuilderGetOrCreateSubrange ( DIB ( cx) , 0 , upper_bound) ) } ;
121121
122122 let subscripts = create_DIArray ( DIB ( cx) , & [ subrange] ) ;
123- let di_node = unsafe {
123+ let mut di_node = unsafe {
124124 llvm:: LLVMRustDIBuilderCreateArrayType (
125125 DIB ( cx) ,
126126 size. bits ( ) ,
@@ -130,6 +130,21 @@ fn build_fixed_size_array_di_node<'ll, 'tcx>(
130130 )
131131 } ;
132132
133+ if cpp_like_debuginfo ( cx. tcx ) {
134+ let array_type_name = compute_debuginfo_type_name ( cx. tcx , array_type, false ) ;
135+ di_node = unsafe {
136+ llvm:: LLVMRustDIBuilderCreateTypedef (
137+ DIB ( cx) ,
138+ di_node,
139+ array_type_name. as_c_char_ptr ( ) ,
140+ array_type_name. len ( ) ,
141+ unknown_file_metadata ( cx) ,
142+ UNKNOWN_LINE_NUMBER ,
143+ None ,
144+ )
145+ } ;
146+ }
147+
133148 DINodeCreationResult :: new ( di_node, false )
134149}
135150
@@ -183,8 +198,19 @@ fn build_pointer_or_reference_di_node<'ll, 'tcx>(
183198 ptr_type_debuginfo_name. len ( ) ,
184199 )
185200 } ;
201+ let typedefed_ptr = unsafe {
202+ llvm:: LLVMRustDIBuilderCreateTypedef (
203+ DIB ( cx) ,
204+ di_node,
205+ ptr_type_debuginfo_name. as_c_char_ptr ( ) ,
206+ ptr_type_debuginfo_name. len ( ) ,
207+ unknown_file_metadata ( cx) ,
208+ UNKNOWN_LINE_NUMBER ,
209+ None ,
210+ )
211+ } ;
186212
187- DINodeCreationResult { di_node, already_stored_in_typemap : false }
213+ DINodeCreationResult { di_node : typedefed_ptr , already_stored_in_typemap : false }
188214 }
189215 Some ( wide_pointer_kind) => {
190216 type_map:: build_type_with_children (
0 commit comments