Операнды для llvm::User (например, инструкция) llvm::Value с.
После прохождения mem2reg переменные находятся в форме SSA, и их имена, соответствующие исходному исходному коду, теряются. Value::getName() устанавливается только для некоторых вещей; для большинства переменных, которые являются посредниками, он не установлен.
Пропускная способность instnamer может быть запущена, чтобы предоставить все имена переменных, такие как tmp1 и tmp2, но это не отражает, откуда они изначально пришли. Здесь несколько LLVM IR рядом с исходным кодом C:

Я создаю простую html-страницу для визуализации и отладки некоторых оптимизаций, над которыми я работаю, и я хочу показать переменные SSA как обозначение name ver, а не просто временные имена инициалов. Это просто для того, чтобы помочь моей читаемости.
Я получаю свой LLVM IR от clang с командной строкой, например:
clang -g3 -O1 -emit-llvm -o test.bc -c test.c
В IR есть вызовы llvm.dbg.declare и llvm.dbg.value; как вы включаете исходные имена исходных кодов и номера версий SSA?
Итак, как я могу определить исходную переменную (или имя константы) из llvm::Value? Отладчики должны быть в состоянии сделать это, так как я могу?