blob: 26bdc58ebb7f755b1eff1c49bc456cef625563c3 [file] [log] [blame]
Aaron Ballman94287722012-02-23 22:46:33 +00001// RUN: %clang_cc1 -triple i386-pc-win32 %s -emit-llvm -fms-compatibility -o - | FileCheck %s
2
Aaron Ballmanfc685ac2012-06-19 22:09:27 +00003struct __declspec(align(16)) S {
4 char x;
5};
6union { struct S s; } u;
7
8// CHECK: @u = {{.*}}zeroinitializer, align 16
9
10
Bill Wendlingc3af6792013-02-26 23:08:48 +000011// CHECK: define void @t3() [[NAKED:#[0-9]+]] {
Aaron Ballman94287722012-02-23 22:46:33 +000012__declspec(naked) void t3() {}
13
Bill Wendlingc3af6792013-02-26 23:08:48 +000014// CHECK: define void @t22() [[NUW:#[0-9]+]]
Aaron Ballman94287722012-02-23 22:46:33 +000015void __declspec(nothrow) t22();
16void t22() {}
17
Bill Wendlingc3af6792013-02-26 23:08:48 +000018// CHECK: define void @t2() [[NI:#[0-9]+]] {
Aaron Ballman94287722012-02-23 22:46:33 +000019__declspec(noinline) void t2() {}
20
Bill Wendling4e1125f2013-02-22 09:10:20 +000021// CHECK: call void @f20_t() [[NR:#[0-9]+]]
Aaron Ballman94287722012-02-23 22:46:33 +000022__declspec(noreturn) void f20_t(void);
23void f20(void) { f20_t(); }
Bill Wendlingf7a9da02013-02-20 07:22:19 +000024
Bill Wendlingc3af6792013-02-26 23:08:48 +000025// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
26// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
27// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
Bill Wendling5bb033b2013-02-22 21:12:51 +000028// CHECK: attributes [[NR]] = { noreturn }