Skip to content

[DWARF] Line 0 should not have is_stmt set #33870

@pogo59

Description

@pogo59
Bugzilla Link 34522
Version trunk
OS Windows NT
CC @adrian-prantl,@dwblaikie

Extended Description

I think it does not make sense for a line-0 record to have is_stmt set.
I made a point of turning it off for implicit line-0 records generated
by DwarfDebug, and in real code I don't think we would ever see it.

However, adding an assertion to this effect broke 40 LLVM tests.
In most cases, the problem is merely that the test-input IR does
not specify everything that normal IR input has. In particular, at
some point DISubprogram started making a distinction between Line and
scopeLine, i.e. line of declaration versus where-the-code-starts.
If the scopeLine argument is missing from textual IR, it defaults to
zero, and that gets propagated to the entry point of the subprogram,
which is a stopping point and therefore has is_stmt=1.

Defaulting scopeLine to Line fixed 33 of the tests, and eyeballing
the other 7 suggests that most of them don't set Line either. This
is (IMO) a matter of flawed tests and it should be no sweat to fix.

There is one test related to prologue-end that seems to be testing
that it's okay for prologue-end to be line 0, and I ran out of time
to investigate any further.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions