[clang] [Clang][ExprConstant] Normalize aux target builtin IDs before dispatch (PR #201805)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 12 00:51:07 PDT 2026
yaohuihan-iluvatar wrote:
> I don't know anything about auxiliary builtin IDs, what they are or why they exist. BUT:
>
> 1. If this is so important, shouldn't `getConstantEvaluatedBuiltinID` be a member function of `CallExpr`?
> 2. `CallExpr::getBuiltinID()` is already very slow, so adding another layer do that seems bad.
Thanks for your review.
For Q1:
- It's a good idea that making `getConstantEvaluatedBuiltinID` be a member function of `CallExpr`. The aux-ID normalization (`isAuxBuiltinID → getAuxBuiltinID`) is duplicated in several places — `CGBuiltin.cpp (EmitTargetBuiltinExpr)`, `CIRGenBuiltin.cpp`, `SemaChecking.cpp`, `SemaARM.cpp`, `Builtins.cpp` — so centralizing it makes sense.
- However, this requires the maintainer to confirm that the bug needs to be fixed.
For Q2:
- On performance: `getConstantEvaluatedBuiltinID` calls `getBuiltinCallee()` exactly once; everything after that is just `isAuxBuiltinID` (a comparison) and `getAuxBuiltinID` (a subtraction), both O(1). It does not add a second call to the slow `FunctionDecl::getBuiltinID()` — it's a thin wrapper around a single call, not an extra layer stacked on top of it.
https://github.com/llvm/llvm-project/pull/201805
More information about the cfe-commits
mailing list