[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.
More information about the llvm-dev