Учитывая любую инструкцию от 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 и т. Д.