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

Soham Sinha via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 25 17:48:31 PDT 2018

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.

Soham Sinha
PhD Student, Department of Computer Science
Boston University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180625/b98923f6/attachment.html>

More information about the llvm-dev mailing list