https://github.com/ojhunt updated 
https://github.com/llvm/llvm-project/pull/153722

>From 0cbb0846f270c6d6cb15492ba34ff9ae2ed33f67 Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Thu, 14 Aug 2025 17:43:03 -0700
Subject: [PATCH 1/8] [clang][PAC][darwin] Set correct default ptrauth features
 for arm64e-darwin

This PR makes sure that when targeting arm64e on darwin platforms
the correct flags are set for the userspace platform ABI.
---
 clang/include/clang/Basic/Features.def        |  2 +-
 clang/lib/Driver/ToolChains/Darwin.cpp        | 33 +++++++
 clang/test/Driver/ptrauth-platform-defaults.c | 85 +++++++++++++++++++
 clang/test/Sema/ptrauth-platform-defaults.c   | 45 ++++++++++
 4 files changed, 164 insertions(+), 1 deletion(-)
 create mode 100644 clang/test/Driver/ptrauth-platform-defaults.c
 create mode 100644 clang/test/Sema/ptrauth-platform-defaults.c

diff --git a/clang/include/clang/Basic/Features.def 
b/clang/include/clang/Basic/Features.def
index b9efc6a6a2e9d..e59c33a695a4d 100644
--- a/clang/include/clang/Basic/Features.def
+++ b/clang/include/clang/Basic/Features.def
@@ -164,7 +164,7 @@ FEATURE(ptrauth_elf_got, LangOpts.PointerAuthELFGOT)
 
 FEATURE(ptrauth_objc_isa, LangOpts.PointerAuthObjcIsa)
 FEATURE(ptrauth_objc_interface_sel, LangOpts.PointerAuthObjcInterfaceSel)
-FEATURE(ptrauth_objc_signable_class, true)
+FEATURE(ptrauth_objc_signable_class, LangOpts.PointerAuthCalls || 
LangOpts.PointerAuthIntrinsics)
 FEATURE(ptrauth_objc_method_list_pointer, LangOpts.PointerAuthCalls)
 
 EXTENSION(swiftcc,
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index e5075cbcaf660..6dd170d6f2b8c 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -3291,6 +3291,39 @@ void Darwin::addClangTargetOptions(
     if (!RequiresSubdirectorySearch)
       CC1Args.push_back("-fno-modulemap-allow-subdirectory-search");
   }
+
+  if (getTriple().isArm64e()) {
+    auto EnsureDefaultPtrauthFlag = [&](OptSpecifier Pos, OptSpecifier Neg) {
+      assert(Pos != Neg);
+      if (const Arg *Opt = DriverArgs.getLastArg(Pos, Neg);
+          Opt && Opt->getOption().matches(Neg))
+        return;
+      Option PosOpt = getDriverOptTable().getOption(Pos);
+      CC1Args.push_back(PosOpt.getPrefixedName().data());
+    };
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_calls,
+                             options::OPT_fno_ptrauth_calls);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_returns,
+                             options::OPT_fno_ptrauth_returns);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_intrinsics,
+                             options::OPT_fno_ptrauth_intrinsics);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_indirect_gotos,
+                             options::OPT_fno_ptrauth_indirect_gotos);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_auth_traps,
+                             options::OPT_fno_ptrauth_auth_traps);
+    EnsureDefaultPtrauthFlag(
+        options::OPT_fptrauth_vtable_pointer_address_discrimination,
+        options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
+    EnsureDefaultPtrauthFlag(
+        options::OPT_fptrauth_vtable_pointer_type_discrimination,
+        options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_isa,
+                             options::OPT_fno_ptrauth_objc_isa);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_class_ro,
+                             options::OPT_fno_ptrauth_objc_class_ro);
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_interface_sel,
+                             options::OPT_fno_ptrauth_objc_interface_sel);
+  }
 }
 
 void Darwin::addClangCC1ASTargetOptions(
diff --git a/clang/test/Driver/ptrauth-platform-defaults.c 
b/clang/test/Driver/ptrauth-platform-defaults.c
new file mode 100644
index 0000000000000..aa2968d9025bc
--- /dev/null
+++ b/clang/test/Driver/ptrauth-platform-defaults.c
@@ -0,0 +1,85 @@
+// RUN: %clang -target arm64                   -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-apple-macosx      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-darwin            -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-apple-darwin      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-apple-ios-macabi  -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-linux-gnu         -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64e-linux-gnu        -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target aarch64-linux-gnu       -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+// RUN: %clang -target arm64e-apple-ios        -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+// RUN: %clang -target arm64e-darwin           -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+// RUN: %clang -target arm64e-apple-darwin     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+// RUN: %clang -target arm64e-apple-ios-macabi -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+
+// A simple test case to test basic override logic
+// RUN: %clang -target arm64e-apple-macosx     
-DDARWIN_DEFAULT_PTRAUTH_OVERRIDE -fno-ptrauth-calls %s -fsyntax-only -Xclang 
-verify=darwin_ptrauth_override
+
+#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
+  _Static_assert(enabled == __has_##kind(feature),                             
\
+                "Expected to have the " #feature " " #kind " enabled");
+
+#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
+  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
+#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
+  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
+#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
+  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
+#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
+  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+// These flags directly reflect the state of ptrauth_calls, but exist
+// for backward compatibility reasons
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#else
+ASSERT_FEATURE_ENABLED(ptrauth_calls)
+ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+ASSERT_FEATURE_ENABLED(ptrauth_returns)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
+#endif
+
+#ifdef NO_DEFAULT_PTRAUTH
+ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+ASSERT_FEATURE_DISABLED(ptrauth_returns)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+// darwin_ptrauth_defaults-no-diagnostics
+// no_default_ptrauth-no-diagnostics
+// darwin_ptrauth_override-no-diagnostics
diff --git a/clang/test/Sema/ptrauth-platform-defaults.c 
b/clang/test/Sema/ptrauth-platform-defaults.c
new file mode 100644
index 0000000000000..0dcddbfa22f76
--- /dev/null
+++ b/clang/test/Sema/ptrauth-platform-defaults.c
@@ -0,0 +1,45 @@
+// RUN: %clang_cc1 -triple arm64                   %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-apple-macosx      %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-darwin            %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-apple-darwin      %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-apple-ios-macabi  %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-linux-gnu         %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-linux-gnu        %s -fsyntax-only
+// RUN: %clang_cc1 -triple aarch64-linux-gnu       %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-apple-macosx     %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-apple-ios        %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-darwin           %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-apple-darwin     %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e-apple-ios-macabi %s -fsyntax-only
+
+// The -cc1 mode should not insert default ptrauth flags
+
+#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
+  _Static_assert(enabled == __has_##kind(feature),                             
\
+                "Expected to have the " #feature " " #kind " enabled");
+
+#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
+  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
+#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
+  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
+
+ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+ASSERT_FEATURE_DISABLED(ptrauth_returns)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+
+// expected-no-diagnostics

>From 4f7927f26fe87c885c71d70fe1060d07e64bf54f Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Sun, 17 Aug 2025 04:39:03 -0700
Subject: [PATCH 2/8] addressng feedback

---
 clang/lib/Driver/ToolChains/Darwin.cpp        | 97 +++++++++----------
 clang/test/Driver/arch-arm64e.c               | 37 ++++---
 clang/test/Driver/ptrauth-platform-defaults.c |  3 -
 clang/test/Sema/ptrauth-platform-defaults.c   | 17 +---
 4 files changed, 67 insertions(+), 87 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index 6dd170d6f2b8c..4abc2b1565ba9 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -3187,28 +3187,54 @@ void MachO::addClangTargetOptions(const 
llvm::opt::ArgList &DriverArgs,
 
   ToolChain::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind);
 
-  // On arm64e, enable pointer authentication (for the return address and
-  // indirect calls), as well as usage of the intrinsics.
-  if (getArchName() == "arm64e") {
-    if (!DriverArgs.hasArg(options::OPT_fptrauth_returns,
-                           options::OPT_fno_ptrauth_returns))
-      CC1Args.push_back("-fptrauth-returns");
-
-    if (!DriverArgs.hasArg(options::OPT_fptrauth_intrinsics,
-                           options::OPT_fno_ptrauth_intrinsics))
-      CC1Args.push_back("-fptrauth-intrinsics");
+  // On arm64e, we enable all the features required for the Darwin userspace
+  // ABI
+  if (getTriple().isArm64e()) {
+    auto EnsureDefaultPtrauthFlag = [&](OptSpecifier Pos, OptSpecifier Neg,
+                                        const char* param_name) {
+      if (DriverArgs.hasArg(Pos, Neg))
+        return;
+      CC1Args.push_back(param_name);
+    };
 
-    if (!DriverArgs.hasArg(options::OPT_fptrauth_calls,
-                           options::OPT_fno_ptrauth_calls))
-      CC1Args.push_back("-fptrauth-calls");
+    // Core platform ABI
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_calls,
+                             options::OPT_fno_ptrauth_calls,
+                            "-fptrauth-calls");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_returns,
+                             options::OPT_fno_ptrauth_returns,
+                            "-fptrauth-returns");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_intrinsics,
+                             options::OPT_fno_ptrauth_intrinsics,
+                            "-fptrauth-intrinsics");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_indirect_gotos,
+                             options::OPT_fno_ptrauth_indirect_gotos,
+                            "-fptrauth-indirect-gotos");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_auth_traps,
+                             options::OPT_fno_ptrauth_auth_traps,
+                            "-fptrauth-auth-traps");
 
