[PATCH] LTO: add API to set strategy for -internalize

Duncan P. N. Exon Smith dexonsmith at apple.com
Mon Jan 13 22:45:07 PST 2014


On 2014 Jan 12, at 23:50, Justin Bogner <mail at justinbogner.com> wrote:

> "Duncan P. N. Exon Smith" <dexonsmith at apple.com> writes:
>> Nick: the new patch (attached below) is updated as per our
>> conversation.  Thanks for the review!
>> 
>> Can anyone review the LLVM side?
> 
> LGTM with a couple minor things:

Committed in r199191.  See my comments below.

>> -    explicit InternalizePass();
>> -    explicit InternalizePass(ArrayRef<const char *> ExportList);
>> +    explicit InternalizePass(bool OnlyHidden = false);
>> +    explicit InternalizePass(ArrayRef<const char *> ExportList, bool OnlyHidden);
> 
> Why give one of these a default and not the other?

Since InternalizePass is local to the file, I only implemented the constructors that are actually used.

- createInternalizePass() always specifies OnlyHidden.
- The default constructor is invoked by INITIALIZE_PASS.

I committed without changing this, but let me know if you still think I should add OnlyHidden=false to the ExportList constructor.

>> @@ -99,21 +101,26 @@ void InternalizePass::LoadFile(const char *Filename) {
>>   }
>>   while (In) {
>>     std::string Symbol;
>>     In >> Symbol;
>>     if (!Symbol.empty())
>>       ExternalNames.insert(Symbol);
>>   }
>> }
>> 
>> static bool shouldInternalize(const GlobalValue &GV,
>> -                              const std::set<std::string> &ExternalNames) {
>> +                              const std::set<std::string> &ExternalNames,
>> +                              bool OnlyHidden) {
>> +  // Only internalize hidden symbols.
>> +  if (OnlyHidden && !GV.hasHiddenVisibility())
>> +    return false;
>> +
> 
> The comment is confusing here. It might read better as "Check if we're
> only internalizing hidden symbols", but I'm not convinced it adds
> anything to the code anyway.

Removed the comment.

Thanks for the review!



More information about the llvm-commits mailing list