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
 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to