[llvm-dev] [ThinLTO] Making ThinLTO functions not fail hasExactDefinition (specifically preventing it from being derefined)

Charles Saternos via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 10 08:55:31 PDT 2017

Hey all,

I'm working on adding interprocedural FunctionAttrs optimization (
http://llvm-cs.pcc.me.uk/lib/Transforms/IPO/FunctionAttrs.cpp) to ThinLTO
so it does something similar to what LTO is doing (
https://bugs.llvm.org/show_bug.cgi?id=33648). I've hit a problem with how
the FunctionAttrs optimization expects linkage types.

In ThinLTO since the linkage type is set to External or AvailableExternally
it is unable to apply any of the functionattr optimizations that LTO can
(since LTO is able to convert everything to Internal). This is a problem
because every functionattr optimization expects an exact definition by
calling hasExactDefinition (http://llvm-cs.pcc.me.uk/
include/llvm/IR/GlobalValue.h#387) which doesn't want a derefined function
(mayBeDerefined http://llvm-cs.pcc.me.uk/include/llvm/IR/GlobalValue.h#119).
According to the current definition, an AvailableExternally function could
be derefined so hasExactDefinition fails.

Does anyone have any ideas on how to make a function with
External/AvailableExternally linkage type have an exact definition?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170710/b3c35754/attachment.html>

More information about the llvm-dev mailing list