Author: Thibault Monnier Date: 2025-08-13T08:18:11-04:00 New Revision: b75896bc4525e153aa9cdf77e0993aae0d637a28
URL: https://github.com/llvm/llvm-project/commit/b75896bc4525e153aa9cdf77e0993aae0d637a28 DIFF: https://github.com/llvm/llvm-project/commit/b75896bc4525e153aa9cdf77e0993aae0d637a28.diff LOG: [Clang] Optimize tok::isLiteral with range-based condition (#153228) This commit optimizes `tok::isLiteral` by replacing a succession of `13` conditions with a range-based check. I am not sure whether this is allowed. I believe it is done nowhere else in the codebase ; however, I have seen range-based conditions being used with other enums. --------- Co-authored-by: Corentin Jabot <corentinja...@gmail.com> Added: Modified: clang/include/clang/Basic/TokenKinds.h Removed: ################################################################################ diff --git a/clang/include/clang/Basic/TokenKinds.h b/clang/include/clang/Basic/TokenKinds.h index 1b133dde89587..d84f3598cbf33 100644 --- a/clang/include/clang/Basic/TokenKinds.h +++ b/clang/include/clang/Basic/TokenKinds.h @@ -95,10 +95,20 @@ inline bool isStringLiteral(TokenKind K) { /// Return true if this is a "literal" kind, like a numeric /// constant, string, etc. inline bool isLiteral(TokenKind K) { - return K == tok::numeric_constant || K == tok::char_constant || - K == tok::wide_char_constant || K == tok::utf8_char_constant || - K == tok::utf16_char_constant || K == tok::utf32_char_constant || - isStringLiteral(K) || K == tok::header_name || K == tok::binary_data; + const bool isInLiteralRange = + K >= tok::numeric_constant && K <= tok::utf32_string_literal; + +#if !NDEBUG + const bool isLiteralExplicit = + K == tok::numeric_constant || K == tok::char_constant || + K == tok::wide_char_constant || K == tok::utf8_char_constant || + K == tok::utf16_char_constant || K == tok::utf32_char_constant || + isStringLiteral(K) || K == tok::header_name || K == tok::binary_data; + assert(isInLiteralRange == isLiteralExplicit && + "TokenKind literals should be contiguous"); +#endif + + return isInLiteralRange; } /// Return true if this is any of tok::annot_* kinds. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits