[llvm-dev] Scope for DILocalVariables describing parameters?

David Stenberg via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 8 04:14:31 PST 2019


Is it valid to assume that the scope for a parameter-describing
DILocalVariable always is a DISubprogram? Or do you know of any case
where a parameter's scope can be a sub-scope of the DISubprogram?

I added a check to the IR verifier and an assertion to
DIBuilder::createParameterVariable() that verify this. This resulted in
one test case, DebugInfo/X86/double-declare.ll, failing when running

parameter requires subprogram scope
!7 = !DILocalVariable(name: "aRect", arg: 1, scope: !8, file: !1, line:
38, type: !11)
!8 = distinct !DILexicalBlock(scope: !9, file: !1, line: 38)

However, if I rerun the clang command mentioned in the referenced PR
(PR33157), the parameter's scope becomes the subprogram:

!68 = !DILocalVariable(name: "aRect", arg: 1, scope: !63, file: !5,
line: 27, type: !66
!63 = distinct !DISubprogram(name: "NSMaxX"

so I suspect that might simply be an artifact from bugpointing or
manual reduction of the IR.

Best regards,

More information about the llvm-dev mailing list