[clang] 67a284a - [MemProf] Remove memprof attrs and metadata in non-LTO pipelines (#163853)

via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 16 13:50:29 PDT 2025


Author: Teresa Johnson
Date: 2025-10-16T13:50:24-07:00
New Revision: 67a284a5192bef0f99ee1debecdf72bfbe67a083

URL: https://github.com/llvm/llvm-project/commit/67a284a5192bef0f99ee1debecdf72bfbe67a083
DIFF: https://github.com/llvm/llvm-project/commit/67a284a5192bef0f99ee1debecdf72bfbe67a083.diff

LOG: [MemProf] Remove memprof attrs and metadata in non-LTO pipelines (#163853)

Follow up to PR163841 to use the new pass in the default non-LTO
pipeline setup. This is needed so that we don't use the hints to convert
allocation calls when we don't know whether we are linking with a
library that supports those APIs.

Added: 
    

Modified: 
    clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll
    llvm/lib/Passes/PassBuilderPipelines.cpp
    llvm/test/LTO/X86/memprof-supports-hot-cold-new.ll

Removed: 
    


################################################################################
diff  --git a/clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll b/clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll
index 9f15c803abe84..90cda3ece773e 100644
--- a/clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll
+++ b/clang/test/CodeGen/distributed-thin-lto/supports-hot-cold-new.ll
@@ -46,6 +46,11 @@
 ; RUN: --implicit-check-not "!memprof" --implicit-check-not "!callsite" \
 ; RUN: --implicit-check-not "memprof"="cold"
 
+;; Ensure the attributes and metadata are stripped when running a non-LTO pipeline.
+; RUN: %clang -target x86_64-unknown-linux-gnu -O2 -x ir %t.o -S -emit-llvm -o - | FileCheck %s \
+; RUN: 	--implicit-check-not "!memprof" --implicit-check-not "!callsite" \
+; RUN: 	--implicit-check-not "memprof"="cold"
+
 source_filename = "thinlto-distributed-supports-hot-cold-new.ll"
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"

diff  --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 2d688957c952e..3f3939eaf0eb0 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -1658,6 +1658,16 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
 
   ModulePassManager MPM;
 
+  // Currently this pipeline is only invoked in an LTO pre link pass or when we
+  // are not running LTO. If that changes the below checks may need updating.
+  assert(isLTOPreLink(Phase) || Phase == ThinOrFullLTOPhase::None);
+
+  // If we are invoking this in non-LTO mode, remove any MemProf related
+  // attributes and metadata, as we don't know whether we are linking with
+  // a library containing the necessary interfaces.
+  if (Phase == ThinOrFullLTOPhase::None)
+    MPM.addPass(MemProfRemoveInfo());
+
   // Convert @llvm.global.annotations to !annotation metadata.
   MPM.addPass(Annotation2MetadataPass());
 

diff  --git a/llvm/test/LTO/X86/memprof-supports-hot-cold-new.ll b/llvm/test/LTO/X86/memprof-supports-hot-cold-new.ll
index 966c66d362e88..c3a75f61f248e 100644
--- a/llvm/test/LTO/X86/memprof-supports-hot-cold-new.ll
+++ b/llvm/test/LTO/X86/memprof-supports-hot-cold-new.ll
@@ -34,6 +34,11 @@
 ; RUN: 	--implicit-check-not "!memprof" --implicit-check-not "!callsite" \
 ; RUN: 	--implicit-check-not "memprof"="cold"
 
+;; Ensure the attributes and metadata are stripped when running a non-LTO pipeline.
+; RUN: opt -O3 %t.o -S | FileCheck %s \
+; RUN: 	--implicit-check-not "!memprof" --implicit-check-not "!callsite" \
+; RUN: 	--implicit-check-not "memprof"="cold"
+
 source_filename = "memprof-supports-hot-cold-new.ll"
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"


        


More information about the cfe-commits mailing list