@@ -3333,15 +3333,15 @@ fn user_init_called_when_declared_as_external() {
33333333 target datalayout = "[filtered]"
33343334 target triple = "[filtered]"
33353335
3336- %prog = type { %foo }
3337- %foo = type { i32*, i16, i16 }
33383336 %__vtable_foo = type { void (%foo*)*, void (%foo*)* }
3337+ %foo = type { i32*, i16, i16 }
3338+ %prog = type { %foo }
33393339
3340+ @__vtable_foo_instance = external global %__vtable_foo
33403341 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }]
33413342 @prog_instance = global %prog zeroinitializer
33423343 @__foo__init = external unnamed_addr constant %foo
33433344 @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer
3344- @__vtable_foo_instance = global %__vtable_foo zeroinitializer
33453345
33463346 declare void @foo(%foo*)
33473347
@@ -3354,26 +3354,18 @@ fn user_init_called_when_declared_as_external() {
33543354 ret void
33553355 }
33563356
3357- define void @__init___vtable_foo(%__vtable_foo* %0) {
3358- entry:
3359- %self = alloca %__vtable_foo*, align 8
3360- store %__vtable_foo* %0, %__vtable_foo** %self, align 8
3361- %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8
3362- %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0
3363- store void (%foo*)* @foo, void (%foo*)** %__body, align 8
3364- %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8
3365- %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1
3366- store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8
3367- ret void
3368- }
3369-
33703357 define void @__init_prog(%prog* %0) {
33713358 entry:
33723359 %self = alloca %prog*, align 8
33733360 store %prog* %0, %prog** %self, align 8
3361+ %deref = load %prog*, %prog** %self, align 8
3362+ %f = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0
3363+ call void @__init_foo(%foo* %f)
33743364 ret void
33753365 }
33763366
3367+ declare void @__init_foo(%foo*)
3368+
33773369 define void @__user_init_prog(%prog* %0) {
33783370 entry:
33793371 %self = alloca %prog*, align 8
@@ -3384,28 +3376,12 @@ fn user_init_called_when_declared_as_external() {
33843376 ret void
33853377 }
33863378
3387- define void @__user_init_foo(%foo* %0) {
3388- entry:
3389- %self = alloca %foo*, align 8
3390- store %foo* %0, %foo** %self, align 8
3391- %deref = load %foo*, %foo** %self, align 8
3392- call void @foo__FB_INIT(%foo* %deref)
3393- ret void
3394- }
3395-
3396- define void @__user_init___vtable_foo(%__vtable_foo* %0) {
3397- entry:
3398- %self = alloca %__vtable_foo*, align 8
3399- store %__vtable_foo* %0, %__vtable_foo** %self, align 8
3400- ret void
3401- }
3379+ declare void @__user_init_foo(%foo*)
34023380
34033381 define void @__init___Test() {
34043382 entry:
34053383 call void @__init_prog(%prog* @prog_instance)
3406- call void @__init___vtable_foo(%__vtable_foo* @__vtable_foo_instance)
34073384 call void @__user_init_prog(%prog* @prog_instance)
3408- call void @__user_init___vtable_foo(%__vtable_foo* @__vtable_foo_instance)
34093385 ret void
34103386 }
34113387 "# ) ;
0 commit comments