Author: Teresa Johnson Date: 2020-09-04T08:59:00-07:00 New Revision: 45c3560384814d04c9813e644efa8e2155ecae52
URL: https://github.com/llvm/llvm-project/commit/45c3560384814d04c9813e644efa8e2155ecae52 DIFF: https://github.com/llvm/llvm-project/commit/45c3560384814d04c9813e644efa8e2155ecae52.diff LOG: [HeapProf] Address post-review comments in instrumentation code Addresses post-review comments from D85948, which can be found here: https://reviews.llvm.org/rG7ed8124d46f9. Added: Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Driver/Options.td clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/test/Driver/fmemprof.cpp llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 8b89aac8d6d5..ec77f68062e7 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -145,7 +145,7 @@ CODEGENOPT(IncrementalLinkerCompatible, 1, 0) ///< Emit an object file which can ///< linker. CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants. CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is enabled. -CODEGENOPT(HeapProf , 1, 0) ///< Set when -fmemprof is enabled. +CODEGENOPT(HeapProf , 1, 0) ///< Set when -fmemory-profile is enabled. CODEGENOPT(MSVolatile , 1, 0) ///< Set when /volatile:ms is enabled. CODEGENOPT(NoCommon , 1, 0) ///< Set when -fno-common or C++ is enabled. CODEGENOPT(NoDwarfDirectoryAsm , 1, 0) ///< Set when -fno-dwarf-directory-asm is diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 912192660c14..5f1668e701f1 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -995,7 +995,7 @@ defm cxx_static_destructors : OptOutFFlag<"c++-static-destructors", "", def fsymbol_partition_EQ : Joined<["-"], "fsymbol-partition=">, Group<f_Group>, Flags<[CC1Option]>; -defm memprof : OptInFFlag<"memprof", "Enable", "Disable", " heap memory profiling">; +defm memory_profile : OptInFFlag<"memory-profile", "Enable", "Disable", " heap memory profiling">; // Begin sanitizer flags. These should all be core options exposed in all driver // modes. diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index cce0eb557a9c..0f51443010ca 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -866,8 +866,8 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, LinkCXXRuntimes) || D.CCCIsCXX(); - NeedsHeapProfRt = - Args.hasFlag(options::OPT_fmemprof, options::OPT_fno_memprof, false); + NeedsHeapProfRt = Args.hasFlag(options::OPT_fmemory_profile, + options::OPT_fno_memory_profile, false); // Finally, initialize the set of available and recoverable sanitizers. Sanitizers.Mask |= Kinds; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index bd5a89c2360c..1680f2ad91ea 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4224,8 +4224,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.getLastArg(options::OPT_save_temps_EQ)) Args.AddLastArg(CmdArgs, options::OPT_save_temps_EQ); - if (Args.hasFlag(options::OPT_fmemprof, options::OPT_fno_memprof, false)) - Args.AddLastArg(CmdArgs, options::OPT_fmemprof); + if (Args.hasFlag(options::OPT_fmemory_profile, + options::OPT_fno_memory_profile, false)) + Args.AddLastArg(CmdArgs, options::OPT_fmemory_profile); // Embed-bitcode option. // Only white-listed flags below are allowed to be embedded. diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 9143dd6ca257..fbccff11562c 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1033,7 +1033,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK, Opts.ThinLinkBitcodeFile = std::string(Args.getLastArgValue(OPT_fthin_link_bitcode_EQ)); - Opts.HeapProf = Args.hasArg(OPT_fmemprof); + Opts.HeapProf = Args.hasArg(OPT_fmemory_profile); Opts.MSVolatile = Args.hasArg(OPT_fms_volatile); diff --git a/clang/test/Driver/fmemprof.cpp b/clang/test/Driver/fmemprof.cpp index 049067803e2b..a2b740e1e6e5 100644 --- a/clang/test/Driver/fmemprof.cpp +++ b/clang/test/Driver/fmemprof.cpp @@ -1,6 +1,6 @@ -// RUN: %clangxx -target x86_64-linux-gnu -fmemprof %s -### 2>&1 | FileCheck %s -// RUN: %clangxx -target x86_64-linux-gnu -fmemprof -fno-memprof %s -### 2>&1 | FileCheck %s --check-prefix=OFF -// CHECK: "-cc1" {{.*}} "-fmemprof" +// RUN: %clangxx -target x86_64-linux-gnu -fmemory-profile %s -### 2>&1 | FileCheck %s +// RUN: %clangxx -target x86_64-linux-gnu -fmemory-profile -fno-memory-profile %s -### 2>&1 | FileCheck %s --check-prefix=OFF +// CHECK: "-cc1" {{.*}} "-fmemory-profile" // CHECK: ld{{.*}}libclang_rt.heapprof{{.*}}libclang_rt.heapprof_cxx -// OFF-NOT: "-fmemprof" +// OFF-NOT: "-fmemory-profile" // OFF-NOT: libclang_rt.heapprof diff --git a/llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h b/llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h index af905bbecad8..21943616c5e1 100644 --- a/llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h +++ b/llvm/include/llvm/Transforms/Instrumentation/HeapProfiler.h @@ -1,4 +1,4 @@ -//===--------- Definition of the HeapProfiler class ---------*- C++ -*-===// +//===--------- Definition of the HeapProfiler class -------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -38,8 +38,6 @@ class ModuleHeapProfilerPass : public PassInfoMixin<ModuleHeapProfilerPass> { public: explicit ModuleHeapProfilerPass(); PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); - -private: }; // Insert HeapProfiler instrumentation diff --git a/llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp b/llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp index 6372dfded82a..5f8671d7d88f 100644 --- a/llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp +++ b/llvm/lib/Transforms/Instrumentation/HeapProfiler.cpp @@ -1,5 +1,4 @@ -//===- HeapProfiler.cpp - heap allocation and access profiler -//--------------===// +//===- HeapProfiler.cpp - heap allocation and access profiler -------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -164,7 +163,8 @@ class HeapProfiler { /// If it is an interesting memory access, populate information /// about the access and return a InterestingMemoryAccess struct. /// Otherwise return None. - Optional<InterestingMemoryAccess> isInterestingMemoryAccess(Instruction *I); + Optional<InterestingMemoryAccess> + isInterestingMemoryAccess(Instruction *I) const; void instrumentMop(Instruction *I, const DataLayout &DL, InterestingMemoryAccess &Access); @@ -321,7 +321,7 @@ void HeapProfiler::instrumentMemIntrinsic(MemIntrinsic *MI) { } Optional<InterestingMemoryAccess> -HeapProfiler::isInterestingMemoryAccess(Instruction *I) { +HeapProfiler::isInterestingMemoryAccess(Instruction *I) const { // Do not instrument the load fetching the dynamic shadow address. if (DynamicShadowOffset == I) return None; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits