| // REQUIRES: aarch64-registered-target |
| // RUN: %clang_cc1 -triple arm64ec-pc-windows -fms-extensions -emit-llvm -o - %s -verify | FileCheck %s |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define dso_local i32 @func() #0 { |
| int __attribute__((hybrid_patchable)) func(void) { return 1; } |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define dso_local i32 @func2() #0 { |
| int __declspec(hybrid_patchable) func2(void) { return 2; } |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define dso_local i32 @func3() #0 { |
| int __declspec(hybrid_patchable) func3(void); |
| int func3(void) { return 3; } |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define dso_local i32 @func4() #0 { |
| [[clang::hybrid_patchable]] int func4(void); |
| int func4(void) { return 3; } |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define internal void @static_func() #0 { |
| // expected-warning@+1 {{'hybrid_patchable' is ignored on functions without external linkage}} |
| static void __declspec(hybrid_patchable) static_func(void) {} |
| |
| // CHECK: ; Function Attrs: hybrid_patchable noinline nounwind optnone |
| // CHECK-NEXT: define linkonce_odr dso_local i32 @func5() #0 comdat { |
| int inline __declspec(hybrid_patchable) func5(void) { return 4; } |
| |
| void caller(void) { |
| static_func(); |
| func5(); |
| } |