[llvm-dev] How to force unused external routine declaration into object
Robinson, Paul via llvm-dev
llvm-dev at lists.llvm.org
Thu May 7 13:16:15 PDT 2020
> -----Original Message-----
> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of John Reagan
> via llvm-dev
> Sent: Wednesday, May 6, 2020 9:29 PM
> To: via llvm-dev <llvm-dev at lists.llvm.org>
> Subject: [llvm-dev] How to force unused external routine declaration into
> object
>
> I'm defining an external function in the IR that has no uses at all. No
> calls, no address taken, nada.
>
> Such an unused declaration seems to be just dropped on the floor as not
> needed. Seems reasonable in most cases.
>
> However, one of my OpenVMS compilers (BLISS) has a language rule that
> expects such definitions to get into the ELF symbol table as a way to
> compel the linker to include certain object modules.
>
> With our backend for our older targets, we had a "required_om_entry"
> function attribute that told our backend to put it out regardless.
>
> I was looking at the list of function attributes and don't see anything
> that would accomplish this.
>
> I could just create a bogus variable and initialize it with the
> function's value, but that seems unsavory.
>
> I'm still using a way old version but I'll adapt as needed.
>
> Any suggestions? Did I miss something?
Hi John,
This sounds like __attribute__((used)) which Clang turns into
entries in the @llvm.used list. There's also @llvm.compiler.used
and I'm not clear what the difference is, but hopefully that's
enough of a pointer that you can get it to work for Bliss.
--paulr
>
> John (safely at home with sufficient food & wine)
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
More information about the llvm-dev
mailing list