Path: blob/main/tests/disas/component-model/inlining-bug.wat
3072 views
;;! target = "x86_64"
;;! test = "optimize"
;;! filter = "wasm[2]--function"
;;! flags = "-C inlining=y"
(component
(core module $A
(func (export "f0") (result i32) (i32.const 0))
(func (export "f1") (result i32) (call $not-inlined) (i32.const 1))
(func $not-inlined )
)
(core module $B
(import "a" "f0" (func $f0 (result i32)))
(import "a" "f1" (func $f1 (result i32)))
(func (export "f2") (result i32)
(call $f1)
)
)
(core module $C
(import "b" "f2" (func $f2 (result i32)))
(func (export "f3") (result i32)
(call $f2)
)
)
(core instance $a (instantiate $A))
(core instance $b (instantiate $B (with "a" (instance $a))))
(core instance $c (instantiate $C (with "b" (instance $b))))
(func (export "f") (result u32)
(canon lift (core func $c "f3"))
)
)
;; function u2:0(i64 vmctx, i64) -> i32 tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+16
;; gv3 = vmctx
;; gv4 = vmctx
;; gv5 = load.i64 notrap aligned readonly gv4+8
;; gv6 = load.i64 notrap aligned gv5+16
;; gv7 = vmctx
;; gv8 = vmctx
;; gv9 = load.i64 notrap aligned readonly gv8+8
;; gv10 = load.i64 notrap aligned gv9+16
;; sig0 = (i64 vmctx, i64) -> i32 tail
;; sig1 = (i64 vmctx, i64) -> i32 tail
;; sig2 = (i64 vmctx, i64) tail
;; fn0 = colocated u1:0 sig0
;; fn1 = colocated u0:1 sig1
;; fn2 = colocated u0:2 sig2
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64):
;; @00d4 jump block2
;;
;; block2:
;; jump block4
;;
;; block4:
;; @00d4 v4 = load.i64 notrap aligned readonly can_move v0+64
;; v10 = load.i64 notrap aligned readonly can_move v4+88
;; call fn2(v10, v10)
;; jump block5
;;
;; block5:
;; jump block6
;;
;; block6:
;; jump block3
;;
;; block3:
;; jump block7
;;
;; block7:
;; @00d6 jump block1
;;
;; block1:
;; v11 = iconst.i32 1
;; @00d6 return v11 ; v11 = 1
;; }