+/* Pack the 4 "kind" bits of a valid cdecl specifier value into two bits. */
+#define PACK_KIND(x) ((( ((x>>8) - ((x)>>11)) ) >> 1) & 3)
+
+/* Expand a packed "kind" to its original value. */
+#define UNPACK_KIND(x) (0x100 << (x))
+
+/*
+ * Pack a valid cdecl specifier value (CDECL_TYPE_xxx, CDECL_STOR_xxx, etc.)
+ * into 8 bits. We do this by encoding the specifier kind in the upper two
+ * bits, and the enumerated sequence in the lower 6 bits. */
+#define PACK_SPEC(x) (((x) & 0x3f) | (PACK_KIND(x) << 6))
+
+/*
+ * Expand a packed specifier to its original value.
+ */
+#define UNPACK_SPEC(x) (UNPACK_KIND((x) >> 6) | ((x) & 0x3f))
+