-    if (!DriverArgs.hasArg(options::OPT_fptrauth_indirect_gotos,
-                           options::OPT_fno_ptrauth_indirect_gotos))
-      CC1Args.push_back("-fptrauth-indirect-gotos");
+    // C++ v-table ABI
+    EnsureDefaultPtrauthFlag(
+        options::OPT_fptrauth_vtable_pointer_address_discrimination,
+        options::OPT_fno_ptrauth_vtable_pointer_address_discrimination,
+        "-fptrauth-vtable-pointer-address-discrimination"
+      );
+    EnsureDefaultPtrauthFlag(
+        options::OPT_fptrauth_vtable_pointer_type_discrimination,
+        options::OPT_fno_ptrauth_vtable_pointer_type_discrimination,
+        "-fptrauth-vtable-pointer-type-discrimination");
 
-    if (!DriverArgs.hasArg(options::OPT_fptrauth_auth_traps,
-                           options::OPT_fno_ptrauth_auth_traps))
-      CC1Args.push_back("-fptrauth-auth-traps");
+    // Objective-C ABI
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_isa,
+                             options::OPT_fno_ptrauth_objc_isa,
+                             "-fptrauth-objc-isa");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_class_ro,
+                             options::OPT_fno_ptrauth_objc_class_ro,
+                             "-fptrauth-objc-class-ro");
+    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_interface_sel,
+                             options::OPT_fno_ptrauth_objc_interface_sel,
+                             "-fptrauth-objc-interface-sel");
   }
 }
 
@@ -3291,39 +3317,6 @@ void Darwin::addClangTargetOptions(
     if (!RequiresSubdirectorySearch)
       CC1Args.push_back("-fno-modulemap-allow-subdirectory-search");
   }
