blob: 7a4427d6ffa42ac6433f196be661df782719cc8d [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
Erich Keanef1005012018-11-01 15:11:43 +000016
17// LINUX: define linkonce_odr void @_ZN1S4FuncEv.O
Erich Keane9e94c182018-11-01 15:11:41 +000018// LINUX: define void (%struct.S*)* @_ZN1S4FuncEv.resolver
19// LINUX: ret void (%struct.S*)* @_ZN1S4FuncEv.S
20// LINUX: ret void (%struct.S*)* @_ZN1S4FuncEv.O
21
Erich Keanef1005012018-11-01 15:11:43 +000022// WINDOWS: define linkonce_odr dso_local void @"?Func@S@@QEAAXXZ.O"
Erich Keane9e94c182018-11-01 15:11:41 +000023// WINDOWS: define dso_local void @"?Func@S@@QEAAXXZ"(%struct.S*)
24// WINDOWS: musttail call void @"?Func@S@@QEAAXXZ.S"(%struct.S* %0)
25// WINDOWS: musttail call void @"?Func@S@@QEAAXXZ.O"(%struct.S* %0)