[llvm] [WPD]Provide branch weight for checking mode. (PR #124084)
Mingming Liu via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 23 00:31:07 PST 2025
https://github.com/mingmingl-llvm updated https://github.com/llvm/llvm-project/pull/124084
>From aebae34d38ce13e6ac7435b23f8330fb4c2f67d9 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Wed, 22 Jan 2025 23:42:11 -0800
Subject: [PATCH 1/2] [WPD]Provide branch weight for checking mode
---
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp | 5 +++--
llvm/test/ThinLTO/X86/devirt_check.ll | 4 +++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
index 2f171c3c981d40..aaea67aa8fcb64 100644
--- a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
+++ b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
@@ -1225,8 +1225,9 @@ void DevirtModule::applySingleImplDevirt(VTableSlotInfo &SlotInfo,
// perform a debug trap.
if (DevirtCheckMode == WPDCheckMode::Trap) {
auto *Cond = Builder.CreateICmpNE(CB.getCalledOperand(), Callee);
- Instruction *ThenTerm =
- SplitBlockAndInsertIfThen(Cond, &CB, /*Unreachable=*/false);
+ Instruction *ThenTerm = SplitBlockAndInsertIfThen(
+ Cond, &CB, /*Unreachable=*/false,
+ MDBuilder(M.getContext()).createUnlikelyBranchWeights());
Builder.SetInsertPoint(ThenTerm);
Function *TrapFn =
Intrinsic::getOrInsertDeclaration(&M, Intrinsic::debugtrap);
diff --git a/llvm/test/ThinLTO/X86/devirt_check.ll b/llvm/test/ThinLTO/X86/devirt_check.ll
index 74f1dfd6ac012a..4a1a971177ae68 100644
--- a/llvm/test/ThinLTO/X86/devirt_check.ll
+++ b/llvm/test/ThinLTO/X86/devirt_check.ll
@@ -58,7 +58,7 @@ entry:
; Ensure !prof and !callees metadata for indirect call promotion removed.
; TRAP-NOT: prof
; TRAP-NOT: callees
- ; TRAP: br i1 %.not, label %1, label %0
+ ; TRAP: br i1 %.not, label %1, label %0, !prof ![[UNLIKELY:[0-9]+]]
; TRAP: 0:
; TRAP: tail call void @llvm.debugtrap()
; TRAP: br label %1
@@ -89,6 +89,8 @@ entry:
; CHECK-LABEL: ret i32
; CHECK-LABEL: }
+; TRAP: ![[UNLIKELY]] = !{!"branch_weights", i32 1, i32 1048575}
+
declare i1 @llvm.type.test(i8*, metadata)
declare void @llvm.assume(i1)
>From 82aeb06850c701d62161ba24617bd663eea285f6 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Thu, 23 Jan 2025 00:30:46 -0800
Subject: [PATCH 2/2] fix test failure
---
llvm/test/ThinLTO/X86/devirt_check.ll | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/test/ThinLTO/X86/devirt_check.ll b/llvm/test/ThinLTO/X86/devirt_check.ll
index 4a1a971177ae68..4a9a7a4547fd6c 100644
--- a/llvm/test/ThinLTO/X86/devirt_check.ll
+++ b/llvm/test/ThinLTO/X86/devirt_check.ll
@@ -58,7 +58,7 @@ entry:
; Ensure !prof and !callees metadata for indirect call promotion removed.
; TRAP-NOT: prof
; TRAP-NOT: callees
- ; TRAP: br i1 %.not, label %1, label %0, !prof ![[UNLIKELY:[0-9]+]]
+ ; TRAP: br i1 %.not, label %1, label %0, !prof ![[PROF:[0-9]+]]
; TRAP: 0:
; TRAP: tail call void @llvm.debugtrap()
; TRAP: br label %1
@@ -89,7 +89,7 @@ entry:
; CHECK-LABEL: ret i32
; CHECK-LABEL: }
-; TRAP: ![[UNLIKELY]] = !{!"branch_weights", i32 1, i32 1048575}
+; TRAP: ![[PROF]] = !{!"branch_weights", i32 1048575, i32 1}
declare i1 @llvm.type.test(i8*, metadata)
declare void @llvm.assume(i1)
More information about the llvm-commits
mailing list