-
-  if (getTriple().isArm64e()) {
-    auto EnsureDefaultPtrauthFlag = [&](OptSpecifier Pos, OptSpecifier Neg) {
-      assert(Pos != Neg);
-      if (const Arg *Opt = DriverArgs.getLastArg(Pos, Neg);
-          Opt && Opt->getOption().matches(Neg))
-        return;
-      Option PosOpt = getDriverOptTable().getOption(Pos);
-      CC1Args.push_back(PosOpt.getPrefixedName().data());
-    };
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_calls,
-                             options::OPT_fno_ptrauth_calls);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_returns,
-                             options::OPT_fno_ptrauth_returns);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_intrinsics,
-                             options::OPT_fno_ptrauth_intrinsics);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_indirect_gotos,
-                             options::OPT_fno_ptrauth_indirect_gotos);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_auth_traps,
-                             options::OPT_fno_ptrauth_auth_traps);
-    EnsureDefaultPtrauthFlag(
-        options::OPT_fptrauth_vtable_pointer_address_discrimination,
-        options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
-    EnsureDefaultPtrauthFlag(
-        options::OPT_fptrauth_vtable_pointer_type_discrimination,
-        options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_isa,
-                             options::OPT_fno_ptrauth_objc_isa);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_class_ro,
-                             options::OPT_fno_ptrauth_objc_class_ro);
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_interface_sel,
-                             options::OPT_fno_ptrauth_objc_interface_sel);
-  }
 }
 
 void Darwin::addClangCC1ASTargetOptions(
diff --git a/clang/test/Driver/arch-arm64e.c b/clang/test/Driver/arch-arm64e.c
index 0fb12d4dcc5e3..d678a038f1737 100644
--- a/clang/test/Driver/arch-arm64e.c
+++ b/clang/test/Driver/arch-arm64e.c
@@ -2,11 +2,20 @@
 
 // RUN: %clang -target arm64-apple-darwin -c %s -### 2>&1 | FileCheck %s 
--check-prefix NONE
 // NONE: "-cc1"
-// NONE-NOT: "-fptrauth-intrinsics"
+
 // NONE-NOT: "-fptrauth-calls"
 // NONE-NOT: "-fptrauth-returns"
+// NONE-NOT: "-fptrauth-intrinsics"
 // NONE-NOT: "-fptrauth-indirect-gotos"
 // NONE-NOT: "-fptrauth-auth-traps"
+// NONE-NOT: "-fptrauth-vtable-pointer-address-discrimination"
+// NONE-NOT: "-fptrauth-vtable-pointer-type-discrimination"
+// NONE-NOT: "-fptrauth-objc-isa"
+// NONE-NOT: "-fptrauth-objc-class-ro"
+// NONE-NOT: "-fptrauth-objc-interface-sel"
+
+// Final catch all if any new flags are added
+// NONE-NOT: "-fptrauth"
 
 // RUN: %clang -target arm64-apple-darwin -fptrauth-calls -c %s -### 2>&1 | 
FileCheck %s --check-prefix CALL
 // CALL: "-cc1"{{.*}} {{.*}} "-fptrauth-calls"
@@ -27,40 +36,28 @@
 // Check the arm64e defaults.
 
 // RUN: %clang -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT
-// RUN: %clang -mkernel -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck 
%s --check-prefix DEFAULT
-// RUN: %clang -fapple-kext -target arm64e-apple-ios -c %s -### 2>&1 | 
FileCheck %s --check-prefix DEFAULT
-// DEFAULT: "-fptrauth-returns" "-fptrauth-intrinsics" "-fptrauth-calls" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
+// RUN: %clang -target arm64e-apple-macos -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT
+// DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 // RUN: %clang -target arm64e-apple-none-macho -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT-MACHO
-// DEFAULT-MACHO: "-fptrauth-returns" "-fptrauth-intrinsics" "-fptrauth-calls" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
+// DEFAULT-MACHO: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-calls -c %s -### 2>&1 | 
FileCheck %s --check-prefix DEFAULT-NOCALL
-// RUN: %clang -mkernel -target arm64e-apple-ios -fno-ptrauth-calls -c %s -### 
2>&1 | FileCheck %s --check-prefix DEFAULT-NOCALL
-// RUN: %clang -fapple-kext -target arm64e-apple-ios -fno-ptrauth-calls -c %s 
-### 2>&1 | FileCheck %s --check-prefix DEFAULT-NOCALL
 // DEFAULT-NOCALL-NOT: "-fptrauth-calls"
-// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" {{.*}}"-target-cpu" 
"apple-a12"
+// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-returns -c %s -### 2>&1 | 
FileCheck %s --check-prefix NORET
 
 // NORET-NOT: "-fptrauth-returns"
-// NORET: "-fptrauth-intrinsics" "-fptrauth-calls" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" {{.*}}"-target-cpu" "apple-a12"
+// NORET: "-fptrauth-calls" "-fptrauth-intrinsics" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-intrinsics -c %s -### 
2>&1 | FileCheck %s --check-prefix NOINTRIN
 
-// NOINTRIN: "-fptrauth-returns"
 // NOINTRIN-NOT: "-fptrauth-intrinsics"
-// NOINTRIN: "-fptrauth-calls" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" {{.*}}"-target-cpu" "apple-a12"{{.*}}
+// NOINTRIN: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-auth-traps -c %s -### 
2>&1 | FileCheck %s --check-prefix NOTRAP
-// NOTRAP: "-fptrauth-returns" "-fptrauth-intrinsics" "-fptrauth-calls" 
"-fptrauth-indirect-gotos" {{.*}}"-target-cpu" "apple-a12"
-
-
-// Check the CPU defaults and overrides.
-
-// RUN: %clang -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck %s 
--check-prefix APPLE-A12
-// RUN: %clang -target arm64e-apple-ios -mcpu=apple-a13 -c %s -### 2>&1 | 
FileCheck %s --check-prefix APPLE-A13
-// APPLE-A12: "-cc1"{{.*}} "-target-cpu" "apple-a12"
-// APPLE-A13: "-cc1"{{.*}} "-target-cpu" "apple-a13"
+// NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
diff --git a/clang/test/Driver/ptrauth-platform-defaults.c 
b/clang/test/Driver/ptrauth-platform-defaults.c
index aa2968d9025bc..c1d065a8808a0 100644
--- a/clang/test/Driver/ptrauth-platform-defaults.c
+++ b/clang/test/Driver/ptrauth-platform-defaults.c
@@ -3,9 +3,6 @@
 // RUN: %clang -target arm64-darwin            -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
 // RUN: %clang -target arm64-apple-darwin      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
 // RUN: %clang -target arm64-apple-ios-macabi  -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-linux-gnu         -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64e-linux-gnu        -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target aarch64-linux-gnu       -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
 // RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
 // RUN: %clang -target arm64e-apple-ios        -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
 // RUN: %clang -target arm64e-darwin           -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
diff --git a/clang/test/Sema/ptrauth-platform-defaults.c 
b/clang/test/Sema/ptrauth-platform-defaults.c
index 0dcddbfa22f76..5a959feca01b8 100644
--- a/clang/test/Sema/ptrauth-platform-defaults.c
+++ b/clang/test/Sema/ptrauth-platform-defaults.c
@@ -1,30 +1,23 @@
+// The -cc1 mode should not insert default ptrauth flags
+
 // RUN: %clang_cc1 -triple arm64                   %s -fsyntax-only
 // RUN: %clang_cc1 -triple arm64-apple-macosx      %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-darwin            %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-apple-darwin      %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64-apple-ios         %s -fsyntax-only
 // RUN: %clang_cc1 -triple arm64-apple-ios-macabi  %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-linux-gnu         %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-linux-gnu        %s -fsyntax-only
-// RUN: %clang_cc1 -triple aarch64-linux-gnu       %s -fsyntax-only
+// RUN: %clang_cc1 -triple arm64e                  %s -fsyntax-only
 // RUN: %clang_cc1 -triple arm64e-apple-macosx     %s -fsyntax-only
 // RUN: %clang_cc1 -triple arm64e-apple-ios        %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-darwin           %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-apple-darwin     %s -fsyntax-only
 // RUN: %clang_cc1 -triple arm64e-apple-ios-macabi %s -fsyntax-only
 
-// The -cc1 mode should not insert default ptrauth flags
-
 #define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
   _Static_assert(enabled == __has_##kind(feature),                             
\
                 "Expected to have the " #feature " " #kind " enabled");
 
 #define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
   ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
-  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
 
 ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_qualifier)
 ASSERT_FEATURE_DISABLED(ptrauth_calls)
 ASSERT_FEATURE_DISABLED(ptrauth_returns)
 ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)

>From e47f40fb41d0f285dee3368c67f9c08b2a9aa3b2 Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Sun, 17 Aug 2025 15:13:35 -0700
Subject: [PATCH 3/8] moving test content around and adding a -arch specific
 set

---
 .../Driver/arch-arm64e-arch-opt-defaults.c    | 138 ++++++++++++++++++
 clang/test/Driver/arch-arm64e.c               |  80 ++++++++++
 clang/test/Driver/ptrauth-platform-defaults.c |  82 -----------
 3 files changed, 218 insertions(+), 82 deletions(-)
 create mode 100644 clang/test/Driver/arch-arm64e-arch-opt-defaults.c
 delete mode 100644 clang/test/Driver/ptrauth-platform-defaults.c

