mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Summary: There are a few problems with how Swift currently emits location information for CodeView. 1. WinDbg does not work well with column information so all column locations must be set to zero. 2. Some instructions, e.g., ``a + b``, will emit ``@llvm.trap()`` and ``unreachable``. Those instructions should have artificial locations, i.e., they should have a line location of zero. 3. Some instructions, e.g., ``a / b``, will emit ``unreachable`` sandwiched between other code for that instruction. This makes WinDbg confused and it cannot decide which set of instructions to break on. Those instructions should have the same line location as the others. 4. There are several prologue instructions with artificial line locations that create breaks in the linetables. Those instructions should have valid line locations, usually at the start of the function. 5. Case bodies have cleanup instructions with artificial line locations unless it has a ``do`` block. Those locations should be the last line in the case block. Test Plan: test/DebugInfo/basic.swift test/DebugInfo/columns.swift test/DebugInfo/linetable-codeview.swift test/DebugInfo/line-directive-codeview.swift
4.9 KiB
4.9 KiB