@@ -76,9 +76,45 @@ inline __attribute__((target("default"))) void pr50025b(void) { must_be_emitted(
76
76
inline __attribute__((target ("default" ))) void pr50025c (void ) { pr50025b (); }
77
77
void calls_pr50025c (void ) { pr50025c (); }
78
78
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
+
79
114
// 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"
80
115
// 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"
81
116
117
+
82
118
// LINUX: @foo.ifunc = weak_odr ifunc i32 (), i32 ()* ()* @foo.resolver
83
119
// LINUX: @foo_inline.ifunc = weak_odr ifunc i32 (), i32 ()* ()* @foo_inline.resolver
84
120
// LINUX: @foo_decls.ifunc = weak_odr ifunc void (), void ()* ()* @foo_decls.resolver
@@ -325,11 +361,20 @@ void calls_pr50025c(void) { pr50025c(); }
325
361
// LINUX: define linkonce void @pr50025()
326
362
// LINUX: call void @must_be_emitted
327
363
// 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
329
365
// WINDOWS: call void @must_be_emitted
330
366
// WINDOWS: define internal void @must_be_emitted()
331
367
332
368
// 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
333
375
// 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