This is an archive of the discontinued LLVM Phabricator instance.

[ThinLTO] Use valueid instead of bitcode offsets in combined index file
ClosedPublic

Authored by tejohnson on Apr 25 2016, 7:43 AM.

Details

Summary

With the removal of support for lazy parsing of combined index summary
records (e.g. r267344), we no longer need to include the summary record
bitcode offset in the VST entries for definitions. Change the combined
index format to be similar to the per-module index format in using value
ids to cross-reference from the summary record to the VST entry (rather
than the summary record bitcode offset to cross-reference in the other
direction).

The visible changes are:

  1. Add the value id to the combined summary records
  2. Remove the summary offset from the combined VST records, which has

the following effects:

  • No longer need the VST_CODE_COMBINED_GVDEFENTRY record, as all combined index VST entries now only contain the value id and corresponding GUID.
  • No longer have duplicate VST entries in the case where there are multiple definitions of a symbol (e.g. weak/linkonce), as they all have the same value id and GUID.

An implication of #2 above is that in order to hook up an alias to the
correct aliasee based on the value id of the aliasee recorded in the
combined index alias record, we need to scan the entries in the index
for that GUID to find the one from the same module (i.e. the case where
there are multiple entries for the aliasee). But the reader no longer
has to maintain a special map to hook up the alias/aliasee.

Diff Detail

Repository
rL LLVM

Event Timeline

tejohnson updated this revision to Diff 54851.Apr 25 2016, 7:43 AM
tejohnson retitled this revision from to [ThinLTO] Use valueid instead of bitcode offsets in combined index file.
tejohnson updated this object.
tejohnson added a reviewer: mehdi_amini.
tejohnson added a subscriber: llvm-commits.
tejohnson added inline comments.Apr 25 2016, 8:49 AM
lib/Bitcode/Reader/BitcodeReader.cpp
6193 ↗(On Diff #54851)

Reviewing your new version of D18298 and see you added a helper method findSummaryInModule to the index to do exactly this. I will rebase on top of your change once it goes in to use that instead of implementing this lambda.

mehdi_amini accepted this revision.Apr 26 2016, 1:19 PM
mehdi_amini edited edge metadata.

A lot more lines removed than added... these are the best patches :)

It seems quite mechanical, I skimmed through it and nothing struck me, so LGTM.

This revision is now accepted and ready to land.Apr 26 2016, 1:19 PM
In D19481#412694, @joker.eph wrote:

A lot more lines removed than added... these are the best patches :)

It seems quite mechanical, I skimmed through it and nothing struck me, so LGTM.

Thanks. Just note that I will wait until D18298 goes in and then update to use your new helper method findSummaryInModule from that patch.

tejohnson updated this revision to Diff 55152.Apr 26 2016, 6:35 PM
tejohnson edited edge metadata.
  • Incorporate findSummaryInfoModule from earlier version of D18298 and use it
This revision was automatically updated to reflect the committed changes.