tree dfa0f3403e4f90b5a7bbea28ac97e81c64a2536e
parent 26549262b3b7ad265d25586be4dca38d37d26069
author Peter Rong <peterrong96@gmail.com> 1758050562 -0700
committer GitHub <noreply@github.com> 1758050562 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJoybkCCRC1aQ7uu5UhlAAAS7wQAD1CIYtcFappCK2gswvh08ZN
 ztQo1SzSk4iO7AvXmPFUC/Bm8v1tnStjxMxjb5TDLRboU6gAFtOB3cp0QrTGjNn+
 I6GfGlW8unjm3RBaDLKdHDGkknfNTYZBKNyiJymKAGPUtxXfMPtS6fuUHmFf8+xD
 p72BSje7LDaT/fS4jcO19rbYI2xPhDSv9T5bfFaPcAqUjrZ11Famy3Z3XDvzjlYp
 BKxlPva2ghuPj4NnDrLfoMOEFUAq6+pbyb/Ir21fa+QwuaCFk8yZRj5ZuU3QJiya
 tCRJyDP1dyMNnu14f1XjtjFl07OOXk99iM51I2I/L55tAg+BEw5YUU/CmnB0Hd6G
 jFyVrd+YPpucRmfJfvxEkoCvp6Lhy7FJtewS8AcWuocACQWEjlaLaeBSX5aPchgN
 zgXaqMQqHtAzeRMVatw/myPIMEIw5o7qLZrfCOcSBGFmrQzcMKzj0yl2Rz+FAV6Y
 695MVnnHv4J7dlBEFgMcqcxjdKMAB9OHiIxR7EpmRyNtqqBArFJA02qdCKXth/Or
 c3EpMQgk8xbaBKbcAYaZJ8hEFCPIKgoACkvrAlWtroXlCAgO9IGQXHqtwFhFf5Yx
 VIGu3z2COIqQDBRzocWi7kbF0nkbGqqgiCNrfj5fecg03SyDmFesyMGIh3BRABtn
 ksDmx4PBxTTIAdZAtky/
 =etsH
 -----END PGP SIGNATURE-----
 

Reapply "[DebugLine] Correct debug line emittion" (#158343) (#158379)

This reverts commit aabf18d7184298566993e3141606cd79ff617d2d.
#157529 included a test that used clang, which doesn't exists in some
CI. #158343 reverts it.

This PR reapplies the original patch with the incorrect test removed.

### Context

#99710 introduced `.loc_label` so we can terminate a line sequence.
However, it did not advance PC properly. This is problematic for
1-instruction functions as it will have zero-length sequence. The test
checked in that PR shows the problem:

```
# CHECK-LINE-TABLE:                  Address            Line   Column File   ISA Discriminator OpIndex Flags
# CHECK-LINE-TABLE-NEXT:             ------------------ ------ ------ ------ --- ------------- ------- -------------
# CHECK-LINE-TABLE-NEXT: 0x00000028: 05 DW_LNS_set_column (1)
# CHECK-LINE-TABLE-NEXT: 0x0000002a: 00 DW_LNE_set_address (0x0000000000000000)
# CHECK-LINE-TABLE-NEXT: 0x00000035: 01 DW_LNS_copy
# CHECK-LINE-TABLE-NEXT:             0x0000000000000000      1      1      1   0             0       0  is_stmt
# CHECK-LINE-TABLE-NEXT: 0x00000036: 00 DW_LNE_end_sequence
# CHECK-LINE-TABLE-NEXT:             0x0000000000000000      1      1      1   0             0       0  is_stmt end_sequence
```

Both rows having PC 0x0 is incorrect, and parsers won't be able to parse
them. See more explanation why this is wrong in #154851.

### Design

This PR attempts to fix this by advancing the PC to the next available
Label, and advance to the end of the section if no Label is available.

### Implementation

- `emitDwarfLineEndEntry` will advance PC to the `CurrLabel`
- If `CurrLabel` is null, its probably a fake LineEntry we introduced in
#110192. In that case look for the next Label
- If still not label can be found, use `null` and
`emitDwarfLineEndEntry` is smart enough to advance PC to the end of the
section
- Rename `LastLabel` to `PrevLabel`, "last" can mean "previous" or
"final", this is ambigous.
- Updated the tests to emit a correct label.

### Note

This fix should render #154986 and #154851 obsolete, they were temporary
fixes and don't resolve the root cause.