36 lines · c
1// RUN: %clang_cc1 -triple arm64-apple-ios \2// RUN: -fptrauth-calls -fptrauth-intrinsics -emit-llvm -fblocks \3// RUN: %s -debug-info-kind=limited -o - | FileCheck %s4// RUN: %clang_cc1 -triple aarch64-linux-gnu \5// RUN: -fptrauth-calls -fptrauth-intrinsics -emit-llvm -fblocks \6// RUN: %s -debug-info-kind=limited -o - | FileCheck %s7 8// Constant initializers for data pointers.9extern int external_int;10 11int *__ptrauth(1, 0, 1234) g1 = &external_int;12// CHECK: !DIDerivedType(tag: DW_TAG_LLVM_ptrauth_type,13// CHECK-SAME: ptrAuthKey: 1,14// CHECK-SAME: ptrAuthIsAddressDiscriminated: false,15// CHECK-SAME: ptrAuthExtraDiscriminator: 1234,16// CHECK-SAME: ptrAuthIsaPointer: false,17// CHECK-SAME: ptrAuthAuthenticatesNullValues: false)18 19struct A {20 int value;21};22struct A *createA(void);23 24void f() {25 __block struct A *__ptrauth(0, 1, 1236) ptr = createA();26 ^{27 (void)ptr->value;28 }();29}30// CHECK: !DIDerivedType(tag: DW_TAG_LLVM_ptrauth_type,31// CHECK-NOT: ptrAuthKey32// CHECK-SAME: ptrAuthIsAddressDiscriminated: true,33// CHECK-SAME: ptrAuthExtraDiscriminator: 1236,34// CHECK-SAME: ptrAuthIsaPointer: false,35// CHECK-SAME: ptrAuthAuthenticatesNullValues: false)36