llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Ziqing Luo (ziqingluo-90) <details> <summary>Changes</summary> We have already hit the limit of NumStmtBits downstream after 010d0115fc8e3834fc6f747f0841f3b1e467c4da, which adds 4 new StmtNodes. --- Full diff: https://github.com/llvm/llvm-project/pull/120341.diff 1 Files Affected: - (modified) clang/include/clang/AST/Stmt.h (+15-4) ``````````diff diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index 83fafbabb1d460..4d02b122c5e858 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -109,6 +109,18 @@ class alignas(void *) Stmt { //===--- Statement bitfields classes ---===// + enum { NumStmtBits = 10 }; + +#define STMT(CLASS, PARENT) +#define STMT_RANGE(BASE, FIRST, LAST) +#define LAST_STMT_RANGE(BASE, FIRST, LAST) \ + static_assert( \ + StmtClass::LAST##Class < (1 << NumStmtBits), \ + "The number of 'StmtClass'es is strictly bounded under two to " \ + "the power of 'NumStmtBits'"); +#define ABSTRACT_STMT(STMT) +#include "clang/AST/StmtNodes.inc" + class StmtBitfields { friend class ASTStmtReader; friend class ASTStmtWriter; @@ -116,9 +128,8 @@ class alignas(void *) Stmt { /// The statement class. LLVM_PREFERRED_TYPE(StmtClass) - unsigned sClass : 8; + unsigned sClass : NumStmtBits; }; - enum { NumStmtBits = 8 }; class NullStmtBitfields { friend class ASTStmtReader; @@ -564,8 +575,8 @@ class alignas(void *) Stmt { /// True if the call expression is a must-elide call to a coroutine. unsigned IsCoroElideSafe : 1; - /// Padding used to align OffsetToTrailingObjects to a byte multiple. - unsigned : 24 - 4 - NumExprBits; + static_assert(NumExprBits == 20, + "No extra padding needed when NumExprBits is exactly 20."); /// The offset in bytes from the this pointer to the start of the /// trailing objects belonging to CallExpr. Intentionally byte sized `````````` </details> https://github.com/llvm/llvm-project/pull/120341 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits