72 lines · c
1// REQUIRES: aarch64-registered-target2// RUN: %clang -target aarch64-none-linux -march=armv9.3-a -o %t -c %s 2>&1 | FileCheck --allow-empty %s3 4// Successor targets should be ableto call predecessor target functions.5__attribute__((__always_inline__,target("v8a")))6int armv80(int i) {7 return i + 42;8}9 10__attribute__((__always_inline__,target("v8.1a")))11int armv81(int i) {12 return armv80(i);13}14 15__attribute__((__always_inline__,target("v8.2a")))16int armv82(int i) {17 return armv81(i);18}19 20__attribute__((__always_inline__,target("v8.3a")))21int armv83(int i) {22 return armv82(i);23}24 25__attribute__((__always_inline__,target("v8.4a")))26int armv84(int i) {27 return armv83(i);28}29 30__attribute__((__always_inline__,target("v8.5a")))31int armv85(int i) {32 return armv84(i);33}34 35__attribute__((__always_inline__,target("v8.6a")))36int armv86(int i) {37 return armv85(i);38}39 40__attribute__((__always_inline__,target("v8.7a")))41int armv87(int i) {42 return armv86(i);43}44 45__attribute__((__always_inline__,target("v8.8a")))46int armv88(int i) {47 return armv87(i);48}49 50__attribute__((__always_inline__,target("v9a")))51int armv9(int i) {52 return armv85(i);53}54 55__attribute__((__always_inline__,target("v9.1a")))56int armv91(int i) {57 return armv9(i);58}59 60__attribute__((__always_inline__,target("v9.2a")))61int armv92(int i) {62 return armv91(i);63}64 65__attribute__((__always_inline__,target("v9.3a")))66int armv93(int i) {67 return armv92(i);68}69 70// CHECK-NOT: always_inline function {{.*}} requires target feature {{.*}}, but would be inlined into function {{.*}} that is compiled without support for {{.*}}71// CHECK-NOT: {{.*}} is not a recognized feature for this target72