diff --git a/clang/test/Driver/arch-arm64e-arch-opt-defaults.c 
b/clang/test/Driver/arch-arm64e-arch-opt-defaults.c
new file mode 100644
index 0000000000000..dd7d5836aabf8
--- /dev/null
+++ b/clang/test/Driver/arch-arm64e-arch-opt-defaults.c
@@ -0,0 +1,138 @@
+// REQUIRES: system-darwin && target={{.*}}-{{darwin|macos}}{{.*}}
+// Check the correct ptrauth features are enabled when simply using the -arch
+// option
+
+// RUN: %clang -arch arm64 -c %s -### 2>&1 | FileCheck %s --check-prefix NONE
+// NONE: "-cc1"
+
+// NONE-NOT: "-fptrauth-calls"
+// NONE-NOT: "-fptrauth-returns"
+// NONE-NOT: "-fptrauth-intrinsics"
+// NONE-NOT: "-fptrauth-indirect-gotos"
+// NONE-NOT: "-fptrauth-auth-traps"
+// NONE-NOT: "-fptrauth-vtable-pointer-address-discrimination"
+// NONE-NOT: "-fptrauth-vtable-pointer-type-discrimination"
+// NONE-NOT: "-fptrauth-objc-isa"
+// NONE-NOT: "-fptrauth-objc-class-ro"
+// NONE-NOT: "-fptrauth-objc-interface-sel"
+
+// Final catch all if any new flags are added
+// NONE-NOT: "-fptrauth"
+
+// RUN: %clang -arch arm64 -fptrauth-calls -c %s -### 2>&1 | FileCheck %s 
--check-prefix CALL
+// CALL: "-cc1"{{.*}} {{.*}} "-fptrauth-calls"
+
+// RUN: %clang -arch arm64 -fptrauth-intrinsics -c %s -### 2>&1 | FileCheck %s 
--check-prefix INTRIN
+// INTRIN: "-cc1"{{.*}} {{.*}} "-fptrauth-intrinsics"
+
+// RUN: %clang -arch arm64 -fptrauth-returns -c %s -### 2>&1 | FileCheck %s 
--check-prefix RETURN
+// RETURN: "-cc1"{{.*}} {{.*}} "-fptrauth-returns"
+
+// RUN: %clang -arch arm64 -fptrauth-indirect-gotos -c %s -### 2>&1 | 
FileCheck %s --check-prefix INDGOTO
+// INDGOTO: "-cc1"{{.*}} {{.*}} "-fptrauth-indirect-gotos"
+
+// RUN: %clang -arch arm64 -fptrauth-auth-traps -c %s -### 2>&1 | FileCheck %s 
--check-prefix TRAPS
+// TRAPS: "-cc1"{{.*}} {{.*}} "-fptrauth-auth-traps"
+
+
+// Check the `-arch arm64e` defaults.
+
+// RUN: %clang -arch arm64e -c %s -### 2>&1 | FileCheck %s --check-prefix 
DEFAULT
+// DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+// RUN: %clang -arch arm64e -fno-ptrauth-calls -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT-NOCALL
+// DEFAULT-NOCALL-NOT: "-fptrauth-calls"
+// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+
+// RUN: %clang -arch arm64e -fno-ptrauth-returns -c %s -### 2>&1 | FileCheck 
%s --check-prefix NORET
+
+// NORET-NOT: "-fptrauth-returns"
+// NORET: "-fptrauth-calls" "-fptrauth-intrinsics" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+// RUN: %clang -arch arm64e -fno-ptrauth-intrinsics -c %s -### 2>&1 | 
FileCheck %s --check-prefix NOINTRIN
+
+// NOINTRIN-NOT: "-fptrauth-intrinsics"
+// NOINTRIN: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+
+// RUN: %clang -arch arm64e -fno-ptrauth-auth-traps -c %s -### 2>&1 | 
FileCheck %s --check-prefix NOTRAP
+// NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+// Check that the default driver flags correctly propogate through to the 
compiler
+
+// RUN: %clang -arch arm64                   -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -arch arm64e                  -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+
+// A simple test case to test basic override logic
+// RUN: %clang -arch arm64e                  -DDARWIN_DEFAULT_PTRAUTH_OVERRIDE 
-fno-ptrauth-calls %s -fsyntax-only -Xclang -verify=darwin_ptrauth_override
+
+
+#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
+  _Static_assert(enabled == __has_##kind(feature),                             
\
+                "Expected to have the " #feature " " #kind " enabled");
+
+#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
+  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
+#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
+  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
+#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
+  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
+#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
+  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+// These flags directly reflect the state of ptrauth_calls, but exist
+// for backward compatibility reasons
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#else
+ASSERT_FEATURE_ENABLED(ptrauth_calls)
+ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+ASSERT_FEATURE_ENABLED(ptrauth_returns)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
+#endif
+
+#ifdef NO_DEFAULT_PTRAUTH
+ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+ASSERT_FEATURE_DISABLED(ptrauth_returns)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+// darwin_ptrauth_defaults-no-diagnostics
+// no_default_ptrauth-no-diagnostics
+// darwin_ptrauth_override-no-diagnostics
diff --git a/clang/test/Driver/arch-arm64e.c b/clang/test/Driver/arch-arm64e.c
index d678a038f1737..c85f22eac39af 100644
--- a/clang/test/Driver/arch-arm64e.c
+++ b/clang/test/Driver/arch-arm64e.c
@@ -61,3 +61,83 @@
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-auth-traps -c %s -### 
2>&1 | FileCheck %s --check-prefix NOTRAP
 // NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+
+// Check that the default driver flags correctly propogate through to the 
compiler
+
+// RUN: %clang -target arm64-apple-macosx      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64-apple-ios         -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
+// RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+// RUN: %clang -target arm64e-apple-ios        -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
+
+// A simple test case to test basic override logic
+// RUN: %clang -target arm64e-apple-macosx     
-DDARWIN_DEFAULT_PTRAUTH_OVERRIDE -fno-ptrauth-calls %s -fsyntax-only -Xclang 
-verify=darwin_ptrauth_override
+
+
+#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
+  _Static_assert(enabled == __has_##kind(feature),                             
\
+                "Expected to have the " #feature " " #kind " enabled");
+
+#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
+  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
+#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
+  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
+#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
+  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
+#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
+  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
+
+#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+// These flags directly reflect the state of ptrauth_calls, but exist
+// for backward compatibility reasons
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#else
+ASSERT_FEATURE_ENABLED(ptrauth_calls)
+ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+ASSERT_FEATURE_ENABLED(ptrauth_returns)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
+#endif
+
+#ifdef NO_DEFAULT_PTRAUTH
+ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
+ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_calls)
+ASSERT_FEATURE_DISABLED(ptrauth_returns)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
+ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
+ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
+ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
+ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
+#endif
+
+// darwin_ptrauth_defaults-no-diagnostics
+// no_default_ptrauth-no-diagnostics
+// darwin_ptrauth_override-no-diagnostics
diff --git a/clang/test/Driver/ptrauth-platform-defaults.c 
b/clang/test/Driver/ptrauth-platform-defaults.c
deleted file mode 100644
index c1d065a8808a0..0000000000000
--- a/clang/test/Driver/ptrauth-platform-defaults.c
+++ /dev/null
@@ -1,82 +0,0 @@
-// RUN: %clang -target arm64                   -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-apple-macosx      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-darwin            -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-apple-darwin      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-apple-ios-macabi  -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-// RUN: %clang -target arm64e-apple-ios        -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-// RUN: %clang -target arm64e-darwin           -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-// RUN: %clang -target arm64e-apple-darwin     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-// RUN: %clang -target arm64e-apple-ios-macabi -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-
-// A simple test case to test basic override logic
-// RUN: %clang -target arm64e-apple-macosx     
-DDARWIN_DEFAULT_PTRAUTH_OVERRIDE -fno-ptrauth-calls %s -fsyntax-only -Xclang 
-verify=darwin_ptrauth_override
-
-#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
-  _Static_assert(enabled == __has_##kind(feature),                             
\
-                "Expected to have the " #feature " " #kind " enabled");
-
-#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
-  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
-#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
-  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
-  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
-#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
-  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
-
-#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
-
-#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-// These flags directly reflect the state of ptrauth_calls, but exist
-// for backward compatibility reasons
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#else
-ASSERT_FEATURE_ENABLED(ptrauth_calls)
-ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
-#endif
-
-ASSERT_FEATURE_ENABLED(ptrauth_returns)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
-#endif
-
-#ifdef NO_DEFAULT_PTRAUTH
-ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-ASSERT_FEATURE_DISABLED(ptrauth_returns)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#endif
-
-// darwin_ptrauth_defaults-no-diagnostics
-// no_default_ptrauth-no-diagnostics
-// darwin_ptrauth_override-no-diagnostics

>From f464c22544e75443d8bf5a63fbbde4491621e4be Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Sun, 17 Aug 2025 15:22:17 -0700
Subject: [PATCH 4/8] Restore some tests that I removed in the various moving
 and editing test

---
 clang/test/Driver/arch-arm64e.c | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/clang/test/Driver/arch-arm64e.c b/clang/test/Driver/arch-arm64e.c
index c85f22eac39af..7d02690579281 100644
--- a/clang/test/Driver/arch-arm64e.c
+++ b/clang/test/Driver/arch-arm64e.c
@@ -36,31 +36,42 @@
 // Check the arm64e defaults.
 
 // RUN: %clang -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT
-// RUN: %clang -target arm64e-apple-macos -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT
-// DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// RUN: %clang -target arm64e-apple-macos -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULTMAC
+// RUN: %clang -mkernel -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck 
%s --check-prefix DEFAULT
+// RUN: %clang -fapple-kext -target arm64e-apple-ios -c %s -### 2>&1 | 
FileCheck %s --check-prefix DEFAULT
+// DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
+// DEFAULTMAC: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-m1"{{.*}}
 
 // RUN: %clang -target arm64e-apple-none-macho -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT-MACHO
-// DEFAULT-MACHO: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// DEFAULT-MACHO: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-calls -c %s -### 2>&1 | 
FileCheck %s --check-prefix DEFAULT-NOCALL
 // DEFAULT-NOCALL-NOT: "-fptrauth-calls"
-// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-returns -c %s -### 2>&1 | 
FileCheck %s --check-prefix NORET
 
 // NORET-NOT: "-fptrauth-returns"
-// NORET: "-fptrauth-calls" "-fptrauth-intrinsics" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// NORET: "-fptrauth-calls" "-fptrauth-intrinsics" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-intrinsics -c %s -### 
2>&1 | FileCheck %s --check-prefix NOINTRIN
 
 // NOINTRIN-NOT: "-fptrauth-intrinsics"
-// NOINTRIN: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// NOINTRIN: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"
 
 
 // RUN: %clang -target arm64e-apple-ios -fno-ptrauth-auth-traps -c %s -### 
2>&1 | FileCheck %s --check-prefix NOTRAP
-// NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
+// NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"
+
+
+// Check the CPU defaults and overrides.
+
+// RUN: %clang -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck %s 
--check-prefix APPLE-A12
+// RUN: %clang -target arm64e-apple-ios -mcpu=apple-a13 -c %s -### 2>&1 | 
FileCheck %s --check-prefix APPLE-A13
+// APPLE-A12: "-cc1"{{.*}} "-target-cpu" "apple-a12"
+// APPLE-A13: "-cc1"{{.*}} "-target-cpu" "apple-a13"
 
 // Check that the default driver flags correctly propogate through to the 
compiler
 

>From 9f57f5d9367095ca90d125859f50f49839488ae9 Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Sun, 17 Aug 2025 15:36:31 -0700
Subject: [PATCH 5/8] sigh formatting

---
 clang/lib/Driver/ToolChains/Darwin.cpp | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index 4abc2b1565ba9..4c0c5cdf4836a 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -3191,35 +3191,33 @@ void MachO::addClangTargetOptions(const 
llvm::opt::ArgList &DriverArgs,
   // ABI
   if (getTriple().isArm64e()) {
     auto EnsureDefaultPtrauthFlag = [&](OptSpecifier Pos, OptSpecifier Neg,
-                                        const char* param_name) {
+                                        const char *FlagText) {
       if (DriverArgs.hasArg(Pos, Neg))
         return;
-      CC1Args.push_back(param_name);
+      CC1Args.push_back(FlagText);
     };
 
     // Core platform ABI
     EnsureDefaultPtrauthFlag(options::OPT_fptrauth_calls,
-                             options::OPT_fno_ptrauth_calls,
-                            "-fptrauth-calls");
+                             options::OPT_fno_ptrauth_calls, 
"-fptrauth-calls");
     EnsureDefaultPtrauthFlag(options::OPT_fptrauth_returns,
                              options::OPT_fno_ptrauth_returns,
-                            "-fptrauth-returns");
+                             "-fptrauth-returns");
     EnsureDefaultPtrauthFlag(options::OPT_fptrauth_intrinsics,
                              options::OPT_fno_ptrauth_intrinsics,
-                            "-fptrauth-intrinsics");
+                             "-fptrauth-intrinsics");
     EnsureDefaultPtrauthFlag(options::OPT_fptrauth_indirect_gotos,
                              options::OPT_fno_ptrauth_indirect_gotos,
-                            "-fptrauth-indirect-gotos");
+                             "-fptrauth-indirect-gotos");
     EnsureDefaultPtrauthFlag(options::OPT_fptrauth_auth_traps,
                              options::OPT_fno_ptrauth_auth_traps,
-                            "-fptrauth-auth-traps");
+                             "-fptrauth-auth-traps");
 
     // C++ v-table ABI
     EnsureDefaultPtrauthFlag(
         options::OPT_fptrauth_vtable_pointer_address_discrimination,
         options::OPT_fno_ptrauth_vtable_pointer_address_discrimination,
-        "-fptrauth-vtable-pointer-address-discrimination"
-      );
+        "-fptrauth-vtable-pointer-address-discrimination");
     EnsureDefaultPtrauthFlag(
         options::OPT_fptrauth_vtable_pointer_type_discrimination,
         options::OPT_fno_ptrauth_vtable_pointer_type_discrimination,

>From c7e33538c5c4c12c1b5799b4f0055e12808d83ed Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Mon, 18 Aug 2025 12:28:14 -0700
Subject: [PATCH 6/8] Remove use of lambda from default argument logic

---
 clang/lib/Driver/ToolChains/Darwin.cpp | 70 ++++++++++++--------------
 1 file changed, 32 insertions(+), 38 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index 4c0c5cdf4836a..234683f2f4882 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -3190,49 +3190,43 @@ void MachO::addClangTargetOptions(const 
llvm::opt::ArgList &DriverArgs,
   // On arm64e, we enable all the features required for the Darwin userspace
   // ABI
   if (getTriple().isArm64e()) {
-    auto EnsureDefaultPtrauthFlag = [&](OptSpecifier Pos, OptSpecifier Neg,
-                                        const char *FlagText) {
-      if (DriverArgs.hasArg(Pos, Neg))
-        return;
-      CC1Args.push_back(FlagText);
-    };
-
     // Core platform ABI
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_calls,
-                             options::OPT_fno_ptrauth_calls, 
"-fptrauth-calls");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_returns,
-                             options::OPT_fno_ptrauth_returns,
-                             "-fptrauth-returns");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_intrinsics,
-                             options::OPT_fno_ptrauth_intrinsics,
-                             "-fptrauth-intrinsics");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_indirect_gotos,
-                             options::OPT_fno_ptrauth_indirect_gotos,
-                             "-fptrauth-indirect-gotos");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_auth_traps,
-                             options::OPT_fno_ptrauth_auth_traps,
-                             "-fptrauth-auth-traps");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_calls,
+                           options::OPT_fno_ptrauth_calls))
+      CC1Args.push_back("-fptrauth-calls");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_returns,
+                           options::OPT_fno_ptrauth_returns))
+      CC1Args.push_back("-fptrauth-returns");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_intrinsics,
+                           options::OPT_fno_ptrauth_intrinsics))
+      CC1Args.push_back("-fptrauth-intrinsics");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_indirect_gotos,
+                           options::OPT_fno_ptrauth_indirect_gotos))
+      CC1Args.push_back("-fptrauth-indirect-gotos");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_auth_traps,
+                           options::OPT_fno_ptrauth_auth_traps))
+      CC1Args.push_back("-fptrauth-auth-traps");
 
     // C++ v-table ABI
