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

Davide Italiano via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 11 12:27:37 PDT 2017

On Mon, Jul 10, 2017 at 8:55 AM, Charles Saternos via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> 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?

+ Sanjoy, who did all the derefinement work originally.


More information about the llvm-dev mailing list