forked from GPUOpen-Drivers/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merged master:f330d9f163f6 into amd-gfx:e6f7d959be13
Local branch amd-gfx e6f7d95 Merged master:7af12015ad44 into amd-gfx:93bf630eaf4b Remote branch master f330d9f [PPC] [AIX] Implement calling convention IR for C99 complex types on AIX
- Loading branch information
Showing
41 changed files
with
738 additions
and
427 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,81 +1,63 @@ | ||
// REQUIRES: aarch64-registered-target | ||
// RUN: %clang_cc1 -triple aarch64-unknown-unknown-eabi -emit-llvm -target-cpu generic -target-feature +v8.5a %s -o - \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=NO-OVERRIDE | ||
// RUN: %clang_cc1 -triple aarch64-unknown-unknown-eabi -emit-llvm -target-cpu generic -target-feature +v8.5a %s -o - \ | ||
// RUN: -msign-return-address=non-leaf -msign-return-address-key=a_key -mbranch-target-enforce \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=OVERRIDE | ||
|
||
void missing() {} | ||
// NO-OVERRIDE: define void @missing() #[[#NONE:]] | ||
// OVERRIDE: define void @missing() #[[#STD:]] | ||
// RUN: | FileCheck %s --check-prefix=CHECK | ||
|
||
__attribute__ ((target("branch-protection=none"))) | ||
void none() {} | ||
// NO-OVERRIDE: define void @none() #[[#NONE]] | ||
// OVERRIDE: define void @none() #[[#NONE:]] | ||
// CHECK: define void @none() #[[#NONE:]] | ||
|
||
__attribute__ ((target("branch-protection=standard"))) | ||
void std() {} | ||
// NO-OVERRIDE: define void @std() #[[#STD:]] | ||
// OVERRIDE: define void @std() #[[#STD]] | ||
// CHECK: define void @std() #[[#STD:]] | ||
|
||
__attribute__ ((target("branch-protection=bti"))) | ||
void btionly() {} | ||
// NO-OVERRIDE: define void @btionly() #[[#BTI:]] | ||
// OVERRIDE: define void @btionly() #[[#BTI:]] | ||
// CHECK: define void @btionly() #[[#BTI:]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret"))) | ||
void paconly() {} | ||
// NO-OVERRIDE: define void @paconly() #[[#PAC:]] | ||
// OVERRIDE: define void @paconly() #[[#PAC:]] | ||
// CHECK: define void @paconly() #[[#PAC:]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+bti"))) | ||
void pacbti0() {} | ||
// NO-OVERRIDE: define void @pacbti0() #[[#PACBTI:]] | ||
// OVERRIDE: define void @pacbti0() #[[#PACBTI:]] | ||
// CHECK: define void @pacbti0() #[[#PACBTI:]] | ||
|
||
__attribute__ ((target("branch-protection=bti+pac-ret"))) | ||
void pacbti1() {} | ||
// NO-OVERRIDE: define void @pacbti1() #[[#PACBTI]] | ||
// OVERRIDE: define void @pacbti1() #[[#PACBTI]] | ||
// CHECK: define void @pacbti1() #[[#PACBTI]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+leaf"))) | ||
void leaf() {} | ||
// NO-OVERRIDE: define void @leaf() #[[#PACLEAF:]] | ||
// OVERRIDE: define void @leaf() #[[#PACLEAF:]] | ||
// CHECK: define void @leaf() #[[#PACLEAF:]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+b-key"))) | ||
void bkey() {} | ||
// NO-OVERRIDE: define void @bkey() #[[#PACBKEY:]] | ||
// OVERRIDE: define void @bkey() #[[#PACBKEY:]] | ||
// CHECK: define void @bkey() #[[#PACBKEY:]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+b-key+leaf"))) | ||
void bkeyleaf0() {} | ||
// NO-OVERRIDE: define void @bkeyleaf0() #[[#PACBKEYLEAF:]] | ||
// OVERRIDE: define void @bkeyleaf0() #[[#PACBKEYLEAF:]] | ||
// CHECK: define void @bkeyleaf0() #[[#PACBKEYLEAF:]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+leaf+b-key"))) | ||
void bkeyleaf1() {} | ||
// NO-OVERRIDE: define void @bkeyleaf1() #[[#PACBKEYLEAF]] | ||
// OVERRIDE: define void @bkeyleaf1() #[[#PACBKEYLEAF]] | ||
// CHECK: define void @bkeyleaf1() #[[#PACBKEYLEAF]] | ||
|
||
__attribute__ ((target("branch-protection=pac-ret+leaf+bti"))) | ||
void btileaf() {} | ||
// NO-OVERRIDE: define void @btileaf() #[[#BTIPACLEAF:]] | ||
// OVERRIDE: define void @btileaf() #[[#BTIPACLEAF:]] | ||
// CHECK: define void @btileaf() #[[#BTIPACLEAF:]] | ||
|
||
// CHECK-DAG: attributes #[[#NONE]] | ||
// CHECK-DAG: attributes #[[#NONE]] = { {{.*}} "branch-target-enforcement"="false" {{.*}} "sign-return-address"="none" | ||
|
||
// CHECK-DAG: attributes #[[#STD]] = { {{.*}} "branch-target-enforcement" {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" | ||
// CHECK-DAG: attributes #[[#STD]] = { {{.*}} "branch-target-enforcement"="true" {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" | ||
|
||
// CHECK-DAG: attributes #[[#BTI]] = { {{.*}}"branch-target-enforcement" | ||
// CHECK-DAG: attributes #[[#BTI]] = { {{.*}} "branch-target-enforcement"="true" {{.*}} "sign-return-address"="none" | ||
|
||
// CHECK-DAG: attributes #[[#PAC]] = { {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" | ||
// CHECK-DAG: attributes #[[#PAC]] = { {{.*}} "branch-target-enforcement"="false" {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" | ||
|
||
// CHECK-DAG: attributes #[[#PACLEAF]] = { {{.*}} "sign-return-address"="all" "sign-return-address-key"="a_key" | ||
// CHECK-DAG: attributes #[[#PACLEAF]] = { {{.*}} "branch-target-enforcement"="false" {{.*}}"sign-return-address"="all" "sign-return-address-key"="a_key" | ||
|
||
// CHECK-DAG: attributes #[[#PACBKEY]] = { {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" | ||
// CHECK-DAG: attributes #[[#PACBKEY]] = { {{.*}}"branch-target-enforcement"="false" {{.*}} "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" | ||
|
||
// CHECK-DAG: attributes #[[#PACBKEYLEAF]] = { {{.*}} "sign-return-address"="all" "sign-return-address-key"="b_key" | ||
// CHECK-DAG: attributes #[[#PACBKEYLEAF]] = { {{.*}} "branch-target-enforcement"="false" {{.*}}"sign-return-address"="all" "sign-return-address-key"="b_key" | ||
|
||
// CHECK-DAG: attributes #[[#BTIPACLEAF]] = { {{.*}}"branch-target-enforcement" {{.*}} "sign-return-address"="all" "sign-return-address-key"="a_key" | ||
// CHECK-DAG: attributes #[[#BTIPACLEAF]] = { {{.*}}"branch-target-enforcement"="true" {{.*}} "sign-return-address"="all" "sign-return-address-key"="a_key" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,46 @@ | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -msign-return-address=none %s | FileCheck %s --check-prefix=CHECK --check-prefix=NONE | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.2-a -S -emit-llvm -o - -msign-return-address=all %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL --check-prefix=A-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -msign-return-address=all %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL --check-prefix=A-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -msign-return-address=non-leaf %s | FileCheck %s --check-prefix=CHECK --check-prefix=PARTIAL --check-prefix=A-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -msign-return-address=all %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL --check-prefix=A-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.4-a -S -emit-llvm -o - -msign-return-address=all %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL --check-prefix=A-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -mbranch-protection=pac-ret+b-key %s | FileCheck %s --check-prefix=CHECK --check-prefix=PARTIAL --check-prefix=B-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -mbranch-protection=pac-ret+b-key+leaf %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL --check-prefix=B-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.3-a -S -emit-llvm -o - -mbranch-protection=bti %s | FileCheck %s --check-prefix=CHECK --check-prefix=BTE | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -msign-return-address=none %s | FileCheck %s --check-prefix=CHECK --check-prefix=NONE | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -msign-return-address=all %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -msign-return-address=non-leaf %s | FileCheck %s --check-prefix=CHECK --check-prefix=PART | ||
|
||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -mbranch-protection=none %s | FileCheck %s --check-prefix=CHECK --check-prefix=NONE | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -mbranch-protection=pac-ret+leaf %s | FileCheck %s --check-prefix=CHECK --check-prefix=ALL | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -mbranch-protection=pac-ret+b-key %s | FileCheck %s --check-prefix=CHECK --check-prefix=B-KEY | ||
// RUN: %clang -target aarch64-arm-none-eabi -S -emit-llvm -o - -mbranch-protection=bti %s | FileCheck %s --check-prefix=CHECK --check-prefix=BTE | ||
|
||
// REQUIRES: aarch64-registered-target | ||
|
||
// CHECK: @foo() #[[ATTR:[0-9]*]] | ||
// | ||
// NONE-NOT: "sign-return-address"={{.*}} | ||
// Check there are no branch protection function attributes | ||
|
||
// CHECK-LABEL: @foo() #[[#ATTR:]] | ||
|
||
// CHECK-NOT: attributes #[[#ATTR]] = { {{.*}} "sign-return-address" | ||
// CHECK-NOT: attributes #[[#ATTR]] = { {{.*}} "sign-return-address-key" | ||
// CHECK-NOT: attributes #[[#ATTR]] = { {{.*}} "branch-target-enforcement" | ||
|
||
// PARTIAL: "sign-return-address"="non-leaf" | ||
// Check module attributes | ||
|
||
// ALL: "sign-return-address"="all" | ||
// NONE: !{i32 1, !"branch-target-enforcement", i32 0} | ||
// ALL: !{i32 1, !"branch-target-enforcement", i32 0} | ||
// PART: !{i32 1, !"branch-target-enforcement", i32 0} | ||
// BTE: !{i32 1, !"branch-target-enforcement", i32 1} | ||
// B-KEY: !{i32 1, !"branch-target-enforcement", i32 0} | ||
|
||
// BTE: "branch-target-enforcement" | ||
// NONE: !{i32 1, !"sign-return-address", i32 0} | ||
// ALL: !{i32 1, !"sign-return-address", i32 1} | ||
// PART: !{i32 1, !"sign-return-address", i32 1} | ||
// BTE: !{i32 1, !"sign-return-address", i32 0} | ||
// B-KEY: !{i32 1, !"sign-return-address", i32 1} | ||
|
||
// A-KEY: "sign-return-address-key"="a_key" | ||
// NONE: !{i32 1, !"sign-return-address-all", i32 0} | ||
// ALL: !{i32 1, !"sign-return-address-all", i32 1} | ||
// PART: !{i32 1, !"sign-return-address-all", i32 0} | ||
// BTE: !{i32 1, !"sign-return-address-all", i32 0} | ||
// B-KEY: !{i32 1, !"sign-return-address-all", i32 0} | ||
|
||
// B-KEY: "sign-return-address-key"="b_key" | ||
// NONE: !{i32 1, !"sign-return-address-with-bkey", i32 0} | ||
// ALL: !{i32 1, !"sign-return-address-with-bkey", i32 0} | ||
// PART: !{i32 1, !"sign-return-address-with-bkey", i32 0} | ||
// BTE: !{i32 1, !"sign-return-address-with-bkey", i32 0} | ||
// B-KEY: !{i32 1, !"sign-return-address-with-bkey", i32 1} | ||
|
||
void foo() {} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.