[PATCH] D35148: Use DenseMap instead std::map for GVSummaryMapTy.

Mehdi AMINI via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 10 11:47:46 PDT 2017


2017-07-10 11:40 GMT-07:00 Teresa Johnson <tejohnson at google.com>:

>
>
> On Mon, Jul 10, 2017 at 11:36 AM, Dehao Chen via Phabricator <
> reviews at reviews.llvm.org> wrote:
>
>> danielcdh added a comment.
>>
>> How should we proceed with this patch?
>>
>> There are indeed some code that iterates through this type, e.g.:
>>
>
> Right, that's what I was referring to here: "The only place I see an
> iteration is when we are computing imports for a module, so I suppose that
> could affect the debug output ordering, but does that matter (if iteration
> order is even non-deterministic for DenseMap, and from what I can tell from
> the LLVM doc linked above it isn't)."
>
> I don't think this is an issue, and from Mehdi's response it sounds like
> he agrees.
>
> I think the patch is good to go. Mehdi - do you concur?
>

I'm not totally sure: for example we won't call `computeImportForFunction`
in the same order.
Right now I don't see how it should matter though.

However, as long as the iteration order is deterministic, it does not
matter if it is undefined: we still have full reproducibility.
It would be an issue if we have multiple-threads that lock and insert to
this map though, as it would make the iteration order non reproducible. If
it is not case I think we're good!

Hope it makes sense.

-- 
Mehdi




>
>
>>   // Populate the worklist with the import for the functions in the
>> current
>>   // module
>>   for (auto &GVSummary : DefinedGVSummaries) {
>>     if (!Index.isGlobalValueLive(GVSummary.second)) {
>>       DEBUG(dbgs() << "Ignores Dead GUID: " << GVSummary.first << "\n");
>>       continue;
>>     }
>>     auto *Summary = GVSummary.second;
>>     if (auto *AS = dyn_cast<AliasSummary>(Summary))
>>       Summary = &AS->getAliasee();
>>     auto *FuncSummary = dyn_cast<FunctionSummary>(Summary);
>>     if (!FuncSummary)
>>       // Skip import for global variables
>>       continue;
>>     DEBUG(dbgs() << "Initalize import for " << GVSummary.first << "\n");
>>     computeImportForFunction(*FuncSummary, Index, ImportInstrLimit,
>>                              DefinedGVSummaries, Worklist, ImportList,
>>                              ExportLists);
>>   }
>>
>>
>> https://reviews.llvm.org/D35148
>>
>>
>>
>>
>
>
> --
> Teresa Johnson |  Software Engineer |  tejohnson at google.com |
> 408-460-2413 <(408)%20460-2413>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170710/c45c1a19/attachment.html>


More information about the llvm-commits mailing list