is there any way to mark a non-referenced function declaration as "used"
in any way (by using the C++ code generator) so that it will be ignored by
the stripDeadPrototypes and globalDCE pass (and any other pass that
possibly might remove seemingly unused functions)?
try adding it to the llvm.used array. To see what that is, I suggest you
compile some C code in which you have marked some function with attribute
"used", and observe the use that clang makes of this array.
got it, thank you! I thought about using a global variable to store a reference to the function, but for some reason my approach didn't work (probably by some silly mistake). Using a global array will do the trick.