[llvm-branch-commits] [llvm-branch] r352867 - Merging r352246:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Feb 1 04:44:23 PST 2019


Author: hans
Date: Fri Feb  1 04:44:23 2019
New Revision: 352867

URL: http://llvm.org/viewvc/llvm-project?rev=352867&view=rev
Log:
Merging r352246:
------------------------------------------------------------------------
r352246 | mtrofin | 2019-01-25 22:49:54 +0100 (Fri, 25 Jan 2019) | 23 lines

[llvm] Opt-in flag for X86DiscriminateMemOps

Summary:
Currently, if an instruction with a memory operand has no debug information,
X86DiscriminateMemOps will generate one based on the first line of the
enclosing function, or the last seen debug info.

This may cause confusion in certain debugging scenarios. The long term
approach would be to use the line number '0' in such cases, however, that
brings in challenges: the base discriminator value range is limited
(4096 values).

For the short term, adding an opt-in flag for this feature.

See bug 40319 (https://bugs.llvm.org/show_bug.cgi?id=40319)

Reviewers: dblaikie, jmorse, gbedwell

Reviewed By: dblaikie

Subscribers: aprantl, eraman, hiraditya

Differential Revision: https://reviews.llvm.org/D57257
------------------------------------------------------------------------

Modified:
    llvm/branches/release_80/   (props changed)
    llvm/branches/release_80/lib/Target/X86/X86DiscriminateMemOps.cpp
    llvm/branches/release_80/lib/Target/X86/X86InsertPrefetch.cpp
    llvm/branches/release_80/test/CodeGen/X86/discriminate-mem-ops.ll
    llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-inline.ll
    llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-invalid-instr.ll
    llvm/branches/release_80/test/CodeGen/X86/insert-prefetch.ll

Propchange: llvm/branches/release_80/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb  1 04:44:23 2019
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351421,351426,351436,351475,351485,351753-351754,351910,351930,351932,352034,352204,352374,352770
+/llvm/trunk:155241,351325,351344-351345,351349,351351,351370,351381,351421,351426,351436,351475,351485,351753-351754,351910,351930,351932,352034,352204,352246,352374,352770

Modified: llvm/branches/release_80/lib/Target/X86/X86DiscriminateMemOps.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/lib/Target/X86/X86DiscriminateMemOps.cpp?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/lib/Target/X86/X86DiscriminateMemOps.cpp (original)
+++ llvm/branches/release_80/lib/Target/X86/X86DiscriminateMemOps.cpp Fri Feb  1 04:44:23 2019
@@ -27,6 +27,14 @@ using namespace llvm;
 
 #define DEBUG_TYPE "x86-discriminate-memops"
 
+static cl::opt<bool> EnableDiscriminateMemops(
+    DEBUG_TYPE, cl::init(false),
+    cl::desc("Generate unique debug info for each instruction with a memory "
+             "operand. Should be enabled for profile-drived cache prefetching, "
+             "both in the build of the binary being profiled, as well as in "
+             "the build of the binary consuming the profile."),
+    cl::Hidden);
+
 namespace {
 
 using Location = std::pair<StringRef, unsigned>;
@@ -67,6 +75,9 @@ char X86DiscriminateMemOps::ID = 0;
 X86DiscriminateMemOps::X86DiscriminateMemOps() : MachineFunctionPass(ID) {}
 
 bool X86DiscriminateMemOps::runOnMachineFunction(MachineFunction &MF) {
+  if (!EnableDiscriminateMemops)
+    return false;
+
   DISubprogram *FDI = MF.getFunction().getSubprogram();
   if (!FDI || !FDI->getUnit()->getDebugInfoForProfiling())
     return false;

Modified: llvm/branches/release_80/lib/Target/X86/X86InsertPrefetch.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/lib/Target/X86/X86InsertPrefetch.cpp?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/lib/Target/X86/X86InsertPrefetch.cpp (original)
+++ llvm/branches/release_80/lib/Target/X86/X86InsertPrefetch.cpp Fri Feb  1 04:44:23 2019
@@ -34,7 +34,8 @@ using namespace sampleprof;
 
 static cl::opt<std::string>
     PrefetchHintsFile("prefetch-hints-file",
-                      cl::desc("Path to the prefetch hints profile."),
+                      cl::desc("Path to the prefetch hints profile. See also "
+                               "-x86-discriminate-memops"),
                       cl::Hidden);
 namespace {
 

Modified: llvm/branches/release_80/test/CodeGen/X86/discriminate-mem-ops.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/test/CodeGen/X86/discriminate-mem-ops.ll?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/test/CodeGen/X86/discriminate-mem-ops.ll (original)
+++ llvm/branches/release_80/test/CodeGen/X86/discriminate-mem-ops.ll Fri Feb  1 04:44:23 2019
@@ -1,4 +1,4 @@
-; RUN: llc < %s | FileCheck %s
+; RUN: llc -x86-discriminate-memops  < %s | FileCheck %s
 ;
 ; original source, compiled with -O3 -gmlt -fdebug-info-for-profiling:
 ; int sum(int* arr, int pos1, int pos2) {

Modified: llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-inline.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-inline.ll?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-inline.ll (original)
+++ llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-inline.ll Fri Feb  1 04:44:23 2019
@@ -1,4 +1,4 @@
-; RUN: llc < %s -prefetch-hints-file=%S/insert-prefetch-inline.afdo | FileCheck %s
+; RUN: llc < %s -x86-discriminate-memops -prefetch-hints-file=%S/insert-prefetch-inline.afdo | FileCheck %s
 ;
 ; Verify we can insert prefetch instructions in code belonging to inlined
 ; functions.

Modified: llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-invalid-instr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-invalid-instr.ll?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-invalid-instr.ll (original)
+++ llvm/branches/release_80/test/CodeGen/X86/insert-prefetch-invalid-instr.ll Fri Feb  1 04:44:23 2019
@@ -1,4 +1,4 @@
-; RUN: llc < %s -prefetch-hints-file=%S/insert-prefetch-invalid-instr.afdo | FileCheck %s
+; RUN: llc < %s -x86-discriminate-memops -prefetch-hints-file=%S/insert-prefetch-invalid-instr.afdo | FileCheck %s
 ; ModuleID = 'prefetch.cc'
 source_filename = "prefetch.cc"
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

Modified: llvm/branches/release_80/test/CodeGen/X86/insert-prefetch.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_80/test/CodeGen/X86/insert-prefetch.ll?rev=352867&r1=352866&r2=352867&view=diff
==============================================================================
--- llvm/branches/release_80/test/CodeGen/X86/insert-prefetch.ll (original)
+++ llvm/branches/release_80/test/CodeGen/X86/insert-prefetch.ll Fri Feb  1 04:44:23 2019
@@ -1,5 +1,5 @@
-; RUN: llc < %s -prefetch-hints-file=%S/insert-prefetch.afdo | FileCheck %s
-; RUN: llc < %s -prefetch-hints-file=%S/insert-prefetch-other.afdo | FileCheck %s -check-prefix=OTHERS
+; RUN: llc < %s -x86-discriminate-memops -prefetch-hints-file=%S/insert-prefetch.afdo | FileCheck %s
+; RUN: llc < %s -x86-discriminate-memops -prefetch-hints-file=%S/insert-prefetch-other.afdo | FileCheck %s -check-prefix=OTHERS
 ;
 ; original source, compiled with -O3 -gmlt -fdebug-info-for-profiling:
 ; int sum(int* arr, int pos1, int pos2) {




More information about the llvm-branch-commits mailing list