diff options
Diffstat (limited to 'test/MC/COFF/global_ctors_dtors.ll')
-rw-r--r-- | test/MC/COFF/global_ctors_dtors.ll | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/test/MC/COFF/global_ctors_dtors.ll b/test/MC/COFF/global_ctors_dtors.ll index 046e93a..ca17f24 100644 --- a/test/MC/COFF/global_ctors_dtors.ll +++ b/test/MC/COFF/global_ctors_dtors.ll @@ -11,9 +11,10 @@ %ini = type { i32, void()*, i8* } -@llvm.global_ctors = appending global [2 x %ini ] [ +@llvm.global_ctors = appending global [3 x %ini ] [ %ini { i32 65535, void ()* @a_global_ctor, i8* null }, - %ini { i32 65535, void ()* @b_global_ctor, i8* bitcast (i32* @b to i8*) } + %ini { i32 65535, void ()* @b_global_ctor, i8* bitcast (i32* @b to i8*) }, + %ini { i32 65535, void ()* @c_global_ctor, i8* bitcast (i32* @c to i8*) } ] @llvm.global_dtors = appending global [1 x %ini ] [%ini { i32 65535, void ()* @a_global_dtor, i8* null }] @@ -26,11 +27,18 @@ define void @a_global_ctor() nounwind { @b = global i32 zeroinitializer +@c = available_externally dllimport global i32 zeroinitializer + define void @b_global_ctor() nounwind { store i32 42, i32* @b ret void } +define void @c_global_ctor() nounwind { + store i32 42, i32* @c + ret void +} + define void @a_global_dtor() nounwind { %1 = call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str2, i32 0, i32 0)) ret void @@ -43,13 +51,15 @@ define i32 @main() nounwind { ; WIN32: .section .CRT$XCU,"rd" ; WIN32: a_global_ctor -; WIN32: .section .CRT$XCU,"rd",associative .bss,{{_?}}b +; WIN32: .section .CRT$XCU,"rd",associative,{{_?}}b ; WIN32: b_global_ctor +; WIN32-NOT: c_global_ctor ; WIN32: .section .CRT$XTX,"rd" ; WIN32: a_global_dtor ; MINGW32: .section .ctors,"wd" ; MINGW32: a_global_ctor -; MINGW32: .section .ctors,"wd",associative .bss,{{_?}}b +; MINGW32: .section .ctors,"wd",associative,{{_?}}b ; MINGW32: b_global_ctor +; MINGW32-NOT: c_global_ctor ; MINGW32: .section .dtors,"wd" ; MINGW32: a_global_dtor |