[llvm] [Support] Use list-initialization for returning pairs (PR #160447)

via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 23 22:59:42 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-support

Author: Kazu Hirata (kazutakahirata)

<details>
<summary>Changes</summary>

In C++17 and later, "return {A, B};" guarantees copy elision for a
std::pair return type, ensuring the object is constructed directly in
the return slot.  This patch updates those instances under Support/.


---
Full diff: https://github.com/llvm/llvm-project/pull/160447.diff


11 Files Affected:

- (modified) llvm/include/llvm/Support/BinaryStreamRef.h (+1-1) 
- (modified) llvm/include/llvm/Support/DebugCounter.h (+1-1) 
- (modified) llvm/include/llvm/Support/FormatProviders.h (+1-1) 
- (modified) llvm/include/llvm/Support/MD5.h (+1-1) 
- (modified) llvm/include/llvm/Support/OnDiskHashTable.h (+1-1) 
- (modified) llvm/include/llvm/Support/ScaledNumber.h (+16-16) 
- (modified) llvm/lib/Support/OptimizedStructLayout.cpp (+3-3) 
- (modified) llvm/lib/Support/ScaledNumber.cpp (+2-2) 
- (modified) llvm/lib/Support/SmallPtrSet.cpp (+2-2) 
- (modified) llvm/lib/Support/SourceMgr.cpp (+1-1) 
- (modified) llvm/lib/Support/StringExtras.cpp (+1-1) 


``````````diff
diff --git a/llvm/include/llvm/Support/BinaryStreamRef.h b/llvm/include/llvm/Support/BinaryStreamRef.h
index 47009ff0b96fc..8ca312daa3bd7 100644
--- a/llvm/include/llvm/Support/BinaryStreamRef.h
+++ b/llvm/include/llvm/Support/BinaryStreamRef.h
@@ -209,7 +209,7 @@ struct BinarySubstreamRef {
   BinarySubstreamRef keep_front(uint64_t N) const { return slice(0, N); }
 
   std::pair<BinarySubstreamRef, BinarySubstreamRef> split(uint64_t Off) const {
-    return std::make_pair(keep_front(Off), drop_front(Off));
+    return {keep_front(Off), drop_front(Off)};
   }
 
   uint64_t size() const { return StreamData.getLength(); }
diff --git a/llvm/include/llvm/Support/DebugCounter.h b/llvm/include/llvm/Support/DebugCounter.h
index 89349d1ebffee..48fc60035b189 100644
--- a/llvm/include/llvm/Support/DebugCounter.h
+++ b/llvm/include/llvm/Support/DebugCounter.h
@@ -136,7 +136,7 @@ class DebugCounter {
 
   // Return the name and description of the counter with the given ID.
   std::pair<std::string, std::string> getCounterInfo(unsigned ID) const {
-    return std::make_pair(RegisteredCounters[ID], Counters.lookup(ID).Desc);
+    return {RegisteredCounters[ID], Counters.lookup(ID).Desc};
   }
 
   // Iterate through the registered counters
diff --git a/llvm/include/llvm/Support/FormatProviders.h b/llvm/include/llvm/Support/FormatProviders.h
index 3e0800e1efe6c..9147782055574 100644
--- a/llvm/include/llvm/Support/FormatProviders.h
+++ b/llvm/include/llvm/Support/FormatProviders.h
@@ -389,7 +389,7 @@ template <typename IterT> class format_provider<llvm::iterator_range<IterT>> {
     StringRef Sep = consumeOneOption(Style, '$', ", ");
     StringRef Args = consumeOneOption(Style, '@', "");
     assert(Style.empty() && "Unexpected text in range option string!");
-    return std::make_pair(Sep, Args);
+    return {Sep, Args};
   }
 
 public:
diff --git a/llvm/include/llvm/Support/MD5.h b/llvm/include/llvm/Support/MD5.h
index 66e2119f8a132..ed29826bab0cb 100644
--- a/llvm/include/llvm/Support/MD5.h
+++ b/llvm/include/llvm/Support/MD5.h
@@ -57,7 +57,7 @@ class MD5 {
     }
     std::pair<uint64_t, uint64_t> words() const {
       using namespace support;
-      return std::make_pair(high(), low());
+      return {high(), low()};
     }
   };
 
diff --git a/llvm/include/llvm/Support/OnDiskHashTable.h b/llvm/include/llvm/Support/OnDiskHashTable.h
index f6b4055e74de7..d7d72cfbbc649 100644
--- a/llvm/include/llvm/Support/OnDiskHashTable.h
+++ b/llvm/include/llvm/Support/OnDiskHashTable.h
@@ -309,7 +309,7 @@ template <typename Info> class OnDiskChainedHashTable {
     offset_type NumEntries =
         endian::readNext<offset_type, llvm::endianness::little, aligned>(
             Buckets);
-    return std::make_pair(NumBuckets, NumEntries);
+    return {NumBuckets, NumEntries};
   }
 
   offset_type getNumBuckets() const { return NumBuckets; }
diff --git a/llvm/include/llvm/Support/ScaledNumber.h b/llvm/include/llvm/Support/ScaledNumber.h
index 87a56809976a3..07baf153e10c6 100644
--- a/llvm/include/llvm/Support/ScaledNumber.h
+++ b/llvm/include/llvm/Support/ScaledNumber.h
@@ -57,8 +57,8 @@ inline std::pair<DigitsT, int16_t> getRounded(DigitsT Digits, int16_t Scale,
   if (ShouldRound)
     if (!++Digits)
       // Overflow.
-      return std::make_pair(DigitsT(1) << (getWidth<DigitsT>() - 1), Scale + 1);
-  return std::make_pair(Digits, Scale);
+      return {DigitsT(1) << (getWidth<DigitsT>() - 1), Scale + 1};
+  return {Digits, Scale};
 }
 
 /// Convenience helper for 32-bit rounding.
@@ -83,7 +83,7 @@ inline std::pair<DigitsT, int16_t> getAdjusted(uint64_t Digits,
 
   const int Width = getWidth<DigitsT>();
   if (Width == 64 || Digits <= std::numeric_limits<DigitsT>::max())
-    return std::make_pair(Digits, Scale);
+    return {Digits, Scale};
 
   // Shift right and round.
   int Shift = llvm::bit_width(Digits) - Width;
@@ -160,9 +160,9 @@ std::pair<DigitsT, int16_t> getQuotient(DigitsT Dividend, DigitsT Divisor) {
 
   // Check for zero.
   if (!Dividend)
-    return std::make_pair(0, 0);
+    return {0, 0};
   if (!Divisor)
-    return std::make_pair(std::numeric_limits<DigitsT>::max(), MaxScale);
+    return {std::numeric_limits<DigitsT>::max(), MaxScale};
 
   if (getWidth<DigitsT>() == 64)
     return divide64(Dividend, Divisor);
@@ -192,7 +192,7 @@ inline std::pair<int32_t, int> getLgImpl(DigitsT Digits, int16_t Scale) {
   static_assert(!std::numeric_limits<DigitsT>::is_signed, "expected unsigned");
 
   if (!Digits)
-    return std::make_pair(INT32_MIN, 0);
+    return {INT32_MIN, 0};
 
   // Get the floor of the lg of Digits.
   static_assert(sizeof(Digits) <= sizeof(uint64_t));
@@ -201,12 +201,12 @@ inline std::pair<int32_t, int> getLgImpl(DigitsT Digits, int16_t Scale) {
   // Get the actual floor.
   int32_t Floor = Scale + LocalFloor;
   if (Digits == UINT64_C(1) << LocalFloor)
-    return std::make_pair(Floor, 0);
+    return {Floor, 0};
 
   // Round based on the next digit.
   assert(LocalFloor >= 1);
   bool Round = Digits & UINT64_C(1) << (LocalFloor - 1);
-  return std::make_pair(Floor + Round, Round ? 1 : -1);
+  return {Floor + Round, Round ? 1 : -1};
 }
 
 /// Get the lg (rounded) of a scaled number.
@@ -348,11 +348,11 @@ std::pair<DigitsT, int16_t> getSum(DigitsT LDigits, int16_t LScale,
   // Compute sum.
   DigitsT Sum = LDigits + RDigits;
   if (Sum >= RDigits)
-    return std::make_pair(Sum, Scale);
+    return {Sum, Scale};
 
   // Adjust sum after arithmetic overflow.
   DigitsT HighBit = DigitsT(1) << (getWidth<DigitsT>() - 1);
-  return std::make_pair(HighBit | Sum >> 1, Scale + 1);
+  return {HighBit | Sum >> 1, Scale + 1};
 }
 
 /// Convenience helper for 32-bit sum.
@@ -384,18 +384,18 @@ std::pair<DigitsT, int16_t> getDifference(DigitsT LDigits, int16_t LScale,
 
   // Compute difference.
   if (LDigits <= RDigits)
-    return std::make_pair(0, 0);
+    return {0, 0};
   if (RDigits || !SavedRDigits)
-    return std::make_pair(LDigits - RDigits, LScale);
+    return {LDigits - RDigits, LScale};
 
   // Check if RDigits just barely lost its last bit.  E.g., for 32-bit:
   //
   //   1*2^32 - 1*2^0 == 0xffffffff != 1*2^32
   const auto RLgFloor = getLgFloor(SavedRDigits, SavedRScale);
   if (!compare(LDigits, LScale, DigitsT(1), RLgFloor + getWidth<DigitsT>()))
-    return std::make_pair(std::numeric_limits<DigitsT>::max(), RLgFloor);
+    return {std::numeric_limits<DigitsT>::max(), RLgFloor};
 
-  return std::make_pair(LDigits, LScale);
+  return {LDigits, LScale};
 }
 
 /// Convenience helper for 32-bit difference.
@@ -435,9 +435,9 @@ class ScaledNumberBase {
 
   static std::pair<uint64_t, bool> splitSigned(int64_t N) {
     if (N >= 0)
-      return std::make_pair(N, false);
+      return {N, false};
     uint64_t Unsigned = N == INT64_MIN ? UINT64_C(1) << 63 : uint64_t(-N);
-    return std::make_pair(Unsigned, true);
+    return {Unsigned, true};
   }
   static int64_t joinSigned(uint64_t U, bool IsNeg) {
     if (U > uint64_t(INT64_MAX))
diff --git a/llvm/lib/Support/OptimizedStructLayout.cpp b/llvm/lib/Support/OptimizedStructLayout.cpp
index 7b21f927a3462..a3b5c312beaa9 100644
--- a/llvm/lib/Support/OptimizedStructLayout.cpp
+++ b/llvm/lib/Support/OptimizedStructLayout.cpp
@@ -82,7 +82,7 @@ llvm::performOptimizedStructLayout(MutableArrayRef<Field> Fields) {
 #ifndef NDEBUG
     checkValidLayout(Fields, Size, MaxAlign);
 #endif
-    return std::make_pair(Size, MaxAlign);
+    return {Size, MaxAlign};
   }
 
   // Walk over the flexible-offset fields, tracking MaxAlign and
@@ -164,7 +164,7 @@ llvm::performOptimizedStructLayout(MutableArrayRef<Field> Fields) {
 #ifndef NDEBUG
       checkValidLayout(Fields, LastEnd, MaxAlign);
 #endif
-      return std::make_pair(LastEnd, MaxAlign);
+      return {LastEnd, MaxAlign};
     }
   }
 
@@ -452,5 +452,5 @@ llvm::performOptimizedStructLayout(MutableArrayRef<Field> Fields) {
   checkValidLayout(Fields, LastEnd, MaxAlign);
 #endif
 
-  return std::make_pair(LastEnd, MaxAlign);
+  return {LastEnd, MaxAlign};
 }
diff --git a/llvm/lib/Support/ScaledNumber.cpp b/llvm/lib/Support/ScaledNumber.cpp
index 4d5923e3634b1..2c99e07660334 100644
--- a/llvm/lib/Support/ScaledNumber.cpp
+++ b/llvm/lib/Support/ScaledNumber.cpp
@@ -41,7 +41,7 @@ std::pair<uint64_t, int16_t> ScaledNumbers::multiply64(uint64_t LHS,
 
   // Check whether the upper digit is empty.
   if (!Upper)
-    return std::make_pair(Lower, 0);
+    return {Lower, 0};
 
   // Shift as little as possible to maximize precision.
   unsigned LeadingZeros = llvm::countl_zero(Upper);
@@ -91,7 +91,7 @@ std::pair<uint64_t, int16_t> ScaledNumbers::divide64(uint64_t Dividend,
 
   // Check for powers of two.
   if (Divisor == 1)
-    return std::make_pair(Dividend, Shift);
+    return {Dividend, Shift};
 
   // Maximize size of dividend.
   if (int Zeros = llvm::countl_zero(Dividend)) {
diff --git a/llvm/lib/Support/SmallPtrSet.cpp b/llvm/lib/Support/SmallPtrSet.cpp
index a602165a0753c..e377dbf4a6999 100644
--- a/llvm/lib/Support/SmallPtrSet.cpp
+++ b/llvm/lib/Support/SmallPtrSet.cpp
@@ -52,7 +52,7 @@ SmallPtrSetImplBase::insert_imp_big(const void *Ptr) {
   // Okay, we know we have space.  Find a hash bucket.
   const void **Bucket = const_cast<const void**>(FindBucketFor(Ptr));
   if (*Bucket == Ptr)
-    return std::make_pair(Bucket, false); // Already inserted, good.
+    return {Bucket, false}; // Already inserted, good.
 
   // Otherwise, insert it!
   if (*Bucket == getTombstoneMarker())
@@ -60,7 +60,7 @@ SmallPtrSetImplBase::insert_imp_big(const void *Ptr) {
   ++NumEntries;
   *Bucket = Ptr;
   incrementEpoch();
-  return std::make_pair(Bucket, true);
+  return {Bucket, true};
 }
 
 const void *const *SmallPtrSetImplBase::doFind(const void *Ptr) const {
diff --git a/llvm/lib/Support/SourceMgr.cpp b/llvm/lib/Support/SourceMgr.cpp
index 3f97213d86c05..a43cf37a79824 100644
--- a/llvm/lib/Support/SourceMgr.cpp
+++ b/llvm/lib/Support/SourceMgr.cpp
@@ -202,7 +202,7 @@ SourceMgr::getLineAndColumn(SMLoc Loc, unsigned BufferID) const {
   size_t NewlineOffs = StringRef(BufStart, Ptr - BufStart).find_last_of("\n\r");
   if (NewlineOffs == StringRef::npos)
     NewlineOffs = ~(size_t)0;
-  return std::make_pair(LineNo, Ptr - BufStart - NewlineOffs);
+  return {LineNo, Ptr - BufStart - NewlineOffs};
 }
 
 // FIXME: Note that the formatting of source locations is spread between
diff --git a/llvm/lib/Support/StringExtras.cpp b/llvm/lib/Support/StringExtras.cpp
index 6ae26267337b1..5058c08aff64a 100644
--- a/llvm/lib/Support/StringExtras.cpp
+++ b/llvm/lib/Support/StringExtras.cpp
@@ -44,7 +44,7 @@ std::pair<StringRef, StringRef> llvm::getToken(StringRef Source,
   // Find the next occurrence of the delimiter.
   StringRef::size_type End = Source.find_first_of(Delimiters, Start);
 
-  return std::make_pair(Source.slice(Start, End), Source.substr(End));
+  return {Source.slice(Start, End), Source.substr(End)};
 }
 
 /// SplitString - Split up the specified string according to the specified

``````````

</details>


https://github.com/llvm/llvm-project/pull/160447


More information about the llvm-commits mailing list