Получение исходного имени переменной для значения LLVM

Операнды дляllvm::User (например, инструкция)llvm::Values.

Послеmem2reg пройти, переменные находятся вФорма SSAи их имена, соответствующие исходному коду, теряются.Value::getName() устанавливается только для некоторых вещей; для большинства переменных, которые являются посредниками, это не установлено.

instnamer pass можно запустить, чтобы дать всем именам переменных, напримерtmp1 а такжеtmp2но это незахватить, откуда они родом. Вот's некоторый LLVM IR рядом с исходным кодом C:

Я создаю простую HTML-страницу для визуализации и отладки некоторых оптимизаций, над которыми я работаю, и я хочу показать переменные SSA какназваниевер нотации, а не только временные имена instnamer. Это просто, чтобы помочь моей читабельности.

Я получаю LLVM IR от clang с помощью командной строки, такой как:

 clang -g3 -O1 -emit-llvm -o test.bc -c test.c

Есть звонкиllvm.dbg.declare а такжеllvm.dbg.value в их; как вы превращаетесь в исходные имена исходного кода и номера версий SSA?

Итак, как я могу определить исходную переменную (или имя константы с именем) изllvm::Value? Отладчики должны быть в состоянии сделать это, так как я могу?

Ответы на вопрос(4)

Ваш ответ на вопрос