[llvm] a2e8207 - [NFC][LLVMContext] Clean up DenseMapInfo classes used for APInt & APFloat.

Paul Walker via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 1 04:04:04 PST 2023


Author: Paul Walker
Date: 2023-12-01T12:01:23Z
New Revision: a2e8207178432f0af30e8c9e3b905a3fd770d500

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

LOG: [NFC][LLVMContext] Clean up DenseMapInfo classes used for APInt & APFloat.

DenseMapAPIntKeyInfo looks like a redundant definition because it
mirrors the default used by DenseMap when not specified.

Replacing DenseMapAPFloatKeyInfo with a specialisation of
DenseMapInfo allows DenseMap<T> to be more easily used when T is
an aggregate type containing an APFloat.

Added: 
    

Modified: 
    llvm/lib/IR/LLVMContextImpl.h

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h
index b55107beba556c8..6a20291344989dd 100644
--- a/llvm/lib/IR/LLVMContextImpl.h
+++ b/llvm/lib/IR/LLVMContextImpl.h
@@ -73,9 +73,7 @@ class StringRef;
 class TypedPointerType;
 class ValueHandleBase;
 
-using DenseMapAPIntKeyInfo = DenseMapInfo<APInt>;
-
-struct DenseMapAPFloatKeyInfo {
+template <> struct DenseMapInfo<APFloat> {
   static inline APFloat getEmptyKey() { return APFloat(APFloat::Bogus(), 1); }
   static inline APFloat getTombstoneKey() {
     return APFloat(APFloat::Bogus(), 2);
@@ -1489,11 +1487,9 @@ class LLVMContextImpl {
 
   DenseMap<unsigned, std::unique_ptr<ConstantInt>> IntZeroConstants;
   DenseMap<unsigned, std::unique_ptr<ConstantInt>> IntOneConstants;
-  DenseMap<APInt, std::unique_ptr<ConstantInt>, DenseMapAPIntKeyInfo>
-      IntConstants;
+  DenseMap<APInt, std::unique_ptr<ConstantInt>> IntConstants;
 
-  DenseMap<APFloat, std::unique_ptr<ConstantFP>, DenseMapAPFloatKeyInfo>
-      FPConstants;
+  DenseMap<APFloat, std::unique_ptr<ConstantFP>> FPConstants;
 
   FoldingSet<AttributeImpl> AttrsSet;
   FoldingSet<AttributeListImpl> AttrsLists;


        


More information about the llvm-commits mailing list