При использовании LLVM Interpreter (Aka lli
) объект Instruction
запускается в функции Interpreter::run()
, как в коде.
void Interpreter::run() {
while (!ECStack.empty()) {
// Interpret a single instruction & increment the "PC".
ExecutionContext &SF = ECStack.back(); // Current stack frame
Instruction &I = *SF.CurInst++; // Increment before execute
// Track the number of dynamic instructions executed.
++NumDynamicInsts;
DEBUG(dbgs() << "About to interpret: " << I << "\n");
visit(I); // Dispatch to one of the visit* methods...
}
}
В строке с препроцессором DEBUG
будет напечатана инструкция, записанная в файле .ll, как этот.
О том, что нужно интерпретировать:% retval = alloca i32, выровнять 4
Как я могу получить имя переменной IR LLVM?
В этой ситуации это будет %retval
.