[PATCH] D49959: [ThinLTO] Fix printing of WPD remarks

Teresa Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jul 28 08:30:21 PDT 2018


tejohnson created this revision.
tejohnson added a reviewer: pcc.
Herald added subscribers: dexonsmith, steven_wu, eraman, inglorion, mehdi_amini.

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.


Repository:
  rL LLVM

https://reviews.llvm.org/D49959

Files:
  lib/Transforms/IPO/WholeProgramDevirt.cpp
  test/ThinLTO/X86/cfi-devirt.ll


Index: test/ThinLTO/X86/cfi-devirt.ll
===================================================================
--- test/ThinLTO/X86/cfi-devirt.ll
+++ test/ThinLTO/X86/cfi-devirt.ll
@@ -5,7 +5,7 @@
 ; RUN: opt -thinlto-bc -o %t.o %s
 
 ; Legacy PM
-; RUN: llvm-lto2 run %t.o -save-temps \
+; RUN: llvm-lto2 run %t.o -save-temps -pass-remarks=. \
 ; RUN:   -o %t3 \
 ; RUN:   -r=%t.o,test,px \
 ; RUN:   -r=%t.o,_ZN1A1nEi,p \
@@ -17,11 +17,11 @@
 ; RUN:   -r=%t.o,_ZN1B1fEi, \
 ; RUN:   -r=%t.o,_ZN1C1fEi, \
 ; RUN:   -r=%t.o,_ZTV1B,px \
-; RUN:   -r=%t.o,_ZTV1C,px
+; RUN:   -r=%t.o,_ZTV1C,px 2>&1 | FileCheck %s --check-prefix=REMARK
 ; RUN: llvm-dis %t3.1.4.opt.bc -o - | FileCheck %s --check-prefix=CHECK-IR
 
 ; New PM
-; RUN: llvm-lto2 run %t.o -save-temps -use-new-pm \
+; RUN: llvm-lto2 run %t.o -save-temps -use-new-pm -pass-remarks=. \
 ; RUN:   -o %t3 \
 ; RUN:   -r=%t.o,test,px \
 ; RUN:   -r=%t.o,_ZN1A1nEi,p \
@@ -33,9 +33,11 @@
 ; RUN:   -r=%t.o,_ZN1B1fEi, \
 ; RUN:   -r=%t.o,_ZN1C1fEi, \
 ; RUN:   -r=%t.o,_ZTV1B,px \
-; RUN:   -r=%t.o,_ZTV1C,px
+; RUN:   -r=%t.o,_ZTV1C,px 2>&1 | FileCheck %s --check-prefix=REMARK
 ; RUN: llvm-dis %t3.1.4.opt.bc -o - | FileCheck %s --check-prefix=CHECK-IR
 
+; REMARK: single-impl: devirtualized a call to _ZN1A1nEi
+
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-grtev4-linux-gnu"
 
Index: lib/Transforms/IPO/WholeProgramDevirt.cpp
===================================================================
--- lib/Transforms/IPO/WholeProgramDevirt.cpp
+++ lib/Transforms/IPO/WholeProgramDevirt.cpp
@@ -755,7 +755,8 @@
   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 @@
         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.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49959.157859.patch
Type: text/x-patch
Size: 2453 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180728/9a94aab2/attachment.bin>


More information about the llvm-commits mailing list