| // RUN: %clang_cc1 -triple aarch64-linux -fexperimental-pointer-field-protection-abi -fexperimental-pointer-field-protection-tagged -emit-llvm -o - %s | FileCheck %s |
| |
| struct S { |
| void *p; |
| private: |
| int private_data; |
| }; |
| |
| // CHECK-LABEL: null_init |
| void null_init() { |
| // Check that null initialization was correctly applied to the pointer field. |
| // CHECK: %s = alloca %struct.S, align 8 |
| // CHECK: call void @llvm.memset.p0.i64(ptr align 8 %s, i8 0, i64 16, i1 false) |
| // CHECK: %0 = getelementptr inbounds i8, ptr %s, i64 0 |
| // CHECK: %1 = call ptr @llvm.protected.field.ptr.p0(ptr %0, i64 29832, i1 true) [ "deactivation-symbol"(ptr @__pfp_ds__ZTS1S.p) ] |
| // CHECK: store ptr null, ptr %1, align 8 |
| S s{}; |
| } |
| |