[llvm] [IR] Avoid redundant IRBuilder debug loc updates (PR #193018)
Clemens Wasser via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 21 06:08:55 PDT 2026
https://github.com/clemenswasser updated https://github.com/llvm/llvm-project/pull/193018
>From 62aa68a2744aab9fe36679dddd9cb2a19dcd9ba8 Mon Sep 17 00:00:00 2001
From: Clemens Wasser <clemens.wasser at gmail.com>
Date: Tue, 14 Apr 2026 16:54:47 +0200
Subject: [PATCH 1/2] [IR] Avoid redundant IRBuilder debug loc updates
---
llvm/include/llvm/IR/IRBuilder.h | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index bdec42516b8cd..dda0ee2ac11ab 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -244,7 +244,20 @@ class IRBuilderBase {
}
/// Set location information used by debugging information.
- void SetCurrentDebugLocation(DebugLoc L) {
+ void SetCurrentDebugLocation(const DebugLoc &L) {
+ if (StoredDL == L)
+ return;
+
+ // For !dbg metadata attachments, we use DebugLoc instead of the raw MDNode
+ // to include optional introspection data for use in Debugify.
+ StoredDL = L;
+ }
+
+ /// Set location information used by debugging information.
+ void SetCurrentDebugLocation(DebugLoc &&L) {
+ if (StoredDL == L)
+ return;
+
// For !dbg metadata attachments, we use DebugLoc instead of the raw MDNode
// to include optional introspection data for use in Debugify.
StoredDL = std::move(L);
>From 8269e4dce8912fbe576a842ea7198dc6eaa7c867 Mon Sep 17 00:00:00 2001
From: Clemens Wasser <clemens.wasser at gmail.com>
Date: Tue, 21 Apr 2026 14:23:22 +0200
Subject: [PATCH 2/2] [IR] Avoid redundant TrackingMDRef reassignment work
---
llvm/include/llvm/IR/TrackingMDRef.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/include/llvm/IR/TrackingMDRef.h b/llvm/include/llvm/IR/TrackingMDRef.h
index 7ad7225d076fc..edbe0778d1e58 100644
--- a/llvm/include/llvm/IR/TrackingMDRef.h
+++ b/llvm/include/llvm/IR/TrackingMDRef.h
@@ -33,7 +33,7 @@ class TrackingMDRef {
TrackingMDRef(const TrackingMDRef &X) : MD(X.MD) { track(); }
TrackingMDRef &operator=(TrackingMDRef &&X) {
- if (&X == this)
+ if (&X == this || MD == X.MD)
return *this;
untrack();
@@ -43,7 +43,7 @@ class TrackingMDRef {
}
TrackingMDRef &operator=(const TrackingMDRef &X) {
- if (&X == this)
+ if (&X == this || MD == X.MD)
return *this;
untrack();
More information about the llvm-commits
mailing list