[llvm-dev] Should DISubprogram's scope be allowed to be null?

Keno Fischer via llvm-dev llvm-dev at lists.llvm.org
Fri Jan 15 06:46:43 PST 2016


Looking at this again, I think I was under the mistaken impression that the
DISubprogram's scope would have to be the compile unit, but it seems we
also currently allow it to be a DIFile (or any other kind of scope). In
that case, I suppose the behavior that the backend expects is that every
DISubprogram is referenced from some DICompileUnit contained in llvm.dbg.cu.
I'll implement a Verifier pass to that extent.

On Fri, Jan 15, 2016 at 4:26 AM, Keno Fischer <kfischer at college.harvard.edu>
wrote:

> I'm looking at cases of disagreement between assertions in the backend and
> what the Verifier checks for (for http://reviews.llvm.org/D16083). One of
> these seems to be the question of whether a DISuprogram may exist without a
> DICompileUnit. Currently the Verifier doesn't care, but there are a few
> assertions to this extent in the backend.
> Possible options are:
>
> 1) A DISubprogram may exist without a DICompileUnit (what would we have to
> change in the backend?)
> 2) A DISubprogram's scope may be null, but only if there's a DICompileUnit
> that references it.
> 3) A DISubprogram's scope may not be null, but the referenced
> DICompileUnit need not necessarily contain it
> 4) A DISubprogram's scope may not be null, and the referenced
> DICompileUnit must contain it
>
> As far as I can tell, all of these would need some amount of changes to
> either existing code or existing test cases.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160115/3ce28fa4/attachment.html>


More information about the llvm-dev mailing list