aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2024-04-18 11:22:10 -0700
committerGitHub <noreply@github.com>2024-04-18 11:22:10 -0700
commit947b656add053a8c9a36cab27b5c6e8eb9c426f7 (patch)
tree3ac96173a63fad53b0983cc6a1feafc63d506511
parent22ed10d11e3ed5179e21a59cfa78b8318d1e1665 (diff)
downloadllvm-947b656add053a8c9a36cab27b5c6e8eb9c426f7.zip
llvm-947b656add053a8c9a36cab27b5c6e8eb9c426f7.tar.gz
llvm-947b656add053a8c9a36cab27b5c6e8eb9c426f7.tar.bz2
[PGO] Check that PGOOpt exists before using PGOOpt->ColdOptType (#89139)
This means that the pass is unusable without some sort of profile. We can revisit this decision later if we want to support running this pass without a profile.
-rw-r--r--llvm/lib/Passes/PassBuilderPipelines.cpp2
-rw-r--r--llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll4
2 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 3bb2ce0..90ba3b5 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -1169,7 +1169,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
if (EnableSyntheticCounts && !PGOOpt)
MPM.addPass(SyntheticCountsPropagation());
- if (EnablePGOForceFunctionAttrs)
+ if (EnablePGOForceFunctionAttrs && PGOOpt)
MPM.addPass(PGOForceFunctionAttrsPass(PGOOpt->ColdOptType));
MPM.addPass(AlwaysInlinerPass(/*InsertLifetimeIntrinsics=*/true));
diff --git a/llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll b/llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll
index 1da0471..55bdb2f 100644
--- a/llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll
+++ b/llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll
@@ -5,6 +5,7 @@
; Should be no changes without profile data
; RUN: opt < %s -passes=pgo-force-function-attrs -S -pgo-cold-func-opt=minsize | FileCheck %s --check-prefixes=NONE,CHECK
+; RUN: opt < %s -passes='default<O2>' -enable-pgo-force-function-attrs -S -pgo-cold-func-opt=minsize | FileCheck %s --check-prefixes=O2
; NONE-NOT: Function Attrs:
; OPTSIZE: Function Attrs: optsize{{$}}
@@ -37,6 +38,9 @@
; CHECK-NOT: Function Attrs: {{.*}}minsize
; CHECK-NOT: Function Attrs: {{.*}}optnone
+; O2: define void @cold_attr(){{.*}} #[[ATTR:[0-9]+]]
+; O2-NOT: #[[ATTR]] = {{.*}}minsize
+
@s = global i32 0
define void @cold() !prof !27 {