1# RUN: yaml2obj %s | llvm-dwarfdump --statistics - | FileCheck %s 2 3## Check that zero coverage was reported for inlined variable with 4## DW_AT_abstract_origin with no location attribute as well as 5## for the variable that has not been generated within the inlined subroutine. 6## 7## The yaml represents DWARF as: 8## 9## DW_TAG_compile_unit 10## 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_subprogram 25## 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_subroutine 30## 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_parameter 37## DW_AT_abstract_origin (0x00000018) 38## DW_TAG_variable 39## DW_AT_abstract_origin (0x0000001e) 40## DW_AT_location () 41## DW_TAG_inlined_subroutine 42## 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_parameter 49## DW_AT_abstract_origin (0x00000018) 50## DW_AT_location () 51## DW_TAG_variable 52## DW_AT_abstract_origin (0x0000001e) 53## DW_AT_location () 54## DW_TAG_inlined_subroutine 55## 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_subroutine 62## 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_subroutine 69## 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_subroutine 76## 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_parameter 83## DW_AT_abstract_origin (0x000000e9) 84## DW_AT_location () 85## DW_TAG_inlined_subroutine 86## 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_parameter 93## DW_AT_abstract_origin (0x000000f4) 94## DW_TAG_lexical_block 95## DW_AT_low_pc (0x00000000000000bc) 96## DW_AT_high_pc (0x00000000000000bc) 97## DW_TAG_variable 98## 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_block 117## DW_TAG_variable <--(0x000000f8) 118## DW_AT_decl_file (0x01) 119## DW_AT_decl_line (1) 120## DW_TAG_subprogram 121## 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--- !ELF 129FileHeader: 130 Class: ELFCLASS64 131 Data: ELFDATA2LSB 132 Type: ET_EXEC 133 Machine: EM_X86_64 134DWARF: 135 debug_abbrev: 136 - Table: 137 - Code: 1 138 Tag: DW_TAG_compile_unit 139 Children: DW_CHILDREN_yes 140 Attributes: 141 - Attribute: DW_AT_low_pc 142 Form: DW_FORM_addr 143 - Code: 2 144 Tag: DW_TAG_subprogram 145 Children: DW_CHILDREN_yes 146 Attributes: 147 - Attribute: DW_AT_decl_file 148 Form: DW_FORM_data1 149 - Attribute: DW_AT_decl_line 150 Form: DW_FORM_data1 151 - Attribute: DW_AT_inline 152 Form: DW_FORM_data1 153 - Code: 3 154 Tag: DW_TAG_formal_parameter 155 Children: DW_CHILDREN_no 156 Attributes: 157 - Attribute: DW_AT_decl_file 158 Form: DW_FORM_data1 159 - Attribute: DW_AT_decl_line 160 Form: DW_FORM_data1 161 - Code: 4 162 Tag: DW_TAG_formal_parameter 163 Children: DW_CHILDREN_no 164 Attributes: 165 - Attribute: DW_AT_decl_file 166 Form: DW_FORM_data1 167 - Attribute: DW_AT_decl_line 168 Form: DW_FORM_data1 169 - Code: 5 170 Tag: DW_TAG_variable 171 Children: DW_CHILDREN_no 172 Attributes: 173 - Attribute: DW_AT_decl_file 174 Form: DW_FORM_data1 175 - Attribute: DW_AT_decl_line 176 Form: DW_FORM_data1 177 - Code: 6 178 Tag: DW_TAG_subprogram 179 Children: DW_CHILDREN_yes 180 Attributes: 181 - Attribute: DW_AT_decl_file 182 Form: DW_FORM_data1 183 - Attribute: DW_AT_decl_line 184 Form: DW_FORM_data1 185 - Attribute: DW_AT_low_pc 186 Form: DW_FORM_addr 187 - Attribute: DW_AT_high_pc 188 Form: DW_FORM_data4 189 - Code: 7 190 Tag: DW_TAG_inlined_subroutine 191 Children: DW_CHILDREN_yes 192 Attributes: 193 - Attribute: DW_AT_abstract_origin 194 Form: DW_FORM_ref4 195 - Attribute: DW_AT_low_pc 196 Form: DW_FORM_addr 197 - Attribute: DW_AT_high_pc 198 Form: DW_FORM_data4 199 - Attribute: DW_AT_call_file 200 Form: DW_FORM_data1 201 - Attribute: DW_AT_call_line 202 Form: DW_FORM_data1 203 - Attribute: DW_AT_call_column 204 Form: DW_FORM_data1 205 - Code: 8 206 Tag: DW_TAG_formal_parameter 207 Children: DW_CHILDREN_no 208 Attributes: 209 - Attribute: DW_AT_abstract_origin 210 Form: DW_FORM_ref4 211 - Code: 9 212 Tag: DW_TAG_variable 213 Children: DW_CHILDREN_no 214 Attributes: 215 - Attribute: DW_AT_abstract_origin 216 Form: DW_FORM_ref4 217 - Attribute: DW_AT_location 218 Form: DW_FORM_exprloc 219 - Code: 10 220 Tag: DW_TAG_formal_parameter 221 Children: DW_CHILDREN_no 222 Attributes: 223 - Attribute: DW_AT_abstract_origin 224 Form: DW_FORM_ref4 225 - Attribute: DW_AT_location 226 Form: DW_FORM_exprloc 227 - Code: 11 228 Tag: DW_TAG_subprogram 229 Children: DW_CHILDREN_yes 230 Attributes: 231 - Attribute: DW_AT_decl_file 232 Form: DW_FORM_data1 233 - Attribute: DW_AT_decl_line 234 Form: DW_FORM_data1 235 - Attribute: DW_AT_inline 236 Form: DW_FORM_data1 237 - Code: 12 238 Tag: DW_TAG_formal_parameter 239 Children: DW_CHILDREN_no 240 Attributes: 241 - Attribute: DW_AT_decl_file 242 Form: DW_FORM_data1 243 - Attribute: DW_AT_decl_line 244 Form: DW_FORM_data1 245 - Code: 13 246 Tag: DW_TAG_lexical_block 247 Children: DW_CHILDREN_yes 248 - Code: 14 249 Tag: DW_TAG_lexical_block 250 Children: DW_CHILDREN_yes 251 Attributes: 252 - Attribute: DW_AT_low_pc 253 Form: DW_FORM_addr 254 - Attribute: DW_AT_high_pc 255 Form: DW_FORM_data4 256 - Code: 15 257 Tag: DW_TAG_formal_parameter 258 Children: DW_CHILDREN_no 259 Attributes: 260 - Attribute: DW_AT_abstract_origin 261 Form: DW_FORM_ref4 262 - Code: 16 263 Tag: DW_TAG_variable 264 Children: DW_CHILDREN_no 265 Attributes: 266 - Attribute: DW_AT_abstract_origin 267 Form: DW_FORM_ref4 268 - Code: 17 269 Tag: DW_TAG_subprogram 270 Children: DW_CHILDREN_no 271 Attributes: 272 - Attribute: DW_AT_abstract_origin 273 Form: DW_FORM_ref4 274 debug_info: 275 - Version: 4 276 AbbrOffset: 0x00 277 Entries: 278 - AbbrCode: 1 ## DW_TAG_compile_unit 279 Values: 280 - Value: 0x00 ## DW_AT_producer 281 - AbbrCode: 2 ## DW_TAG_subprogram 282 Values: 283 - Value: 1 ## DW_AT_decl_file 284 - Value: 1 ## DW_AT_decl_line 285 - Value: 1 ## DW_AT_inline 286 - AbbrCode: 3 ## DW_TAG_formal_parameter 287 Values: 288 - Value: 1 ## DW_AT_decl_file 289 - Value: 1 ## DW_AT_decl_line 290 - AbbrCode: 4 ## DW_TAG_formal_parameter 291 Values: 292 - Value: 1 ## DW_AT_decl_file 293 - Value: 1 ## DW_AT_decl_line 294 - AbbrCode: 5 ## DW_TAG_variable 295 Values: 296 - Value: 1 ## DW_AT_decl_file 297 - Value: 1 ## DW_AT_decl_line 298 - AbbrCode: 0 ## NULL 299 - AbbrCode: 6 ## DW_TAG_subprogram 300 Values: 301 - Value: 1 ## DW_AT_decl_file 302 - Value: 1 ## DW_AT_decl_line 303 - Value: 0x00 ## DW_AT_low_pc 304 - Value: 0x0b ## DW_AT_high_pc 305 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 306 Values: 307 - Value: 0x14 ## DW_AT_abstract_origin 308 - Value: 0x00 ## DW_AT_low_pc 309 - Value: 0x07 ## DW_AT_high_pc 310 - Value: 1 ## DW_AT_call_file 311 - Value: 1 ## DW_AT_call_line 312 - Value: 1 ## DW_AT_call_column 313 - AbbrCode: 8 ## DW_TAG_formal_parameter 314 Values: 315 - Value: 0x18 ## DW_AT_abstract_origin 316 - AbbrCode: 9 ## DW_TAG_formal_parameter 317 Values: 318 - Value: 0x1e ## DW_AT_abstract_origin 319 - Value: 0x0 ## DW_AT_location 320 - AbbrCode: 0 ## NULL 321 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 322 Values: 323 - Value: 0x14 ## DW_AT_abstract_origin 324 - Value: 0x02 ## DW_AT_low_pc 325 - Value: 0x08 ## DW_AT_high_pc 326 - Value: 1 ## DW_AT_call_file 327 - Value: 2 ## DW_AT_call_line 328 - Value: 2 ## DW_AT_call_column 329 - AbbrCode: 10 ## DW_TAG_formal_parameter 330 Values: 331 - Value: 0x18 ## DW_AT_abstract_origin 332 - Value: 0x0 ## DW_AT_location 333 - AbbrCode: 9 ## DW_TAG_variable 334 Values: 335 - Value: 0x1e ## DW_AT_abstract_origin 336 - Value: 0x0 ## DW_AT_location 337 - AbbrCode: 0 ## NULL 338 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 339 Values: 340 - Value: 0x14 ## DW_AT_abstract_origin 341 - Value: 0x02 ## DW_AT_low_pc 342 - Value: 0x08 ## DW_AT_high_pc 343 - Value: 1 ## DW_AT_call_file 344 - Value: 3 ## DW_AT_call_line 345 - Value: 3 ## DW_AT_call_column 346 - AbbrCode: 0 ## NULL 347 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 348 Values: 349 - Value: 0xe5 ## DW_AT_abstract_origin 350 - Value: 0x06 ## DW_AT_low_pc 351 - Value: 0x0a ## DW_AT_high_pc 352 - Value: 1 ## DW_AT_call_file 353 - Value: 3 ## DW_AT_call_line 354 - Value: 3 ## DW_AT_call_column 355 - AbbrCode: 0 ## NULL 356 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 357 Values: 358 - Value: 0xe5 ## DW_AT_abstract_origin 359 - Value: 0x06 ## DW_AT_low_pc 360 - Value: 0x0a ## DW_AT_high_pc 361 - Value: 1 ## DW_AT_call_file 362 - Value: 3 ## DW_AT_call_line 363 - Value: 3 ## DW_AT_call_column 364 - AbbrCode: 10 ## DW_TAG_formal_parameter 365 Values: 366 - Value: 0xe9 ## DW_AT_abstract_origin 367 - Value: 0x0 ## DW_AT_location 368 - AbbrCode: 0 ## NULL 369 - AbbrCode: 7 ## DW_TAG_inlined_subroutine 370 Values: 371 - Value: 0xf0 ## DW_AT_abstract_origin 372 - Value: 0x10 ## DW_AT_low_pc 373 - Value: 0x0a ## DW_AT_high_pc 374 - Value: 1 ## DW_AT_call_file 375 - Value: 3 ## DW_AT_call_line 376 - Value: 3 ## DW_AT_call_column 377 - AbbrCode: 15 ## DW_TAG_formal_parameter 378 Values: 379 - Value: 0xf4 ## DW_AT_abstract_origin 380 - AbbrCode: 14 ## DW_TAG_lexical_block 381 Values: 382 - Value: 0xbc ## DW_AT_low_pc 383 - Value: 0x0 ## DW_AT_high_pc 384 - AbbrCode: 16 ## DW_TAG_variable 385 Values: 386 - Value: 0xf8 ## DW_AT_abstract_origin 387 - AbbrCode: 0 ## NULL 388 - AbbrCode: 0 ## NULL 389 - AbbrCode: 0 ## NULL 390 - AbbrCode: 2 ## DW_TAG_subprogram 391 Values: 392 - Value: 1 ## DW_AT_decl_file 393 - Value: 3 ## DW_AT_decl_line 394 - Value: 1 ## DW_AT_inline 395 - AbbrCode: 3 ## DW_TAG_formal_parameter 396 Values: 397 - Value: 1 ## DW_AT_decl_file 398 - Value: 1 ## DW_AT_decl_line 399 - AbbrCode: 5 ## DW_TAG_variable 400 Values: 401 - Value: 1 ## DW_AT_decl_file 402 - Value: 1 ## DW_AT_decl_line 403 - AbbrCode: 0 ## NULL 404 - AbbrCode: 11 ## DW_TAG_subprogram 405 Values: 406 - Value: 1 ## DW_AT_decl_file 407 - Value: 3 ## DW_AT_decl_line 408 - Value: 1 ## DW_AT_inline 409 - AbbrCode: 3 ## DW_TAG_formal_parameter 410 Values: 411 - Value: 1 ## DW_AT_decl_file 412 - Value: 1 ## DW_AT_decl_line 413 - AbbrCode: 13 ## DW_TAG_lexical_block 414 - AbbrCode: 5 ## DW_TAG_variable 415 Values: 416 - Value: 1 ## DW_AT_decl_file 417 - Value: 1 ## DW_AT_decl_line 418 - AbbrCode: 0 ## NULL 419 - AbbrCode: 0 ## NULL 420 - AbbrCode: 17 ## DW_TAG_subprogram 421 Values: 422 - Value: 0xf0 ## DW_AT_abstract_origin 423 - AbbrCode: 0 ## NULL 424