[clang] [clang][bytecode] Handle UETT_PtrAuthTypeDiscriminator (PR #122941)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 14 09:37:13 PST 2025
https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/122941
None
>From 4bef28263ea3947b3bc80835fde340c776d0aad3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder at redhat.com>
Date: Tue, 14 Jan 2025 18:36:30 +0100
Subject: [PATCH] [clang][bytecode] Handle UETT_PtrAuthTypeDiscriminator
---
clang/lib/AST/ByteCode/Compiler.cpp | 10 ++++++++++
clang/test/SemaCXX/ptrauth-type-discriminator.cpp | 3 +++
2 files changed, 13 insertions(+)
diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp
index a5dfaaf3196559..c6e2a1e50a2aa7 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -2141,6 +2141,16 @@ bool Compiler<Emitter>::VisitUnaryExprOrTypeTraitExpr(
return this->emitConst(ASTCtx.toCharUnitsFromBits(Bits).getQuantity(), E);
}
+ if (Kind == UETT_PtrAuthTypeDiscriminator) {
+ if (E->getArgumentType()->isDependentType())
+ return this->emitInvalid(E);
+
+ return this->emitConst(
+ const_cast<ASTContext &>(ASTCtx).getPointerAuthTypeDiscriminator(
+ E->getArgumentType()),
+ E);
+ }
+
return false;
}
diff --git a/clang/test/SemaCXX/ptrauth-type-discriminator.cpp b/clang/test/SemaCXX/ptrauth-type-discriminator.cpp
index 685ca1f03fdddf..f5b71ed86acf74 100644
--- a/clang/test/SemaCXX/ptrauth-type-discriminator.cpp
+++ b/clang/test/SemaCXX/ptrauth-type-discriminator.cpp
@@ -1,6 +1,9 @@
// RUN: %clang_cc1 -triple arm64-apple-ios -std=c++17 -Wno-vla -fsyntax-only -verify -fptrauth-intrinsics %s
// RUN: %clang_cc1 -triple aarch64-linux-gnu -std=c++17 -Wno-vla -fsyntax-only -verify -fptrauth-intrinsics %s
+// RUN: %clang_cc1 -triple arm64-apple-ios -std=c++17 -Wno-vla -fsyntax-only -verify -fptrauth-intrinsics -fexperimental-new-constant-interpreter %s
+// RUN: %clang_cc1 -triple aarch64-linux-gnu -std=c++17 -Wno-vla -fsyntax-only -verify -fptrauth-intrinsics -fexperimental-new-constant-interpreter %s
+
// RUN: not %clang_cc1 -triple arm64-apple-ios -std=c++17 -Wno-vla -fsyntax-only %s 2>&1 | FileCheck %s
// CHECK: this target does not support pointer authentication
More information about the cfe-commits
mailing list