[llvm-dev] How to force an unused function declaration in clang

mayuyu.io via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 26 06:29:48 PDT 2018

Out of curiosity, how does an unused declaration affect the emitted object file


> 在 2018年6月26日,08:48,Soham Sinha via llvm-dev <llvm-dev at lists.llvm.org> 写道:
> clang doesn't seem to respect __attribute__((used)) in C functions. Even if I declare a function like the following:   __attribute__((used)) void function(), then also it doesn't declare the function in its IR file if I don't use the function. Is there any other way to force the declaration of "unused" function declarations with clang.
> I have hacked in clang 6.0.0 in tools/clang/lib/CodeGen/CodeGenModule.cpp file. I changed in EmitGlobal function to detect if the function has "used" attribute and then if it has then use "GetOrCreateLLVMFunction" this to create the function declaration. However, this hack fails in some other cases. Therefore I am looking for a proper way to do this.
> Regards,
> Soham Sinha
> PhD Student, Department of Computer Science
> Boston University
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

More information about the llvm-dev mailing list