[llvm-branch-commits] [clang] [clang] Define ptrauth_sign_constant builtin. (PR #93904)
Ahmed Bougacha via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Jun 3 15:01:35 PDT 2024
================
@@ -2126,14 +2219,16 @@ static ExprResult PointerAuthSignGenericData(Sema &S, CallExpr *Call) {
}
static ExprResult PointerAuthSignOrAuth(Sema &S, CallExpr *Call,
- PointerAuthOpKind OpKind) {
+ PointerAuthOpKind OpKind,
+ bool RequireConstant) {
if (S.checkArgCount(Call, 3))
return ExprError();
if (checkPointerAuthEnabled(S, Call))
return ExprError();
- if (checkPointerAuthValue(S, Call->getArgs()[0], OpKind) ||
+ if (checkPointerAuthValue(S, Call->getArgs()[0], OpKind, RequireConstant) ||
----------------
ahmedbougacha wrote:
This one is actually interesting: we can't do that as-is, because the helper functions take an `Expr *&`, to do type conversion and placeholder expansion in-place; see e.g., `convertArgumentToType`.
Another existing user makes the modification explicit using a local and `setArg`, but we have a lot of these calls in the checking code here.
We can rename the helper to something explicit though, perhaps `checkAndConvertPointerAuthValue`, and pass the call expr and arg index separately (same for key etc.)
https://github.com/llvm/llvm-project/pull/93904
More information about the llvm-branch-commits
mailing list