blob: 226be57b94fd82fffa24ff2fe47432742a1e6e21 [file] [edit]
// RUN: %clang_cc1 -triple arm64-apple-ios -coverage-data-file=/dev/null -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,OFF
// RUN: %clang_cc1 -triple arm64e-apple-ios -coverage-data-file=/dev/null -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,OFF
// RUN: %clang_cc1 -triple aarch64-linux-gnu -coverage-data-file=/dev/null -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,OFF
// RUN: %clang_cc1 -triple arm64-apple-ios -coverage-data-file=/dev/null -fptrauth-returns -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,RETS \
// RUN: --implicit-check-not=ptrauth-auth-traps --implicit-check-not=ptrauth-indirect-gotos --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple aarch64-linux-gnu -coverage-data-file=/dev/null -fptrauth-returns -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,RETS \
// RUN: --implicit-check-not=ptrauth-auth-traps --implicit-check-not=ptrauth-indirect-gotos --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple arm64-apple-ios -coverage-data-file=/dev/null -fptrauth-auth-traps -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,TRAPS \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-indirect-gotos --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple aarch64-linux-gnu -coverage-data-file=/dev/null -fptrauth-auth-traps -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,TRAPS \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-indirect-gotos --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple arm64-apple-ios -coverage-data-file=/dev/null -fptrauth-indirect-gotos -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,GOTOS \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-auth-traps --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple aarch64-linux-gnu -coverage-data-file=/dev/null -fptrauth-indirect-gotos -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,GOTOS \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-auth-traps --implicit-check-not=aarch64-jump-table-hardening
// RUN: %clang_cc1 -triple arm64e-apple-ios -coverage-data-file=/dev/null -faarch64-jump-table-hardening -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,JMPTBL \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-auth-traps --implicit-check-not=ptrauth-indirect-gotos
// RUN: %clang_cc1 -triple aarch64-linux-gnu -coverage-data-file=/dev/null -faarch64-jump-table-hardening -emit-llvm %s -o - | FileCheck %s --check-prefixes=ALL,JMPTBL \
// RUN: --implicit-check-not=ptrauth-returns --implicit-check-not=ptrauth-auth-traps --implicit-check-not=ptrauth-indirect-gotos
// ALL: define internal void @__llvm_gcov_writeout() unnamed_addr #[[#T:]] {
// ALL: define internal void @__llvm_gcov_reset() unnamed_addr #[[#T]] {
// ALL: define internal void @__llvm_gcov_init() unnamed_addr #[[#T]] {
// RETS: attributes #[[#T]] =
// RETS-SAME: "ptrauth-returns"
// RETS: !llvm.module.flags = !{{{.*}}!3{{.*}}}
// RETS: !3 = !{i32 7, !"ptrauth-returns", i32 1}
// TRAPS: attributes #[[#T]] =
// TRAPS-SAME: "ptrauth-auth-traps"
// TRAPS: !llvm.module.flags = !{{{.*}}!3{{.*}}}
// TRAPS: !3 = !{i32 7, !"ptrauth-auth-traps", i32 1}
// GOTOS: attributes #[[#T]] =
// GOTOS-SAME: "ptrauth-indirect-gotos"
// GOTOS: !llvm.module.flags = !{{{.*}}!3{{.*}}}
// GOTOS: !3 = !{i32 7, !"ptrauth-indirect-gotos", i32 1}
// JMPTBL: attributes #[[#T]] =
// JMPTBL-SAME: "aarch64-jump-table-hardening"
// JMPTBL: !llvm.module.flags = !{{{.*}}!3{{.*}}}
// JMPTBL: !3 = !{i32 7, !"aarch64-jump-table-hardening", i32 1}
// OFF-NOT: attributes {{.*}} "ptrauth-
// OFF-NOT: !"ptrauth-returns"
// OFF-NOT: !"ptrauth-auth-traps"
// OFF-NOT: !"ptrauth-indirect-gotos"
// OFF-NOT: !"aarch64-jump-table-hardening"