[clang] [clang]Implement the c23 stdc bit builtins (PR #185978)
Eli Friedman via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 16 11:35:26 PDT 2026
================
@@ -3811,6 +3839,44 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
return ExprError();
break;
+ case Builtin::BI__builtin_stdc_bit_floor:
+ case Builtin::BI__builtin_stdc_bit_ceil:
+ case Builtin::BIstdc_bit_floor:
+ case Builtin::BIstdc_bit_ceil:
+ if (BuiltinStdCBuiltin(*this, TheCall, QualType()))
+ return ExprError();
+ break;
+ case Builtin::BI__builtin_stdc_has_single_bit:
+ case Builtin::BIstdc_has_single_bit:
+ if (BuiltinStdCBuiltin(*this, TheCall, Context.BoolTy))
+ return ExprError();
+ break;
+ case Builtin::BI__builtin_stdc_leading_zeros:
+ case Builtin::BI__builtin_stdc_leading_ones:
+ case Builtin::BI__builtin_stdc_trailing_zeros:
+ case Builtin::BI__builtin_stdc_trailing_ones:
+ case Builtin::BI__builtin_stdc_first_leading_zero:
+ case Builtin::BI__builtin_stdc_first_leading_one:
+ case Builtin::BI__builtin_stdc_first_trailing_zero:
+ case Builtin::BI__builtin_stdc_first_trailing_one:
+ case Builtin::BI__builtin_stdc_count_zeros:
+ case Builtin::BI__builtin_stdc_count_ones:
+ case Builtin::BI__builtin_stdc_bit_width:
+ case Builtin::BIstdc_leading_zeros:
+ case Builtin::BIstdc_leading_ones:
+ case Builtin::BIstdc_trailing_zeros:
+ case Builtin::BIstdc_trailing_ones:
+ case Builtin::BIstdc_first_leading_zero:
+ case Builtin::BIstdc_first_leading_one:
+ case Builtin::BIstdc_first_trailing_zero:
+ case Builtin::BIstdc_first_trailing_one:
+ case Builtin::BIstdc_count_zeros:
+ case Builtin::BIstdc_count_ones:
+ case Builtin::BIstdc_bit_width:
+ if (BuiltinStdCBuiltin(*this, TheCall, Context.UnsignedIntTy))
----------------
efriedma-quic wrote:
We probably want to error out if the result doesn't fit into an "unsigned int". (This is probably not really a practical issue in most cases due to limits on the size of integers, but there could be some weird edge cases with _BitInt on targets where "int" is 16 bits.)
https://github.com/llvm/llvm-project/pull/185978
More information about the cfe-commits
mailing list