-    EnsureDefaultPtrauthFlag(
-        options::OPT_fptrauth_vtable_pointer_address_discrimination,
-        options::OPT_fno_ptrauth_vtable_pointer_address_discrimination,
-        "-fptrauth-vtable-pointer-address-discrimination");
-    EnsureDefaultPtrauthFlag(
-        options::OPT_fptrauth_vtable_pointer_type_discrimination,
-        options::OPT_fno_ptrauth_vtable_pointer_type_discrimination,
-        "-fptrauth-vtable-pointer-type-discrimination");
+    if (!DriverArgs.hasArg(
+            options::OPT_fptrauth_vtable_pointer_address_discrimination,
+            options::OPT_fno_ptrauth_vtable_pointer_address_discrimination))
+      CC1Args.push_back("-fptrauth-vtable-pointer-address-discrimination");
+    if (!DriverArgs.hasArg(
+            options::OPT_fptrauth_vtable_pointer_type_discrimination,
+            options::OPT_fno_ptrauth_vtable_pointer_type_discrimination))
+      CC1Args.push_back("-fptrauth-vtable-pointer-type-discrimination");
 
     // Objective-C ABI
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_isa,
-                             options::OPT_fno_ptrauth_objc_isa,
-                             "-fptrauth-objc-isa");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_class_ro,
-                             options::OPT_fno_ptrauth_objc_class_ro,
-                             "-fptrauth-objc-class-ro");
-    EnsureDefaultPtrauthFlag(options::OPT_fptrauth_objc_interface_sel,
-                             options::OPT_fno_ptrauth_objc_interface_sel,
-                             "-fptrauth-objc-interface-sel");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_objc_isa,
+                           options::OPT_fno_ptrauth_objc_isa))
+      CC1Args.push_back("-fptrauth-objc-isa");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_objc_class_ro,
+                           options::OPT_fno_ptrauth_objc_class_ro))
+      CC1Args.push_back("-fptrauth-objc-class-ro");
+    if (!DriverArgs.hasArg(options::OPT_fptrauth_objc_interface_sel,
+                           options::OPT_fno_ptrauth_objc_interface_sel))
+      CC1Args.push_back("-fptrauth-objc-interface-sel");
   }
 }
 

