Function name demangling in llvm ir


I am doing some program analysis with C++ programs. I need to check if some particular function is called in the program, for that I need the name of the function being called in the call instruction. Since C++ mangles the name of the function, I need a way to demangle the function name in llvm IR. Is there any way to achieve that in llvm pass?


I have not tried it but maybe

std::string llvm::demangle(const std::string &MangledName)

in llvm/Demangle/Demangle.h

is already what you want.

(though, usual caveat: you /usually/ shouldn't be doing that - instead
relying only on whatever semantics the IR actually carries, rather
than implying extra semantics based on the demangled name)

Any particular reason to avoid demangling?

Any particular reason to avoid demangling?

It's not part of the semantics of LLVM IR - so optimization should not
rely on it (different mangling schemes might be used on different
platforms - breaking the analysis/optimizations based on them - other
optimizations might not preserve the properties you're looking
for/assuming exist because of the mangled name, etc)