Kürzlich benutze ich llvm, um Anrufanweisung in LLVM-IR einzufügen. Das Problem ist, dass, wenn ich eine Funktion namens add
habe, kann ich es nicht finden, getFuntion (string), da die add() in IR . Ich weiß, dass alle Funktionen in IR einen neuen Namen haben, aber ich wusste nicht, was der neue Name genau ist.LLVM- Wie man Funktion durch realen/ursprünglichen Namen der Funktion erhält
Module *m = f->getParent();
IRBuilder<> builder(m->getContext());
Function *call = m->getFunction("add");
// call is NULL.
std::vector<Value *> args;
......
Module *m = f->getParent();
IRBuilder<> builder(m->getContext());
Function *call = m->getFunction("_Z3addv");
// call is not NULL.
std::vector<Value *> args;
......
Wie finde ich die Funktion mit ihrem ursprünglichen Namen?
Der C++ Namen ändern Mangeln wird durch Klängen erledigt, also schauen Sie in den APIs von clang nach. –