Depends on D29808
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp | ||
---|---|---|
290 ↗ | (On Diff #87952) | How many of these fields are specific to ThinLTO? I assume at least the isExported method is ThinLTO-specific? It would be good to document that. Also, as I'm reviewing these patches I'm getting confused as to what aspects of the implementation of the optimization are for ThinLTO, it would be good to include a rough outline of how this works for ThinLTO in this file. |
609 ↗ | (On Diff #87952) | Suggest setting IsExported to false if not, so that it will always be set by this routine. |
610 ↗ | (On Diff #87952) | Needs comment for this block or at least on why this is being cleared. |
637 ↗ | (On Diff #87952) | Do we only ever have IsExported==true and therefore reach here in the ThinLTO case? Please add note to that effect if so. |
1118 ↗ | (On Diff #87952) | What does it mean for the TypeID to not be an MDString? |
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp | ||
---|---|---|
290 ↗ | (On Diff #87952) | Both of the members I'm adding in this patch are ThinLTO-specific. I've added a comment here and an outline to the top of the file in D29808. |
609 ↗ | (On Diff #87952) | We need to leave this field as it is if CSInfo.isExported() is false, because a previous call to this lambda may have set it to true and we need to remember that. |
610 ↗ | (On Diff #87952) | Added to the definition of CallSiteInfo in D29808 |
1118 ↗ | (On Diff #87952) | It generally means that the type ID is a distinct MDNode and is therefore local to the module. This can happen if the merged module contains a module compiled with regular LTO or a module for which we could not generate a module ID (so we weren't able to turn it into an MDString by exporting it -- see http://llvm-cs.pcc.me.uk/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp#114). Added test coverage for this case. |