diff options
author | Teresa Johnson <tejohnson@google.com> | 2018-08-14 03:00:16 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2018-08-14 03:00:16 +0000 |
commit | b0a1d3bdf1d0124c555231a518cb6da769cceb05 (patch) | |
tree | a54475cc4e00a5f39f97d12e10ce714ff4129ebe /llvm/lib | |
parent | b7b342e2805a7d674ead0e5bf9ab7307e2ec12b3 (diff) | |
download | bcm5719-llvm-b0a1d3bdf1d0124c555231a518cb6da769cceb05.tar.gz bcm5719-llvm-b0a1d3bdf1d0124c555231a518cb6da769cceb05.zip |
[ThinLTO] Fix printing of WPD remarks
Summary:
When WPD is performed in a ThinLTO backend, the function may be created
if it isn't already in that module. Module::getOrInsertFunction may
add a bitcast, in which case the returned Constant is not a Function and
doesn't have a name. Invoke stripPointerCasts() on the returned value
where we access its name.
Reviewers: pcc
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D49959
llvm-svn: 339640
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp index d65da2504db..2f75c6b6614 100644 --- a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp +++ b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp @@ -755,7 +755,8 @@ void DevirtModule::applySingleImplDevirt(VTableSlotInfo &SlotInfo, auto Apply = [&](CallSiteInfo &CSInfo) { for (auto &&VCallSite : CSInfo.CallSites) { if (RemarksEnabled) - VCallSite.emitRemark("single-impl", TheFn->getName(), OREGetter); + VCallSite.emitRemark("single-impl", + TheFn->stripPointerCasts()->getName(), OREGetter); VCallSite.CS.setCalledFunction(ConstantExpr::getBitCast( TheFn, VCallSite.CS.getCalledValue()->getType())); // This use is no longer unsafe. @@ -891,7 +892,8 @@ void DevirtModule::applyICallBranchFunnel(VTableSlotInfo &SlotInfo, continue; if (RemarksEnabled) - VCallSite.emitRemark("branch-funnel", JT->getName(), OREGetter); + VCallSite.emitRemark("branch-funnel", + JT->stripPointerCasts()->getName(), OREGetter); // Pass the address of the vtable in the nest register, which is r10 on // x86_64. |