Как узнать, с какой переменной связан номер строки в LLVM IR? - PullRequest
0 голосов
/ 26 сентября 2019

Учитывая любую инструкцию от LLVM IR, как получить подробную информацию о переменных, такую ​​как ее имя, номер строки, где она определена, например,

Line 2: int i 

Ее IR:

call void @llvm.dbg.declare(metadata i32* %i, metadata !11, metadata !DIExpression()), !dbg !12
!11 = !DILocalVariable(name: "i", scope: !7, file: !1, line: 2, type: !10)
!12 = !DILocation(line: 2, column: 6, scope: !7)

Предположим, что мыиметь инструкцию IR для return i

ret i32 %6, !dbg !38
!38 = !DILocation(line: 9, column: 2, scope: !7) 

Как мы узнаем из этой информации метаданных, что фактическое имя переменной - это i и определено в строке № 2

Примечание: приведенный выше пример показывает толькоreturn i но это может быть любая инструкция, включающая обновление i, чтение i и т. Д.

...