>From 6e869fa33d832f10faa2e28696843e0ba9bf17e7 Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Mon, 18 Aug 2025 23:49:20 -0700
Subject: [PATCH 7/8] remove the separate -arch test file

---
 .../Driver/arch-arm64e-arch-opt-defaults.c    | 138 ------------------
 clang/test/Driver/arch-arm64e.c               |  37 ++---
 2 files changed, 12 insertions(+), 163 deletions(-)
 delete mode 100644 clang/test/Driver/arch-arm64e-arch-opt-defaults.c

diff --git a/clang/test/Driver/arch-arm64e-arch-opt-defaults.c 
b/clang/test/Driver/arch-arm64e-arch-opt-defaults.c
deleted file mode 100644
index dd7d5836aabf8..0000000000000
--- a/clang/test/Driver/arch-arm64e-arch-opt-defaults.c
+++ /dev/null
@@ -1,138 +0,0 @@
-// REQUIRES: system-darwin && target={{.*}}-{{darwin|macos}}{{.*}}
-// Check the correct ptrauth features are enabled when simply using the -arch
-// option
-
-// RUN: %clang -arch arm64 -c %s -### 2>&1 | FileCheck %s --check-prefix NONE
-// NONE: "-cc1"
-
-// NONE-NOT: "-fptrauth-calls"
-// NONE-NOT: "-fptrauth-returns"
-// NONE-NOT: "-fptrauth-intrinsics"
-// NONE-NOT: "-fptrauth-indirect-gotos"
-// NONE-NOT: "-fptrauth-auth-traps"
-// NONE-NOT: "-fptrauth-vtable-pointer-address-discrimination"
-// NONE-NOT: "-fptrauth-vtable-pointer-type-discrimination"
-// NONE-NOT: "-fptrauth-objc-isa"
-// NONE-NOT: "-fptrauth-objc-class-ro"
-// NONE-NOT: "-fptrauth-objc-interface-sel"
-
-// Final catch all if any new flags are added
-// NONE-NOT: "-fptrauth"
-
-// RUN: %clang -arch arm64 -fptrauth-calls -c %s -### 2>&1 | FileCheck %s 
--check-prefix CALL
-// CALL: "-cc1"{{.*}} {{.*}} "-fptrauth-calls"
-
-// RUN: %clang -arch arm64 -fptrauth-intrinsics -c %s -### 2>&1 | FileCheck %s 
--check-prefix INTRIN
-// INTRIN: "-cc1"{{.*}} {{.*}} "-fptrauth-intrinsics"
-
-// RUN: %clang -arch arm64 -fptrauth-returns -c %s -### 2>&1 | FileCheck %s 
--check-prefix RETURN
-// RETURN: "-cc1"{{.*}} {{.*}} "-fptrauth-returns"
-
-// RUN: %clang -arch arm64 -fptrauth-indirect-gotos -c %s -### 2>&1 | 
FileCheck %s --check-prefix INDGOTO
-// INDGOTO: "-cc1"{{.*}} {{.*}} "-fptrauth-indirect-gotos"
-
-// RUN: %clang -arch arm64 -fptrauth-auth-traps -c %s -### 2>&1 | FileCheck %s 
--check-prefix TRAPS
-// TRAPS: "-cc1"{{.*}} {{.*}} "-fptrauth-auth-traps"
-
-
-// Check the `-arch arm64e` defaults.
-
-// RUN: %clang -arch arm64e -c %s -### 2>&1 | FileCheck %s --check-prefix 
DEFAULT
-// DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
-
-// RUN: %clang -arch arm64e -fno-ptrauth-calls -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT-NOCALL
-// DEFAULT-NOCALL-NOT: "-fptrauth-calls"
-// DEFAULT-NOCALL: "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
-
-
-// RUN: %clang -arch arm64e -fno-ptrauth-returns -c %s -### 2>&1 | FileCheck 
%s --check-prefix NORET
-
-// NORET-NOT: "-fptrauth-returns"
-// NORET: "-fptrauth-calls" "-fptrauth-intrinsics" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
-
-// RUN: %clang -arch arm64e -fno-ptrauth-intrinsics -c %s -### 2>&1 | 
FileCheck %s --check-prefix NOINTRIN
-
-// NOINTRIN-NOT: "-fptrauth-intrinsics"
-// NOINTRIN: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-indirect-gotos" 
"-fptrauth-auth-traps" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
-
-
-// RUN: %clang -arch arm64e -fno-ptrauth-auth-traps -c %s -### 2>&1 | 
FileCheck %s --check-prefix NOTRAP
-// NOTRAP: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
-
-// Check that the default driver flags correctly propogate through to the 
compiler
-
-// RUN: %clang -arch arm64                   -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -arch arm64e                  -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-
-// A simple test case to test basic override logic
-// RUN: %clang -arch arm64e                  -DDARWIN_DEFAULT_PTRAUTH_OVERRIDE 
-fno-ptrauth-calls %s -fsyntax-only -Xclang -verify=darwin_ptrauth_override
-
-
-#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
-  _Static_assert(enabled == __has_##kind(feature),                             
\
-                "Expected to have the " #feature " " #kind " enabled");
-
-#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
-  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
-#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
-  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
-  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
-#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
-  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
-
-#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
-
-#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-// These flags directly reflect the state of ptrauth_calls, but exist
-// for backward compatibility reasons
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#else
-ASSERT_FEATURE_ENABLED(ptrauth_calls)
-ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
-#endif
-
-ASSERT_FEATURE_ENABLED(ptrauth_returns)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
-#endif
-
-#ifdef NO_DEFAULT_PTRAUTH
-ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-ASSERT_FEATURE_DISABLED(ptrauth_returns)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#endif
-
-// darwin_ptrauth_defaults-no-diagnostics
-// no_default_ptrauth-no-diagnostics
-// darwin_ptrauth_override-no-diagnostics
diff --git a/clang/test/Driver/arch-arm64e.c b/clang/test/Driver/arch-arm64e.c
index 7d02690579281..43ad7c6b6462c 100644
--- a/clang/test/Driver/arch-arm64e.c
+++ b/clang/test/Driver/arch-arm64e.c
@@ -32,15 +32,16 @@
 // RUN: %clang -target arm64-apple-darwin -fptrauth-auth-traps -c %s -### 2>&1 
| FileCheck %s --check-prefix TRAPS
 // TRAPS: "-cc1"{{.*}} {{.*}} "-fptrauth-auth-traps"
 
-
 // Check the arm64e defaults.
 
 // RUN: %clang -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT
 // RUN: %clang -target arm64e-apple-macos -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULTMAC
+// RUN: %if system-darwin && target={{.*}}-{{darwin|macos}}{{.*}} %{ %clang 
-target arm64e-apple-macos -c %s -### 2>&1 | FileCheck %s --check-prefix 
DEFAULTARCH %}
 // RUN: %clang -mkernel -target arm64e-apple-ios -c %s -### 2>&1 | FileCheck 
