424 lines · yaml
1# RUN: yaml2obj %s | llvm-dwarfdump --statistics - | FileCheck %s2 3## Check that zero coverage was reported for inlined variable with4## DW_AT_abstract_origin with no location attribute as well as5## for the variable that has not been generated within the inlined subroutine.6##7## The yaml represents DWARF as:8##9## DW_TAG_compile_unit10## DW_AT_low_pc (0x0000000000000000)11## DW_TAG_subprogram <-- (0x00000014)12## DW_AT_decl_file (0x01)13## DW_AT_decl_line (1)14## DW_AT_inline (DW_INL_inlined)15## DW_TAG_formal_parameter <-- (0x00000018)16## DW_AT_decl_file (0x01)17## DW_AT_decl_line (1)18## DW_TAG_formal_parameter <-- (0x0000001b)19## DW_AT_decl_file (0x01)20## DW_AT_decl_line (1)21## DW_TAG_variable <-- (0x0000001e)22## DW_AT_decl_file (0x01)23## DW_AT_decl_line (1)24## DW_TAG_subprogram25## DW_AT_decl_file (0x01)26## DW_AT_decl_line (1)27## DW_AT_low_pc (0x0000000000000000)28## DW_AT_high_pc (0x000000000000000b)29## DW_TAG_inlined_subroutine30## DW_AT_abstract_origin (0x00000014)31## DW_AT_low_pc (0x0000000000000000)32## DW_AT_high_pc (0x0000000000000007)33## DW_AT_call_file (0x01)34## DW_AT_call_line (1)35## DW_AT_call_column (1)36## DW_TAG_formal_parameter37## DW_AT_abstract_origin (0x00000018)38## DW_TAG_variable39## DW_AT_abstract_origin (0x0000001e)40## DW_AT_location ()41## DW_TAG_inlined_subroutine42## DW_AT_abstract_origin (0x00000014)43## DW_AT_low_pc (0x0000000000000000)44## DW_AT_high_pc (0x0000000000000007)45## DW_AT_call_file (0x01)46## DW_AT_call_line (1)47## DW_AT_call_column (1)48## DW_TAG_formal_parameter49## DW_AT_abstract_origin (0x00000018)50## DW_AT_location ()51## DW_TAG_variable52## DW_AT_abstract_origin (0x0000001e)53## DW_AT_location ()54## DW_TAG_inlined_subroutine55## DW_AT_abstract_origin (0x00000014)56## DW_AT_low_pc (0x0000000000000000)57## DW_AT_high_pc (0x0000000000000007)58## DW_AT_call_file (0x01)59## DW_AT_call_line (1)60## DW_AT_call_column (1)61## DW_TAG_inlined_subroutine62## DW_AT_abstract_origin (0x00000014)63## DW_AT_low_pc (0x0000000000000002)64## DW_AT_high_pc (0x000000000000000a)65## DW_AT_call_file (0x01)66## DW_AT_call_line (3)67## DW_AT_call_column (3)68## DW_TAG_inlined_subroutine69## DW_AT_abstract_origin (0x000000e5)70## DW_AT_low_pc (0x0000000000000006)71## DW_AT_high_pc (0x0000000000000010)72## DW_AT_call_file (0x01)73## DW_AT_call_line (3)74## DW_AT_call_column (3)75## DW_TAG_inlined_subroutine76## DW_AT_abstract_origin (0x000000e5)77## DW_AT_low_pc (0x0000000000000006)78## DW_AT_high_pc (0x0000000000000010)79## DW_AT_call_file (0x01)80## DW_AT_call_line (3)81## DW_AT_call_column (3)82## DW_TAG_formal_parameter83## DW_AT_abstract_origin (0x000000e9)84## DW_AT_location ()85## DW_TAG_inlined_subroutine86## DW_AT_abstract_origin (0x000000f0)87## DW_AT_low_pc (0x0000000000000010)88## DW_AT_high_pc (0x000000000000001a)89## DW_AT_call_file (0x01)90## DW_AT_call_line (3)91## DW_AT_call_column (3)92## DW_TAG_formal_parameter93## DW_AT_abstract_origin (0x000000f4)94## DW_TAG_lexical_block95## DW_AT_low_pc (0x00000000000000bc)96## DW_AT_high_pc (0x00000000000000bc)97## DW_TAG_variable98## DW_AT_abstract_origin (0x000000f8)99## DW_TAG_subprogram <-- (0x000000e5)100## DW_AT_decl_file (0x01)101## DW_AT_decl_line (3)102## DW_AT_inline (DW_INL_inlined)103## DW_TAG_formal_parameter <-- (0x000000e9)104## DW_AT_decl_file (0x01)105## DW_AT_decl_line (1)106## DW_TAG_variable <-- (0x000000be)107## DW_AT_decl_file (0x01)108## DW_AT_decl_line (1)109## DW_TAG_subprogram <-- (0x000000f0)110## DW_AT_decl_file (0x01)111## DW_AT_decl_line (3)112## DW_AT_inline (DW_INL_inlined)113## DW_TAG_formal_parameter <--(0x000000f4)114## DW_AT_decl_file (0x01)115## DW_AT_decl_line (1)116## DW_TAG_lexical_block117## DW_TAG_variable <--(0x000000f8)118## DW_AT_decl_file (0x01)119## DW_AT_decl_line (1)120## DW_TAG_subprogram121## DW_AT_abstract_origin (0x000000f0)122 123# CHECK: "version": 9,124# CHECK: "#variables processed by location statistics": 17,125# CHECK: "#variables with 0% of parent scope covered by DW_AT_location": 13,126# CHECK: "#variables with 100% of parent scope covered by DW_AT_location": 4,127 128--- !ELF129FileHeader:130 Class: ELFCLASS64131 Data: ELFDATA2LSB132 Type: ET_EXEC133 Machine: EM_X86_64134DWARF:135 debug_abbrev:136 - Table:137 - Code: 1138 Tag: DW_TAG_compile_unit139 Children: DW_CHILDREN_yes140 Attributes:141 - Attribute: DW_AT_low_pc142 Form: DW_FORM_addr143 - Code: 2144 Tag: DW_TAG_subprogram145 Children: DW_CHILDREN_yes146 Attributes:147 - Attribute: DW_AT_decl_file148 Form: DW_FORM_data1149 - Attribute: DW_AT_decl_line150 Form: DW_FORM_data1151 - Attribute: DW_AT_inline152 Form: DW_FORM_data1153 - Code: 3154 Tag: DW_TAG_formal_parameter155 Children: DW_CHILDREN_no156 Attributes:157 - Attribute: DW_AT_decl_file158 Form: DW_FORM_data1159 - Attribute: DW_AT_decl_line160 Form: DW_FORM_data1161 - Code: 4162 Tag: DW_TAG_formal_parameter163 Children: DW_CHILDREN_no164 Attributes:165 - Attribute: DW_AT_decl_file166 Form: DW_FORM_data1167 - Attribute: DW_AT_decl_line168 Form: DW_FORM_data1169 - Code: 5170 Tag: DW_TAG_variable171 Children: DW_CHILDREN_no172 Attributes:173 - Attribute: DW_AT_decl_file174 Form: DW_FORM_data1175 - Attribute: DW_AT_decl_line176 Form: DW_FORM_data1177 - Code: 6178 Tag: DW_TAG_subprogram179 Children: DW_CHILDREN_yes180 Attributes:181 - Attribute: DW_AT_decl_file182 Form: DW_FORM_data1183 - Attribute: DW_AT_decl_line184 Form: DW_FORM_data1185 - Attribute: DW_AT_low_pc186 Form: DW_FORM_addr187 - Attribute: DW_AT_high_pc188 Form: DW_FORM_data4189 - Code: 7190 Tag: DW_TAG_inlined_subroutine191 Children: DW_CHILDREN_yes192 Attributes:193 - Attribute: DW_AT_abstract_origin194 Form: DW_FORM_ref4195 - Attribute: DW_AT_low_pc196 Form: DW_FORM_addr197 - Attribute: DW_AT_high_pc198 Form: DW_FORM_data4199 - Attribute: DW_AT_call_file200 Form: DW_FORM_data1201 - Attribute: DW_AT_call_line202 Form: DW_FORM_data1203 - Attribute: DW_AT_call_column204 Form: DW_FORM_data1205 - Code: 8206 Tag: DW_TAG_formal_parameter207 Children: DW_CHILDREN_no208 Attributes:209 - Attribute: DW_AT_abstract_origin210 Form: DW_FORM_ref4211 - Code: 9212 Tag: DW_TAG_variable213 Children: DW_CHILDREN_no214 Attributes:215 - Attribute: DW_AT_abstract_origin216 Form: DW_FORM_ref4217 - Attribute: DW_AT_location218 Form: DW_FORM_exprloc219 - Code: 10220 Tag: DW_TAG_formal_parameter221 Children: DW_CHILDREN_no222 Attributes:223 - Attribute: DW_AT_abstract_origin224 Form: DW_FORM_ref4225 - Attribute: DW_AT_location226 Form: DW_FORM_exprloc227 - Code: 11228 Tag: DW_TAG_subprogram229 Children: DW_CHILDREN_yes230 Attributes:231 - Attribute: DW_AT_decl_file232 Form: DW_FORM_data1233 - Attribute: DW_AT_decl_line234 Form: DW_FORM_data1235 - Attribute: DW_AT_inline236 Form: DW_FORM_data1237 - Code: 12238 Tag: DW_TAG_formal_parameter239 Children: DW_CHILDREN_no240 Attributes:241 - Attribute: DW_AT_decl_file242 Form: DW_FORM_data1243 - Attribute: DW_AT_decl_line244 Form: DW_FORM_data1245 - Code: 13246 Tag: DW_TAG_lexical_block247 Children: DW_CHILDREN_yes248 - Code: 14249 Tag: DW_TAG_lexical_block250 Children: DW_CHILDREN_yes251 Attributes:252 - Attribute: DW_AT_low_pc253 Form: DW_FORM_addr254 - Attribute: DW_AT_high_pc255 Form: DW_FORM_data4256 - Code: 15257 Tag: DW_TAG_formal_parameter258 Children: DW_CHILDREN_no259 Attributes:260 - Attribute: DW_AT_abstract_origin261 Form: DW_FORM_ref4262 - Code: 16263 Tag: DW_TAG_variable264 Children: DW_CHILDREN_no265 Attributes:266 - Attribute: DW_AT_abstract_origin267 Form: DW_FORM_ref4268 - Code: 17269 Tag: DW_TAG_subprogram270 Children: DW_CHILDREN_no271 Attributes:272 - Attribute: DW_AT_abstract_origin273 Form: DW_FORM_ref4274 debug_info:275 - Version: 4276 AbbrOffset: 0x00277 Entries:278 - AbbrCode: 1 ## DW_TAG_compile_unit279 Values:280 - Value: 0x00 ## DW_AT_producer281 - AbbrCode: 2 ## DW_TAG_subprogram282 Values:283 - Value: 1 ## DW_AT_decl_file284 - Value: 1 ## DW_AT_decl_line285 - Value: 1 ## DW_AT_inline286 - AbbrCode: 3 ## DW_TAG_formal_parameter287 Values:288 - Value: 1 ## DW_AT_decl_file289 - Value: 1 ## DW_AT_decl_line290 - AbbrCode: 4 ## DW_TAG_formal_parameter291 Values:292 - Value: 1 ## DW_AT_decl_file293 - Value: 1 ## DW_AT_decl_line294 - AbbrCode: 5 ## DW_TAG_variable295 Values:296 - Value: 1 ## DW_AT_decl_file297 - Value: 1 ## DW_AT_decl_line298 - AbbrCode: 0 ## NULL299 - AbbrCode: 6 ## DW_TAG_subprogram300 Values:301 - Value: 1 ## DW_AT_decl_file302 - Value: 1 ## DW_AT_decl_line303 - Value: 0x00 ## DW_AT_low_pc304 - Value: 0x0b ## DW_AT_high_pc305 - AbbrCode: 7 ## DW_TAG_inlined_subroutine306 Values:307 - Value: 0x14 ## DW_AT_abstract_origin308 - Value: 0x00 ## DW_AT_low_pc309 - Value: 0x07 ## DW_AT_high_pc310 - Value: 1 ## DW_AT_call_file311 - Value: 1 ## DW_AT_call_line312 - Value: 1 ## DW_AT_call_column313 - AbbrCode: 8 ## DW_TAG_formal_parameter314 Values:315 - Value: 0x18 ## DW_AT_abstract_origin316 - AbbrCode: 9 ## DW_TAG_formal_parameter317 Values:318 - Value: 0x1e ## DW_AT_abstract_origin319 - Value: 0x0 ## DW_AT_location320 - AbbrCode: 0 ## NULL321 - AbbrCode: 7 ## DW_TAG_inlined_subroutine322 Values:323 - Value: 0x14 ## DW_AT_abstract_origin324 - Value: 0x02 ## DW_AT_low_pc325 - Value: 0x08 ## DW_AT_high_pc326 - Value: 1 ## DW_AT_call_file327 - Value: 2 ## DW_AT_call_line328 - Value: 2 ## DW_AT_call_column329 - AbbrCode: 10 ## DW_TAG_formal_parameter330 Values:331 - Value: 0x18 ## DW_AT_abstract_origin332 - Value: 0x0 ## DW_AT_location333 - AbbrCode: 9 ## DW_TAG_variable334 Values:335 - Value: 0x1e ## DW_AT_abstract_origin336 - Value: 0x0 ## DW_AT_location337 - AbbrCode: 0 ## NULL338 - AbbrCode: 7 ## DW_TAG_inlined_subroutine339 Values:340 - Value: 0x14 ## DW_AT_abstract_origin341 - Value: 0x02 ## DW_AT_low_pc342 - Value: 0x08 ## DW_AT_high_pc343 - Value: 1 ## DW_AT_call_file344 - Value: 3 ## DW_AT_call_line345 - Value: 3 ## DW_AT_call_column346 - AbbrCode: 0 ## NULL347 - AbbrCode: 7 ## DW_TAG_inlined_subroutine348 Values:349 - Value: 0xe5 ## DW_AT_abstract_origin350 - Value: 0x06 ## DW_AT_low_pc351 - Value: 0x0a ## DW_AT_high_pc352 - Value: 1 ## DW_AT_call_file353 - Value: 3 ## DW_AT_call_line354 - Value: 3 ## DW_AT_call_column355 - AbbrCode: 0 ## NULL356 - AbbrCode: 7 ## DW_TAG_inlined_subroutine357 Values:358 - Value: 0xe5 ## DW_AT_abstract_origin359 - Value: 0x06 ## DW_AT_low_pc360 - Value: 0x0a ## DW_AT_high_pc361 - Value: 1 ## DW_AT_call_file362 - Value: 3 ## DW_AT_call_line363 - Value: 3 ## DW_AT_call_column364 - AbbrCode: 10 ## DW_TAG_formal_parameter365 Values:366 - Value: 0xe9 ## DW_AT_abstract_origin367 - Value: 0x0 ## DW_AT_location368 - AbbrCode: 0 ## NULL369 - AbbrCode: 7 ## DW_TAG_inlined_subroutine370 Values:371 - Value: 0xf0 ## DW_AT_abstract_origin372 - Value: 0x10 ## DW_AT_low_pc373 - Value: 0x0a ## DW_AT_high_pc374 - Value: 1 ## DW_AT_call_file375 - Value: 3 ## DW_AT_call_line376 - Value: 3 ## DW_AT_call_column377 - AbbrCode: 15 ## DW_TAG_formal_parameter378 Values:379 - Value: 0xf4 ## DW_AT_abstract_origin380 - AbbrCode: 14 ## DW_TAG_lexical_block381 Values:382 - Value: 0xbc ## DW_AT_low_pc383 - Value: 0x0 ## DW_AT_high_pc384 - AbbrCode: 16 ## DW_TAG_variable385 Values:386 - Value: 0xf8 ## DW_AT_abstract_origin387 - AbbrCode: 0 ## NULL388 - AbbrCode: 0 ## NULL389 - AbbrCode: 0 ## NULL390 - AbbrCode: 2 ## DW_TAG_subprogram391 Values:392 - Value: 1 ## DW_AT_decl_file393 - Value: 3 ## DW_AT_decl_line394 - Value: 1 ## DW_AT_inline395 - AbbrCode: 3 ## DW_TAG_formal_parameter396 Values:397 - Value: 1 ## DW_AT_decl_file398 - Value: 1 ## DW_AT_decl_line399 - AbbrCode: 5 ## DW_TAG_variable400 Values:401 - Value: 1 ## DW_AT_decl_file402 - Value: 1 ## DW_AT_decl_line403 - AbbrCode: 0 ## NULL404 - AbbrCode: 11 ## DW_TAG_subprogram405 Values:406 - Value: 1 ## DW_AT_decl_file407 - Value: 3 ## DW_AT_decl_line408 - Value: 1 ## DW_AT_inline409 - AbbrCode: 3 ## DW_TAG_formal_parameter410 Values:411 - Value: 1 ## DW_AT_decl_file412 - Value: 1 ## DW_AT_decl_line413 - AbbrCode: 13 ## DW_TAG_lexical_block414 - AbbrCode: 5 ## DW_TAG_variable415 Values:416 - Value: 1 ## DW_AT_decl_file417 - Value: 1 ## DW_AT_decl_line418 - AbbrCode: 0 ## NULL419 - AbbrCode: 0 ## NULL420 - AbbrCode: 17 ## DW_TAG_subprogram421 Values:422 - Value: 0xf0 ## DW_AT_abstract_origin423 - AbbrCode: 0 ## NULL424