[LLVMdev] clang change function name

John Criswell jtcriswel at gmail.com
Sun Mar 1 21:12:34 PST 2015

On 3/2/15 12:07 AM, Haopeng Liu wrote:
> Got it, thanks. But in my pass, I use function name to locate. Can I 
> disable mangling in clang?

No, but you can probably fine a library that can either mangle the 
original name or demangle the name you're seeing in the LLVM bitcode.

As an FYI, on Unix, the c++filt program will demangle names (although 
sometimes you have to remove an extra '_' from the front of the name to 
get it to work).


John Criswell

> Best,
> Haopeng
> On 3/1/15 10:44 PM, John Criswell wrote:
>> On 3/1/15 11:38 PM, Haopeng Liu wrote:
>>> Hi,
>>> I compile a .cpp with cmd:
>>> clang++ -emit-llvm -c -g -O0 -w pbzip2.cpp -o pbzip2.bc -lbz2
>>> llvm-dis pbzip2.bc
>>> One function in .cpp is consumer_decompress. However, I look inside 
>>> pbzip2.ll. The function name is changed to "define i8* 
>>> @_Z19consumer_decompressPv(i8* %q) #0 {"
>>> Why clang adds a "_Z19" prefix and "Pv" suffix?
>> Clang mangles the name so that the function's name encodes the name 
>> and the function's type; this helps the linker link C++ object files 
>> together correctly.  See 
>> http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B 
>> for more details.
>> Regards,
>> John Criswell
>>> Thanks,
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

John Criswell
Assistant Professor
Department of Computer Science, University of Rochester

More information about the llvm-dev mailing list