Skip to content

Commit 3531a4f

Browse files
committed
[clang] NFC: Extend comdat validation in target multiversion function tests.
1 parent c54ad13 commit 3531a4f

File tree

1 file changed

+48
-3
lines changed

1 file changed

+48
-3
lines changed

clang/test/CodeGen/attr-target-mv.c

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,45 @@ inline __attribute__((target("default"))) void pr50025b(void) { must_be_emitted(
7676
inline __attribute__((target("default"))) void pr50025c(void) { pr50025b(); }
7777
void calls_pr50025c(void) { pr50025c(); }
7878

79+
// LINUX: $foo.resolver = comdat any
80+
// LINUX: $foo_inline.resolver = comdat any
81+
// LINUX: $foo_decls.resolver = comdat any
82+
// LINUX: $foo_multi.resolver = comdat any
83+
// LINUX: $fwd_decl_default.resolver = comdat any
84+
// LINUX: $fwd_decl_avx.resolver = comdat any
85+
// LINUX: $pr50025.resolver = comdat any
86+
// LINUX: $pr50025c.resolver = comdat any
87+
// LINUX: $pr50025b.resolver = comdat any
88+
89+
// WINDOWS: $foo.resolver = comdat any
90+
// WINDOWS: $foo_inline.resolver = comdat any
91+
// WINDOWS: $foo_decls.resolver = comdat any
92+
// WINDOWS: $foo_multi.resolver = comdat any
93+
// WINDOWS: $fwd_decl_default.resolver = comdat any
94+
// WINDOWS: $fwd_decl_avx.resolver = comdat any
95+
// WINDOWS: $foo_used = comdat any
96+
// WINDOWS: $foo_used2.avx_sse4.2 = comdat any
97+
// WINDOWS: $pr50025.resolver = comdat any
98+
// WINDOWS: $pr50025c.resolver = comdat any
99+
// WINDOWS: $foo_inline.sse4.2 = comdat any
100+
// WINDOWS: $foo_inline.arch_ivybridge = comdat any
101+
// WINDOWS: $foo_inline = comdat any
102+
// WINDOWS: $foo_decls = comdat any
103+
// WINDOWS: $foo_decls.sse4.2 = comdat any
104+
// WINDOWS: $foo_multi = comdat any
105+
// WINDOWS: $foo_multi.avx_sse4.2 = comdat any
106+
// WINDOWS: $foo_multi.fma4_sse4.2 = comdat any
107+
// WINDOWS: $foo_multi.arch_ivybridge_fma4_sse4.2 = comdat any
108+
// WINDOWS: $pr50025 = comdat any
109+
// WINDOWS: $pr50025c = comdat any
110+
// WINDOWS: $pr50025b.resolver = comdat any
111+
// WINDOWS: $pr50025b = comdat any
112+
113+
79114
// LINUX: @llvm.compiler.used = appending global [2 x i8*] [i8* bitcast (void (i32, double)* @foo_used to i8*), i8* bitcast (void (i32, double)* @foo_used2.avx_sse4.2 to i8*)], section "llvm.metadata"
80115
// WINDOWS: @llvm.used = appending global [2 x i8*] [i8* bitcast (void (i32, double)* @foo_used to i8*), i8* bitcast (void (i32, double)* @foo_used2.avx_sse4.2 to i8*)], section "llvm.metadata"
81116

117+
82118
// LINUX: @foo.ifunc = weak_odr ifunc i32 (), i32 ()* ()* @foo.resolver
83119
// LINUX: @foo_inline.ifunc = weak_odr ifunc i32 (), i32 ()* ()* @foo_inline.resolver
84120
// LINUX: @foo_decls.ifunc = weak_odr ifunc void (), void ()* ()* @foo_decls.resolver
@@ -325,11 +361,20 @@ void calls_pr50025c(void) { pr50025c(); }
325361
// LINUX: define linkonce void @pr50025()
326362
// LINUX: call void @must_be_emitted
327363
// LINUX: define internal void @must_be_emitted()
328-
// WINDOWS: define linkonce_odr dso_local void @pr50025()
364+
// WINDOWS: define linkonce_odr dso_local void @pr50025() #{{[0-9]*}} comdat
329365
// WINDOWS: call void @must_be_emitted
330366
// WINDOWS: define internal void @must_be_emitted()
331367

332368
// LINUX: define linkonce void @pr50025c()
369+
// LINUX: call void @pr50025b.ifunc()
370+
// WINDOWS: define linkonce_odr dso_local void @pr50025c() #{{[0-9]*}} comdat
371+
// WINDOWS: call void @pr50025b.resolver()
372+
373+
// LINUX: define weak_odr void ()* @pr50025b.resolver() comdat
374+
// LINUX: ret void ()* @pr50025b
333375
// LINUX: define linkonce void @pr50025b()
334-
// WINDOWS: define linkonce_odr dso_local void @pr50025c()
335-
// WINDOWS: define linkonce_odr dso_local void @pr50025b()
376+
// LINUX: call void @must_be_emitted()
377+
// WINDOWS: define weak_odr dso_local void @pr50025b.resolver() comdat
378+
// WINDOWS: musttail call void @pr50025b()
379+
// WINDOWS: define linkonce_odr dso_local void @pr50025b() #{{[0-9]*}} comdat
380+
// WINDOWS: call void @must_be_emitted()

0 commit comments

Comments
 (0)