%s --check-prefix DEFAULT
 // RUN: %clang -fapple-kext -target arm64e-apple-ios -c %s -### 2>&1 | 
FileCheck %s --check-prefix DEFAULT
 // DEFAULT: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
 // DEFAULTMAC: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-m1"{{.*}}
+// DEFAULTARCH: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel"
 
 // RUN: %clang -target arm64e-apple-none-macho -c %s -### 2>&1 | FileCheck %s 
--check-prefix DEFAULT-MACHO
 // DEFAULT-MACHO: "-fptrauth-calls" "-fptrauth-returns" "-fptrauth-intrinsics" 
"-fptrauth-indirect-gotos" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" "-fptrauth-objc-isa" 
"-fptrauth-objc-class-ro" "-fptrauth-objc-interface-sel" {{.*}}"-target-cpu" 
"apple-a12"{{.*}}
@@ -76,13 +77,7 @@
 // Check that the default driver flags correctly propogate through to the 
compiler
 
 // RUN: %clang -target arm64-apple-macosx      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64-apple-ios         -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
 // RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-// RUN: %clang -target arm64e-apple-ios        -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-
-// A simple test case to test basic override logic
-// RUN: %clang -target arm64e-apple-macosx     
-DDARWIN_DEFAULT_PTRAUTH_OVERRIDE -fno-ptrauth-calls %s -fsyntax-only -Xclang 
-verify=darwin_ptrauth_override
-
 
 #define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
   _Static_assert(enabled == __has_##kind(feature),                             
\
@@ -92,27 +87,17 @@
   ASSERT_MODE_AND_KIND(feature_name, 1, feature)
 #define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
   ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-#define ASSERT_EXTENSION_ENABLED(extension_name)                               
\
-  ASSERT_MODE_AND_KIND(extension_name, 1, extension)
-#define ASSERT_EXTENSION_DISABLED(extension_name)                              
\
-  ASSERT_MODE_AND_KIND(extension_name, 0, extension)
 
-#if defined(DARWIN_DEFAULT_PTRAUTH) || defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_ENABLED(ptrauth_qualifier)
+#if defined(DARWIN_DEFAULT_PTRAUTH)
+#ifndef __PTRAUTH__
+#error The __PTRAUTH__ macro should be defined
+#endif
 
-#if defined(DARWIN_DEFAULT_PTRAUTH_OVERRIDE)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-// These flags directly reflect the state of ptrauth_calls, but exist
-// for backward compatibility reasons
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#else
+ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
+ASSERT_FEATURE_ENABLED(ptrauth_qualifier)
 ASSERT_FEATURE_ENABLED(ptrauth_calls)
 ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
 ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
-#endif
-
 ASSERT_FEATURE_ENABLED(ptrauth_returns)
 ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
 ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
@@ -129,8 +114,11 @@ ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
 #endif
 
 #ifdef NO_DEFAULT_PTRAUTH
+#ifdef __PTRAUTH__
+#error The __PTRAUTH__ macro should not be defined
+#endif
 ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_EXTENSION_DISABLED(ptrauth_qualifier)
+ASSERT_FEATURE_DISABLED(ptrauth_qualifier)
 ASSERT_FEATURE_DISABLED(ptrauth_calls)
 ASSERT_FEATURE_DISABLED(ptrauth_returns)
 ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
@@ -151,4 +139,3 @@ ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
 
 // darwin_ptrauth_defaults-no-diagnostics
 // no_default_ptrauth-no-diagnostics
-// darwin_ptrauth_override-no-diagnostics

>From 82b588f140aae7733f573db578a2837dd05671e4 Mon Sep 17 00:00:00 2001
From: Oliver Hunt <oli...@apple.com>
Date: Tue, 19 Aug 2025 15:49:22 -0700
Subject: [PATCH 8/8] simplify the tests

---
 clang/test/Driver/arch-arm64e.c             | 66 ---------------------
 clang/test/Sema/ptrauth-platform-defaults.c | 38 ------------
 2 files changed, 104 deletions(-)
 delete mode 100644 clang/test/Sema/ptrauth-platform-defaults.c

diff --git a/clang/test/Driver/arch-arm64e.c b/clang/test/Driver/arch-arm64e.c
index 43ad7c6b6462c..39006d203989b 100644
--- a/clang/test/Driver/arch-arm64e.c
+++ b/clang/test/Driver/arch-arm64e.c
@@ -73,69 +73,3 @@
 // RUN: %clang -target arm64e-apple-ios -mcpu=apple-a13 -c %s -### 2>&1 | 
FileCheck %s --check-prefix APPLE-A13
 // APPLE-A12: "-cc1"{{.*}} "-target-cpu" "apple-a12"
 // APPLE-A13: "-cc1"{{.*}} "-target-cpu" "apple-a13"
-
-// Check that the default driver flags correctly propogate through to the 
compiler
-
-// RUN: %clang -target arm64-apple-macosx      -DNO_DEFAULT_PTRAUTH     %s 
-fsyntax-only -Xclang -verify=no_default_ptrauth
-// RUN: %clang -target arm64e-apple-macosx     -DDARWIN_DEFAULT_PTRAUTH %s 
-fsyntax-only -Xclang -verify=darwin_ptrauth_defaults
-
-#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
-  _Static_assert(enabled == __has_##kind(feature),                             
\
-                "Expected to have the " #feature " " #kind " enabled");
-
-#define ASSERT_FEATURE_ENABLED(feature_name)                                   
\
-  ASSERT_MODE_AND_KIND(feature_name, 1, feature)
-#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
-  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-
-#if defined(DARWIN_DEFAULT_PTRAUTH)
-#ifndef __PTRAUTH__
-#error The __PTRAUTH__ macro should be defined
-#endif
-
-ASSERT_FEATURE_ENABLED(ptrauth_intrinsics)
-ASSERT_FEATURE_ENABLED(ptrauth_qualifier)
-ASSERT_FEATURE_ENABLED(ptrauth_calls)
-ASSERT_FEATURE_ENABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_method_list_pointer)
-ASSERT_FEATURE_ENABLED(ptrauth_returns)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_ENABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_ENABLED(ptrauth_objc_signable_class)
-#endif
-
-#ifdef NO_DEFAULT_PTRAUTH
-#ifdef __PTRAUTH__
-#error The __PTRAUTH__ macro should not be defined
-#endif
-ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_FEATURE_DISABLED(ptrauth_qualifier)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-ASSERT_FEATURE_DISABLED(ptrauth_returns)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-#endif
-
-// darwin_ptrauth_defaults-no-diagnostics
-// no_default_ptrauth-no-diagnostics
diff --git a/clang/test/Sema/ptrauth-platform-defaults.c 
b/clang/test/Sema/ptrauth-platform-defaults.c
deleted file mode 100644
index 5a959feca01b8..0000000000000
--- a/clang/test/Sema/ptrauth-platform-defaults.c
+++ /dev/null
@@ -1,38 +0,0 @@
-// The -cc1 mode should not insert default ptrauth flags
-
-// RUN: %clang_cc1 -triple arm64                   %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-apple-macosx      %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-apple-ios         %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64-apple-ios-macabi  %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e                  %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-apple-macosx     %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-apple-ios        %s -fsyntax-only
-// RUN: %clang_cc1 -triple arm64e-apple-ios-macabi %s -fsyntax-only
-
-#define ASSERT_MODE_AND_KIND(feature, enabled, kind)                           
\
-  _Static_assert(enabled == __has_##kind(feature),                             
\
-                "Expected to have the " #feature " " #kind " enabled");
-
-#define ASSERT_FEATURE_DISABLED(feature_name)                                  
\
-  ASSERT_MODE_AND_KIND(feature_name, 0, feature)
-
-ASSERT_FEATURE_DISABLED(ptrauth_intrinsics)
-ASSERT_FEATURE_DISABLED(ptrauth_qualifier)
-ASSERT_FEATURE_DISABLED(ptrauth_calls)
-ASSERT_FEATURE_DISABLED(ptrauth_returns)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_vtable_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_type_info_vtable_pointer_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_member_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_signed_block_descriptors)
-ASSERT_FEATURE_DISABLED(ptrauth_function_pointer_type_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_indirect_gotos)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini)
-ASSERT_FEATURE_DISABLED(ptrauth_init_fini_address_discrimination)
-ASSERT_FEATURE_DISABLED(ptrauth_elf_got)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_isa)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_interface_sel)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_signable_class)
-ASSERT_FEATURE_DISABLED(ptrauth_objc_method_list_pointer)
-
-// expected-no-diagnostics

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

Reply via email to