================
@@ -47,36 +48,54 @@ class Block final {
   static constexpr uint8_t WeakFlag = 1 << 2;
 
 public:
-  static constexpr uint8_t InlineDescMD = sizeof(InlineDescriptor);
-  static constexpr uint8_t GlobalMD = sizeof(GlobalInlineDescriptor);
+  enum BlockKind : uint8_t { None, Local, Global };
 
   /// Creates a new block.
   Block(unsigned EvalID, UnsignedOrNone DeclID, const Descriptor *Desc,
-        unsigned MDSize = 0, bool IsStatic = false, bool IsExtern = false,
-        bool IsWeak = false)
-      : Desc(Desc), DeclID(DeclID), EvalID(EvalID), MDSize(MDSize),
-        IsStatic(IsStatic) {
+        BlockKind K, bool IsExtern, bool IsWeak)
+
+      : Desc(Desc), DescSize(Desc->getAllocSize()), DeclID(DeclID),
+        EvalID(EvalID), Kind(K), MDSize(getMetadataSize(K)) {
     assert(Desc);
     AccessFlags |= (ExternFlag * IsExtern);
     AccessFlags |= (WeakFlag * IsWeak);
   }
 
-  Block(unsigned EvalID, const Descriptor *Desc, unsigned MDSize = 0,
-        bool IsStatic = false, bool IsExtern = false, bool IsWeak = false)
-      : Desc(Desc), EvalID(EvalID), MDSize(MDSize), IsStatic(IsStatic) {
+  Block(unsigned EvalID, const Descriptor *Desc, BlockKind K,
+        bool IsExtern = false, bool IsWeak = false)
+      : Desc(Desc), DescSize(Desc->getAllocSize()), EvalID(EvalID), Kind(K),
+        MDSize(getMetadataSize(K)) {
     assert(Desc);
     AccessFlags |= (ExternFlag * IsExtern);
     AccessFlags |= (WeakFlag * IsWeak);
   }
 
+  /// Number of bytes needed to allocate the block.
+  static constexpr unsigned allocSize(const Descriptor *D, BlockKind K) {
+    return sizeof(Block) + getMetadataSize(K) + D->getAllocSize();
----------------
tbaederr wrote:

Should already be fixed by https://github.com/llvm/llvm-project/pull/237963

https://github.com/llvm/llvm-project/pull/234203
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to