[llvm] [IntrinsicEmitter] Make AttributesMap PackedID type-adaptive (PR #158383)

Rahul Joshi via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 14 06:06:49 PDT 2025


================
@@ -633,17 +631,25 @@ static constexpr uint16_t IntrinsicsToAttributesMap[] = {)";
   // Note, ID `-1` is used to indicate no function attributes.
   const uint8_t UniqFnAttributesBitSize =
       Log2_32_Ceil(UniqFnAttributes.size() + 2);
-  const uint16_t NoFunctionAttrsID =
-      maskTrailingOnes<uint16_t>(UniqFnAttributesBitSize);
-  if (UniqAttributesBitSize + UniqFnAttributesBitSize > 16)
-    PrintFatalError(
-        "More than 16 bits are used for IntrinsicsToAttributesMap's entry!");
-
-  // Assign a 16-bit packed ID for each intrinsic. The lower bits will be its
+  const uint32_t NoFunctionAttrsID =
+      maskTrailingOnes<uint32_t>(UniqFnAttributesBitSize);
+  uint8_t AttributesMapDataBitSize =
+      PowerOf2Ceil(UniqAttributesBitSize + UniqFnAttributesBitSize);
+  if (AttributesMapDataBitSize < 8)
+    AttributesMapDataBitSize = 8;
+  else if (AttributesMapDataBitSize > 64)
+    PrintFatalError("Packed ID of IntrinsicsToAttributesMap exceeds 64b!");
+  else if (AttributesMapDataBitSize > 16)
+    PrintWarning("Packed ID of IntrinsicsToAttributesMap exceeds 16b, "
----------------
jurahul wrote:

not sure if this warning is actionable in any way so maybe not generate it?

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


More information about the llvm-commits mailing list