[clang] d1d2564 - [clang][bytecode] Handle UETT_PtrAuthTypeDiscriminator (#122941)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 14 23:41:24 PST 2025
Author: Timm Baeder
Date: 2025-01-15T08:41:20+01:00
New Revision: d1d25641f4cb87ab2c07a4136ba1cec4fb6cf578
URL: https://github.com/llvm/llvm-project/commit/d1d25641f4cb87ab2c07a4136ba1cec4fb6cf578
DIFF: https://github.com/llvm/llvm-project/commit/d1d25641f4cb87ab2c07a4136ba1cec4fb6cf578.diff
LOG: [clang][bytecode] Handle UETT_PtrAuthTypeDiscriminator (#122941)
Added:
Modified:
clang/lib/AST/ByteCode/Compiler.cpp
clang/test/SemaCXX/ptrauth-type-discriminator.cpp
Removed:
################################################################################
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