| // 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(); | |
| } |