Index: llvm/trunk/lib/Target/X86/X86DiscriminateMemOps.cpp =================================================================== --- llvm/trunk/lib/Target/X86/X86DiscriminateMemOps.cpp +++ llvm/trunk/lib/Target/X86/X86DiscriminateMemOps.cpp @@ -26,6 +26,14 @@ #define DEBUG_TYPE "x86-discriminate-memops" +static cl::opt 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; @@ -66,6 +74,9 @@ 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; Index: llvm/trunk/lib/Target/X86/X86InsertPrefetch.cpp =================================================================== --- llvm/trunk/lib/Target/X86/X86InsertPrefetch.cpp +++ llvm/trunk/lib/Target/X86/X86InsertPrefetch.cpp @@ -33,7 +33,8 @@ static cl::opt 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 { Index: llvm/trunk/test/CodeGen/X86/discriminate-mem-ops.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/discriminate-mem-ops.ll +++ llvm/trunk/test/CodeGen/X86/discriminate-mem-ops.ll @@ -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) { Index: llvm/trunk/test/CodeGen/X86/insert-prefetch-inline.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/insert-prefetch-inline.ll +++ llvm/trunk/test/CodeGen/X86/insert-prefetch-inline.ll @@ -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. Index: llvm/trunk/test/CodeGen/X86/insert-prefetch-invalid-instr.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/insert-prefetch-invalid-instr.ll +++ llvm/trunk/test/CodeGen/X86/insert-prefetch-invalid-instr.ll @@ -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" Index: llvm/trunk/test/CodeGen/X86/insert-prefetch.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/insert-prefetch.ll +++ llvm/trunk/test/CodeGen/X86/insert-prefetch.ll @@ -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) {