blob: bfee49ca34bda2d59c1a524034e2edb81b2624c1 [file] [log] [blame]
Erich Keane9e94c182018-11-01 15:11:41 +00001// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LINUX
2// RUN: %clang_cc1 -triple x86_64-windows-pc -fms-compatibility -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WINDOWS
3
4struct S {
5 __attribute__((cpu_specific(atom)))
6 void Func(){}
7 __attribute__((cpu_dispatch(ivybridge,atom)))
8 void Func(){}
9};
10
11void foo() {
12 S s;
13 s.Func();
14}
15
16// LINUX: define void (%struct.S*)* @_ZN1S4FuncEv.resolver
17// LINUX: ret void (%struct.S*)* @_ZN1S4FuncEv.S
18// LINUX: ret void (%struct.S*)* @_ZN1S4FuncEv.O
Erich Keane248ed072018-12-07 15:31:23 +000019// LINUX: declare void @_ZN1S4FuncEv.S
20// LINUX: define linkonce_odr void @_ZN1S4FuncEv.O
Erich Keane9e94c182018-11-01 15:11:41 +000021
22// WINDOWS: define dso_local void @"?Func@S@@QEAAXXZ"(%struct.S*)
23// WINDOWS: musttail call void @"?Func@S@@QEAAXXZ.S"(%struct.S* %0)
24// WINDOWS: musttail call void @"?Func@S@@QEAAXXZ.O"(%struct.S* %0)
Erich Keane248ed072018-12-07 15:31:23 +000025// WINDOWS: declare dso_local void @"?Func@S@@QEAAXXZ.S"
26// WINDOWS: define linkonce_odr dso_local void @"?Func@S@@QEAAXXZ.O"