Stream: git-wasmtime

Topic: wasmtime / Issue #1752 Cranelift: Infinite loop inside of...


view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 15:38):

bjorn3 opened Issue #1752:

test compile
set is_pic
target x86_64-pc-windows-gnu

function u0:43(i64, i64, i64) windows_fastcall {
; symbol _ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E
; instance Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] }
; sig ([&str]; c_variadic: false)->result::Result<num::NonZeroU128, num::ParseIntError>

; kind  loc.idx   param    pass mode                            ty
; ret   _0      = v0       ByRef { sized: true }                result::Result<num::NonZeroU128, num::ParseIntError>
; arg   _1      = v1, v2   ByValPair(types::I64, types::I64)    &str

; kind  local ty                              size align (abi,pref)
; stack _1    &str                             16b 8, 8              storage=ss0
; stack _2    option::Option<num::NonZeroU128>   16b 8, 8              storage=ss1
; ssa   _3    u128                             16b 8, 8
; stack _4    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss2
; stack _5    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss3
; stack _6    &str                             16b 8, 8              storage=ss4
; ssa   _7    isize                             8b 8, 8
; stack _8    num::ParseIntError                1b 1, 8              storage=ss5
; stack _9    num::ParseIntError                1b 1, 8              storage=ss6
; stack _10   num::ParseIntError                1b 1, 8              storage=ss7
; ssa   _11   u128                             16b 8, 8
; stack _12   num::ParseIntError                1b 1, 8              storage=ss8

    ss0 = explicit_slot 16
    ss1 = explicit_slot 16
    ss2 = explicit_slot 24
    ss3 = explicit_slot 24
    ss4 = explicit_slot 16
    ss5 = explicit_slot 1
    ss6 = explicit_slot 1
    ss7 = explicit_slot 1
    ss8 = explicit_slot 1
    gv0 = symbol colocated u1:22 ; trap at Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] } (_ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E): [corruption] Hit unreachable code.
    gv1 = symbol colocated u1:23 ; alloc32624
    sig0 = (i64, i64, i64, i32) windows_fastcall
    sig1 = (i64, i64) windows_fastcall
    sig2 = (i128) -> i128 windows_fastcall
    sig3 = (i64) -> i32 windows_fastcall
    sig4 = (i8) -> i8 windows_fastcall
    sig5 = (i64, i8) windows_fastcall
    sig6 = (i64, i128, i8) windows_fastcall
    fn0 = u0:283 sig0 ; Instance { def: Item(DefId(0:677 ~ core[5f76]::num[0]::from_str_radix[0])), substs: [u128] }
    fn1 = u0:284 sig1 ; Instance { def: Item(DefId(0:5800 ~ core[5f76]::result[0]::{{impl}}[36]::into_result[0])), substs: [u128, num::ParseIntError] }
    fn2 = colocated u0:17 sig2 ; Instance { def: Item(DefId(0:11011 ~ core[5f76]::num[0]::{{impl}}[52]::new[0])), substs: [] }
    fn3 = u0:263 sig3 ; puts
    fn4 = u0:268 sig4 ; Instance { def: Item(DefId(0:1846 ~ core[5f76]::convert[0]::{{impl}}[4]::from[0])), substs: [num::ParseIntError] }
    fn5 = u0:285 sig5 ; Instance { def: Item(DefId(0:5802 ~ core[5f76]::result[0]::{{impl}}[36]::from_error[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    fn6 = u0:286 sig6 ; Instance { def: Item(DefId(0:5279 ~ core[5f76]::option[0]::{{impl}}[0]::ok_or[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    jt0 = jump_table [block4, block6]

                                block0(v0: i64, v1: i64, v2: i64):
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str <- ByValPair(v1, v2): &str
                                    stack_store v1, ss0
                                    stack_store v2, ss0+8
                                    jump block1

                                block1:
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss4), offset: Offset32(0) }, None): &str <- ByRef(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str
@0004                               v3 = stack_load.i64 ss0
@0004                               v4 = stack_load.i64 ss0+8
@0004                               stack_store v3, ss4
@0004                               stack_store v4, ss4+8
;
; _5 = const num::from_str_radix::<u128>(move _6, const 10u32)
@0003                               v5 = iconst.i32 10
@0003                               v6 = stack_load.i64 ss4
@0003                               v7 = stack_load.i64 ss4+8
@0003                               v8 = stack_addr.i64 ss3
@0003                               call fn0(v8, v6, v7, v5)
@0003                               jump block2

                                block2:
@0003                               nop
;
; _4 = const <result::Result<u128, num::ParseIntError> as ops::r#try::Try>::into_result(move _5)
@0002                               v9 = stack_addr.i64 ss3
@0002                               v10 = stack_addr.i64 ss2
@0002                               call fn1(v10, v9)
@0002                               jump block3

                                block3:
@0002                               nop
@0007                               v11 = stack_load.i8 ss2
@0007                               v12 = uextend.i64 v11
; write_cvalue: Var(_7): isize <- ByVal(v12): isize
;
; switchInt(move _7)
@0007                               jump block12

                                block12:
@0007                               br_table.i64 v12, block5, jt0

                                block4:
@0007                               nop
; write_cvalue: Var(_11): u128 <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(8) }, None): u128
@0001                               v13 = stack_addr.i64 ss2
@0001                               v14 = load.i128 v13+8
; write_cvalue: Var(_3): u128 <- ByVal(v14): u128
;
; _2 = const num::NonZeroU128::new(move _3)
@0000                               v15 = call fn2(v14)
; write_cvalue: Addr(Pointer { base: Stack(ss1), offset: Offset32(0) }, None): option::Option<num::NonZeroU128> <- ByVal(v15): option::Option<num::NonZeroU128>
@0000                               v16 = stack_addr.i64 ss1
@0000                               store v15, v16
@0000                               jump block9

                                block5:
@0000                               nop
;
; unreachable
@0002                               v17 = global_value.i64 gv0
@0002                               v18 = call fn3(v17)
@0002                               trap unreachable

                                block6:
@0002                               nop
; write_cvalue: Addr(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(1) }, None): num::ParseIntError
@0007                               v19 = stack_load.i8 ss2+1
@0007                               stack_store v19, ss5
; write_cvalue: Addr(Pointer { base: Stack(ss7), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError
@000a                               v20 = stack_load.i8 ss5
@000a                               stack_store v20, ss7
;
; _9 = const <num::ParseIntError as convert::From<num::ParseIntError>>::from(move _10)
@000a                               v21 = stack_load.i8 ss7
@000a                               v22 = call fn4(v21)
; write_cvalue: Addr(Pointer { base: Stack(ss6), offset: Offset32(0) }, None): num::ParseIntError <- ByVal(v22): num::ParseIntError
@000a                               stack_store v22, ss6
@000a                               jump block7

                                block7:
@000a                               nop
;
; _0 = const <result::Result<num::NonZeroU128, num::ParseIntError> as ops::r#try::Try>::from_error(move _9)
@000a                               v23 = stack_load.i8 ss6
@000a                               call fn5(v0, v23)
@000a                               jump block8

                                block8:
@000a                               nop
;
; goto
@000e                               return

                                block9:
@000e                               nop
@000f                               v24 = global_value.i64 gv1
; write_cvalue: Addr(Pointer { base: Stack(ss8), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Addr(v24), offset: Offset32(0) }, None): num::ParseIntError
@000f                               v25 = load.i8 v24
@000f                               stack_store v25, ss8
;
; _0 = const option::Option::<num::NonZeroU128>::ok_or::<num::ParseIntError>(move _2, move _12)
@0010                               v26 = stack_addr.i64 ss1
@0010                               v27 = load.i128 v26
@0010                               v28 = stack_load.i8 ss8
@0010                               call fn6(v0, v27, v28)
@0010                               jump block10

                                block10:
@0010                               nop
;
; goto
@000e                               return

                                block11:
@000e                               nop
;
; return
@000e                               return
}

Backtrace (for release build)

#0  0x00005555557f5efb in cranelift_codegen::ir::layout::Layout::renumber_insts ()
#1  0x00005555557f5719 in cranelift_codegen::ir::layout::Layout::assign_inst_seq ()
#2  0x000055555578eb39 in <&mut cranelift_codegen::cursor::FuncCursor as cranelift_codegen::ir::builder::InstInserterBase>::insert_built_inst ()
#3  0x000055555579b468 in cranelift_codege
[message truncated]

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 15:38):

bjorn3 labeled Issue #1752:

test compile
set is_pic
target x86_64-pc-windows-gnu

function u0:43(i64, i64, i64) windows_fastcall {
; symbol _ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E
; instance Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] }
; sig ([&str]; c_variadic: false)->result::Result<num::NonZeroU128, num::ParseIntError>

; kind  loc.idx   param    pass mode                            ty
; ret   _0      = v0       ByRef { sized: true }                result::Result<num::NonZeroU128, num::ParseIntError>
; arg   _1      = v1, v2   ByValPair(types::I64, types::I64)    &str

; kind  local ty                              size align (abi,pref)
; stack _1    &str                             16b 8, 8              storage=ss0
; stack _2    option::Option<num::NonZeroU128>   16b 8, 8              storage=ss1
; ssa   _3    u128                             16b 8, 8
; stack _4    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss2
; stack _5    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss3
; stack _6    &str                             16b 8, 8              storage=ss4
; ssa   _7    isize                             8b 8, 8
; stack _8    num::ParseIntError                1b 1, 8              storage=ss5
; stack _9    num::ParseIntError                1b 1, 8              storage=ss6
; stack _10   num::ParseIntError                1b 1, 8              storage=ss7
; ssa   _11   u128                             16b 8, 8
; stack _12   num::ParseIntError                1b 1, 8              storage=ss8

    ss0 = explicit_slot 16
    ss1 = explicit_slot 16
    ss2 = explicit_slot 24
    ss3 = explicit_slot 24
    ss4 = explicit_slot 16
    ss5 = explicit_slot 1
    ss6 = explicit_slot 1
    ss7 = explicit_slot 1
    ss8 = explicit_slot 1
    gv0 = symbol colocated u1:22 ; trap at Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] } (_ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E): [corruption] Hit unreachable code.
    gv1 = symbol colocated u1:23 ; alloc32624
    sig0 = (i64, i64, i64, i32) windows_fastcall
    sig1 = (i64, i64) windows_fastcall
    sig2 = (i128) -> i128 windows_fastcall
    sig3 = (i64) -> i32 windows_fastcall
    sig4 = (i8) -> i8 windows_fastcall
    sig5 = (i64, i8) windows_fastcall
    sig6 = (i64, i128, i8) windows_fastcall
    fn0 = u0:283 sig0 ; Instance { def: Item(DefId(0:677 ~ core[5f76]::num[0]::from_str_radix[0])), substs: [u128] }
    fn1 = u0:284 sig1 ; Instance { def: Item(DefId(0:5800 ~ core[5f76]::result[0]::{{impl}}[36]::into_result[0])), substs: [u128, num::ParseIntError] }
    fn2 = colocated u0:17 sig2 ; Instance { def: Item(DefId(0:11011 ~ core[5f76]::num[0]::{{impl}}[52]::new[0])), substs: [] }
    fn3 = u0:263 sig3 ; puts
    fn4 = u0:268 sig4 ; Instance { def: Item(DefId(0:1846 ~ core[5f76]::convert[0]::{{impl}}[4]::from[0])), substs: [num::ParseIntError] }
    fn5 = u0:285 sig5 ; Instance { def: Item(DefId(0:5802 ~ core[5f76]::result[0]::{{impl}}[36]::from_error[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    fn6 = u0:286 sig6 ; Instance { def: Item(DefId(0:5279 ~ core[5f76]::option[0]::{{impl}}[0]::ok_or[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    jt0 = jump_table [block4, block6]

                                block0(v0: i64, v1: i64, v2: i64):
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str <- ByValPair(v1, v2): &str
                                    stack_store v1, ss0
                                    stack_store v2, ss0+8
                                    jump block1

                                block1:
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss4), offset: Offset32(0) }, None): &str <- ByRef(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str
@0004                               v3 = stack_load.i64 ss0
@0004                               v4 = stack_load.i64 ss0+8
@0004                               stack_store v3, ss4
@0004                               stack_store v4, ss4+8
;
; _5 = const num::from_str_radix::<u128>(move _6, const 10u32)
@0003                               v5 = iconst.i32 10
@0003                               v6 = stack_load.i64 ss4
@0003                               v7 = stack_load.i64 ss4+8
@0003                               v8 = stack_addr.i64 ss3
@0003                               call fn0(v8, v6, v7, v5)
@0003                               jump block2

                                block2:
@0003                               nop
;
; _4 = const <result::Result<u128, num::ParseIntError> as ops::r#try::Try>::into_result(move _5)
@0002                               v9 = stack_addr.i64 ss3
@0002                               v10 = stack_addr.i64 ss2
@0002                               call fn1(v10, v9)
@0002                               jump block3

                                block3:
@0002                               nop
@0007                               v11 = stack_load.i8 ss2
@0007                               v12 = uextend.i64 v11
; write_cvalue: Var(_7): isize <- ByVal(v12): isize
;
; switchInt(move _7)
@0007                               jump block12

                                block12:
@0007                               br_table.i64 v12, block5, jt0

                                block4:
@0007                               nop
; write_cvalue: Var(_11): u128 <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(8) }, None): u128
@0001                               v13 = stack_addr.i64 ss2
@0001                               v14 = load.i128 v13+8
; write_cvalue: Var(_3): u128 <- ByVal(v14): u128
;
; _2 = const num::NonZeroU128::new(move _3)
@0000                               v15 = call fn2(v14)
; write_cvalue: Addr(Pointer { base: Stack(ss1), offset: Offset32(0) }, None): option::Option<num::NonZeroU128> <- ByVal(v15): option::Option<num::NonZeroU128>
@0000                               v16 = stack_addr.i64 ss1
@0000                               store v15, v16
@0000                               jump block9

                                block5:
@0000                               nop
;
; unreachable
@0002                               v17 = global_value.i64 gv0
@0002                               v18 = call fn3(v17)
@0002                               trap unreachable

                                block6:
@0002                               nop
; write_cvalue: Addr(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(1) }, None): num::ParseIntError
@0007                               v19 = stack_load.i8 ss2+1
@0007                               stack_store v19, ss5
; write_cvalue: Addr(Pointer { base: Stack(ss7), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError
@000a                               v20 = stack_load.i8 ss5
@000a                               stack_store v20, ss7
;
; _9 = const <num::ParseIntError as convert::From<num::ParseIntError>>::from(move _10)
@000a                               v21 = stack_load.i8 ss7
@000a                               v22 = call fn4(v21)
; write_cvalue: Addr(Pointer { base: Stack(ss6), offset: Offset32(0) }, None): num::ParseIntError <- ByVal(v22): num::ParseIntError
@000a                               stack_store v22, ss6
@000a                               jump block7

                                block7:
@000a                               nop
;
; _0 = const <result::Result<num::NonZeroU128, num::ParseIntError> as ops::r#try::Try>::from_error(move _9)
@000a                               v23 = stack_load.i8 ss6
@000a                               call fn5(v0, v23)
@000a                               jump block8

                                block8:
@000a                               nop
;
; goto
@000e                               return

                                block9:
@000e                               nop
@000f                               v24 = global_value.i64 gv1
; write_cvalue: Addr(Pointer { base: Stack(ss8), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Addr(v24), offset: Offset32(0) }, None): num::ParseIntError
@000f                               v25 = load.i8 v24
@000f                               stack_store v25, ss8
;
; _0 = const option::Option::<num::NonZeroU128>::ok_or::<num::ParseIntError>(move _2, move _12)
@0010                               v26 = stack_addr.i64 ss1
@0010                               v27 = load.i128 v26
@0010                               v28 = stack_load.i8 ss8
@0010                               call fn6(v0, v27, v28)
@0010                               jump block10

                                block10:
@0010                               nop
;
; goto
@000e                               return

                                block11:
@000e                               nop
;
; return
@000e                               return
}

Backtrace (for release build)

#0  0x00005555557f5efb in cranelift_codegen::ir::layout::Layout::renumber_insts ()
#1  0x00005555557f5719 in cranelift_codegen::ir::layout::Layout::assign_inst_seq ()
#2  0x000055555578eb39 in <&mut cranelift_codegen::cursor::FuncCursor as cranelift_codegen::ir::builder::InstInserterBase>::insert_built_inst ()
#3  0x000055555579b468 in cranelift_codeg
[message truncated]

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 15:38):

bjorn3 labeled Issue #1752:

test compile
set is_pic
target x86_64-pc-windows-gnu

function u0:43(i64, i64, i64) windows_fastcall {
; symbol _ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E
; instance Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] }
; sig ([&str]; c_variadic: false)->result::Result<num::NonZeroU128, num::ParseIntError>

; kind  loc.idx   param    pass mode                            ty
; ret   _0      = v0       ByRef { sized: true }                result::Result<num::NonZeroU128, num::ParseIntError>
; arg   _1      = v1, v2   ByValPair(types::I64, types::I64)    &str

; kind  local ty                              size align (abi,pref)
; stack _1    &str                             16b 8, 8              storage=ss0
; stack _2    option::Option<num::NonZeroU128>   16b 8, 8              storage=ss1
; ssa   _3    u128                             16b 8, 8
; stack _4    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss2
; stack _5    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss3
; stack _6    &str                             16b 8, 8              storage=ss4
; ssa   _7    isize                             8b 8, 8
; stack _8    num::ParseIntError                1b 1, 8              storage=ss5
; stack _9    num::ParseIntError                1b 1, 8              storage=ss6
; stack _10   num::ParseIntError                1b 1, 8              storage=ss7
; ssa   _11   u128                             16b 8, 8
; stack _12   num::ParseIntError                1b 1, 8              storage=ss8

    ss0 = explicit_slot 16
    ss1 = explicit_slot 16
    ss2 = explicit_slot 24
    ss3 = explicit_slot 24
    ss4 = explicit_slot 16
    ss5 = explicit_slot 1
    ss6 = explicit_slot 1
    ss7 = explicit_slot 1
    ss8 = explicit_slot 1
    gv0 = symbol colocated u1:22 ; trap at Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] } (_ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E): [corruption] Hit unreachable code.
    gv1 = symbol colocated u1:23 ; alloc32624
    sig0 = (i64, i64, i64, i32) windows_fastcall
    sig1 = (i64, i64) windows_fastcall
    sig2 = (i128) -> i128 windows_fastcall
    sig3 = (i64) -> i32 windows_fastcall
    sig4 = (i8) -> i8 windows_fastcall
    sig5 = (i64, i8) windows_fastcall
    sig6 = (i64, i128, i8) windows_fastcall
    fn0 = u0:283 sig0 ; Instance { def: Item(DefId(0:677 ~ core[5f76]::num[0]::from_str_radix[0])), substs: [u128] }
    fn1 = u0:284 sig1 ; Instance { def: Item(DefId(0:5800 ~ core[5f76]::result[0]::{{impl}}[36]::into_result[0])), substs: [u128, num::ParseIntError] }
    fn2 = colocated u0:17 sig2 ; Instance { def: Item(DefId(0:11011 ~ core[5f76]::num[0]::{{impl}}[52]::new[0])), substs: [] }
    fn3 = u0:263 sig3 ; puts
    fn4 = u0:268 sig4 ; Instance { def: Item(DefId(0:1846 ~ core[5f76]::convert[0]::{{impl}}[4]::from[0])), substs: [num::ParseIntError] }
    fn5 = u0:285 sig5 ; Instance { def: Item(DefId(0:5802 ~ core[5f76]::result[0]::{{impl}}[36]::from_error[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    fn6 = u0:286 sig6 ; Instance { def: Item(DefId(0:5279 ~ core[5f76]::option[0]::{{impl}}[0]::ok_or[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    jt0 = jump_table [block4, block6]

                                block0(v0: i64, v1: i64, v2: i64):
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str <- ByValPair(v1, v2): &str
                                    stack_store v1, ss0
                                    stack_store v2, ss0+8
                                    jump block1

                                block1:
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss4), offset: Offset32(0) }, None): &str <- ByRef(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str
@0004                               v3 = stack_load.i64 ss0
@0004                               v4 = stack_load.i64 ss0+8
@0004                               stack_store v3, ss4
@0004                               stack_store v4, ss4+8
;
; _5 = const num::from_str_radix::<u128>(move _6, const 10u32)
@0003                               v5 = iconst.i32 10
@0003                               v6 = stack_load.i64 ss4
@0003                               v7 = stack_load.i64 ss4+8
@0003                               v8 = stack_addr.i64 ss3
@0003                               call fn0(v8, v6, v7, v5)
@0003                               jump block2

                                block2:
@0003                               nop
;
; _4 = const <result::Result<u128, num::ParseIntError> as ops::r#try::Try>::into_result(move _5)
@0002                               v9 = stack_addr.i64 ss3
@0002                               v10 = stack_addr.i64 ss2
@0002                               call fn1(v10, v9)
@0002                               jump block3

                                block3:
@0002                               nop
@0007                               v11 = stack_load.i8 ss2
@0007                               v12 = uextend.i64 v11
; write_cvalue: Var(_7): isize <- ByVal(v12): isize
;
; switchInt(move _7)
@0007                               jump block12

                                block12:
@0007                               br_table.i64 v12, block5, jt0

                                block4:
@0007                               nop
; write_cvalue: Var(_11): u128 <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(8) }, None): u128
@0001                               v13 = stack_addr.i64 ss2
@0001                               v14 = load.i128 v13+8
; write_cvalue: Var(_3): u128 <- ByVal(v14): u128
;
; _2 = const num::NonZeroU128::new(move _3)
@0000                               v15 = call fn2(v14)
; write_cvalue: Addr(Pointer { base: Stack(ss1), offset: Offset32(0) }, None): option::Option<num::NonZeroU128> <- ByVal(v15): option::Option<num::NonZeroU128>
@0000                               v16 = stack_addr.i64 ss1
@0000                               store v15, v16
@0000                               jump block9

                                block5:
@0000                               nop
;
; unreachable
@0002                               v17 = global_value.i64 gv0
@0002                               v18 = call fn3(v17)
@0002                               trap unreachable

                                block6:
@0002                               nop
; write_cvalue: Addr(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(1) }, None): num::ParseIntError
@0007                               v19 = stack_load.i8 ss2+1
@0007                               stack_store v19, ss5
; write_cvalue: Addr(Pointer { base: Stack(ss7), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError
@000a                               v20 = stack_load.i8 ss5
@000a                               stack_store v20, ss7
;
; _9 = const <num::ParseIntError as convert::From<num::ParseIntError>>::from(move _10)
@000a                               v21 = stack_load.i8 ss7
@000a                               v22 = call fn4(v21)
; write_cvalue: Addr(Pointer { base: Stack(ss6), offset: Offset32(0) }, None): num::ParseIntError <- ByVal(v22): num::ParseIntError
@000a                               stack_store v22, ss6
@000a                               jump block7

                                block7:
@000a                               nop
;
; _0 = const <result::Result<num::NonZeroU128, num::ParseIntError> as ops::r#try::Try>::from_error(move _9)
@000a                               v23 = stack_load.i8 ss6
@000a                               call fn5(v0, v23)
@000a                               jump block8

                                block8:
@000a                               nop
;
; goto
@000e                               return

                                block9:
@000e                               nop
@000f                               v24 = global_value.i64 gv1
; write_cvalue: Addr(Pointer { base: Stack(ss8), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Addr(v24), offset: Offset32(0) }, None): num::ParseIntError
@000f                               v25 = load.i8 v24
@000f                               stack_store v25, ss8
;
; _0 = const option::Option::<num::NonZeroU128>::ok_or::<num::ParseIntError>(move _2, move _12)
@0010                               v26 = stack_addr.i64 ss1
@0010                               v27 = load.i128 v26
@0010                               v28 = stack_load.i8 ss8
@0010                               call fn6(v0, v27, v28)
@0010                               jump block10

                                block10:
@0010                               nop
;
; goto
@000e                               return

                                block11:
@000e                               nop
;
; return
@000e                               return
}

Backtrace (for release build)

#0  0x00005555557f5efb in cranelift_codegen::ir::layout::Layout::renumber_insts ()
#1  0x00005555557f5719 in cranelift_codegen::ir::layout::Layout::assign_inst_seq ()
#2  0x000055555578eb39 in <&mut cranelift_codegen::cursor::FuncCursor as cranelift_codegen::ir::builder::InstInserterBase>::insert_built_inst ()
#3  0x000055555579b468 in cranelift_codeg
[message truncated]

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 15:39):

github-actions[bot] commented on Issue #1752:

Subscribe to Label Action

cc @bnjbvr

<details>
This issue or pull request has been labeled: "cranelift"

Thus the following users have been cc'd because of the following labels:

To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.

Learn more.
</details>

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 15:39):

bjorn3 commented on Issue #1752:

Found while trying to compile libcore for Windows using cg_clif.

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 19:27):

bjorn3 commented on Issue #1752:

This seems to have been caused by a problem in #1510 that is now fixed.

view this post on Zulip Wasmtime GitHub notifications bot (May 25 2020 at 19:29):

bjorn3 closed Issue #1752:

test compile
set is_pic
target x86_64-pc-windows-gnu

function u0:43(i64, i64, i64) windows_fastcall {
; symbol _ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E
; instance Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] }
; sig ([&str]; c_variadic: false)->result::Result<num::NonZeroU128, num::ParseIntError>

; kind  loc.idx   param    pass mode                            ty
; ret   _0      = v0       ByRef { sized: true }                result::Result<num::NonZeroU128, num::ParseIntError>
; arg   _1      = v1, v2   ByValPair(types::I64, types::I64)    &str

; kind  local ty                              size align (abi,pref)
; stack _1    &str                             16b 8, 8              storage=ss0
; stack _2    option::Option<num::NonZeroU128>   16b 8, 8              storage=ss1
; ssa   _3    u128                             16b 8, 8
; stack _4    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss2
; stack _5    result::Result<u128, num::ParseIntError>   24b 8, 8              storage=ss3
; stack _6    &str                             16b 8, 8              storage=ss4
; ssa   _7    isize                             8b 8, 8
; stack _8    num::ParseIntError                1b 1, 8              storage=ss5
; stack _9    num::ParseIntError                1b 1, 8              storage=ss6
; stack _10   num::ParseIntError                1b 1, 8              storage=ss7
; ssa   _11   u128                             16b 8, 8
; stack _12   num::ParseIntError                1b 1, 8              storage=ss8

    ss0 = explicit_slot 16
    ss1 = explicit_slot 16
    ss2 = explicit_slot 24
    ss3 = explicit_slot 24
    ss4 = explicit_slot 16
    ss5 = explicit_slot 1
    ss6 = explicit_slot 1
    ss7 = explicit_slot 1
    ss8 = explicit_slot 1
    gv0 = symbol colocated u1:22 ; trap at Instance { def: Item(DefId(0:11611 ~ core[5f76]::num[0]::{{impl}}[292]::from_str[0])), substs: [] } (_ZN61_$LT$core..num..NonZeroU128$u20$as$u20$core..str..FromStr$GT$8from_str17hc6d5a93f1d348c98E): [corruption] Hit unreachable code.
    gv1 = symbol colocated u1:23 ; alloc32624
    sig0 = (i64, i64, i64, i32) windows_fastcall
    sig1 = (i64, i64) windows_fastcall
    sig2 = (i128) -> i128 windows_fastcall
    sig3 = (i64) -> i32 windows_fastcall
    sig4 = (i8) -> i8 windows_fastcall
    sig5 = (i64, i8) windows_fastcall
    sig6 = (i64, i128, i8) windows_fastcall
    fn0 = u0:283 sig0 ; Instance { def: Item(DefId(0:677 ~ core[5f76]::num[0]::from_str_radix[0])), substs: [u128] }
    fn1 = u0:284 sig1 ; Instance { def: Item(DefId(0:5800 ~ core[5f76]::result[0]::{{impl}}[36]::into_result[0])), substs: [u128, num::ParseIntError] }
    fn2 = colocated u0:17 sig2 ; Instance { def: Item(DefId(0:11011 ~ core[5f76]::num[0]::{{impl}}[52]::new[0])), substs: [] }
    fn3 = u0:263 sig3 ; puts
    fn4 = u0:268 sig4 ; Instance { def: Item(DefId(0:1846 ~ core[5f76]::convert[0]::{{impl}}[4]::from[0])), substs: [num::ParseIntError] }
    fn5 = u0:285 sig5 ; Instance { def: Item(DefId(0:5802 ~ core[5f76]::result[0]::{{impl}}[36]::from_error[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    fn6 = u0:286 sig6 ; Instance { def: Item(DefId(0:5279 ~ core[5f76]::option[0]::{{impl}}[0]::ok_or[0])), substs: [num::NonZeroU128, num::ParseIntError] }
    jt0 = jump_table [block4, block6]

                                block0(v0: i64, v1: i64, v2: i64):
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str <- ByValPair(v1, v2): &str
                                    stack_store v1, ss0
                                    stack_store v2, ss0+8
                                    jump block1

                                block1:
                                    nop
; write_cvalue: Addr(Pointer { base: Stack(ss4), offset: Offset32(0) }, None): &str <- ByRef(Pointer { base: Stack(ss0), offset: Offset32(0) }, None): &str
@0004                               v3 = stack_load.i64 ss0
@0004                               v4 = stack_load.i64 ss0+8
@0004                               stack_store v3, ss4
@0004                               stack_store v4, ss4+8
;
; _5 = const num::from_str_radix::<u128>(move _6, const 10u32)
@0003                               v5 = iconst.i32 10
@0003                               v6 = stack_load.i64 ss4
@0003                               v7 = stack_load.i64 ss4+8
@0003                               v8 = stack_addr.i64 ss3
@0003                               call fn0(v8, v6, v7, v5)
@0003                               jump block2

                                block2:
@0003                               nop
;
; _4 = const <result::Result<u128, num::ParseIntError> as ops::r#try::Try>::into_result(move _5)
@0002                               v9 = stack_addr.i64 ss3
@0002                               v10 = stack_addr.i64 ss2
@0002                               call fn1(v10, v9)
@0002                               jump block3

                                block3:
@0002                               nop
@0007                               v11 = stack_load.i8 ss2
@0007                               v12 = uextend.i64 v11
; write_cvalue: Var(_7): isize <- ByVal(v12): isize
;
; switchInt(move _7)
@0007                               jump block12

                                block12:
@0007                               br_table.i64 v12, block5, jt0

                                block4:
@0007                               nop
; write_cvalue: Var(_11): u128 <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(8) }, None): u128
@0001                               v13 = stack_addr.i64 ss2
@0001                               v14 = load.i128 v13+8
; write_cvalue: Var(_3): u128 <- ByVal(v14): u128
;
; _2 = const num::NonZeroU128::new(move _3)
@0000                               v15 = call fn2(v14)
; write_cvalue: Addr(Pointer { base: Stack(ss1), offset: Offset32(0) }, None): option::Option<num::NonZeroU128> <- ByVal(v15): option::Option<num::NonZeroU128>
@0000                               v16 = stack_addr.i64 ss1
@0000                               store v15, v16
@0000                               jump block9

                                block5:
@0000                               nop
;
; unreachable
@0002                               v17 = global_value.i64 gv0
@0002                               v18 = call fn3(v17)
@0002                               trap unreachable

                                block6:
@0002                               nop
; write_cvalue: Addr(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss2), offset: Offset32(1) }, None): num::ParseIntError
@0007                               v19 = stack_load.i8 ss2+1
@0007                               stack_store v19, ss5
; write_cvalue: Addr(Pointer { base: Stack(ss7), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Stack(ss5), offset: Offset32(0) }, None): num::ParseIntError
@000a                               v20 = stack_load.i8 ss5
@000a                               stack_store v20, ss7
;
; _9 = const <num::ParseIntError as convert::From<num::ParseIntError>>::from(move _10)
@000a                               v21 = stack_load.i8 ss7
@000a                               v22 = call fn4(v21)
; write_cvalue: Addr(Pointer { base: Stack(ss6), offset: Offset32(0) }, None): num::ParseIntError <- ByVal(v22): num::ParseIntError
@000a                               stack_store v22, ss6
@000a                               jump block7

                                block7:
@000a                               nop
;
; _0 = const <result::Result<num::NonZeroU128, num::ParseIntError> as ops::r#try::Try>::from_error(move _9)
@000a                               v23 = stack_load.i8 ss6
@000a                               call fn5(v0, v23)
@000a                               jump block8

                                block8:
@000a                               nop
;
; goto
@000e                               return

                                block9:
@000e                               nop
@000f                               v24 = global_value.i64 gv1
; write_cvalue: Addr(Pointer { base: Stack(ss8), offset: Offset32(0) }, None): num::ParseIntError <- ByRef(Pointer { base: Addr(v24), offset: Offset32(0) }, None): num::ParseIntError
@000f                               v25 = load.i8 v24
@000f                               stack_store v25, ss8
;
; _0 = const option::Option::<num::NonZeroU128>::ok_or::<num::ParseIntError>(move _2, move _12)
@0010                               v26 = stack_addr.i64 ss1
@0010                               v27 = load.i128 v26
@0010                               v28 = stack_load.i8 ss8
@0010                               call fn6(v0, v27, v28)
@0010                               jump block10

                                block10:
@0010                               nop
;
; goto
@000e                               return

                                block11:
@000e                               nop
;
; return
@000e                               return
}

Backtrace (for release build)

#0  0x00005555557f5efb in cranelift_codegen::ir::layout::Layout::renumber_insts ()
#1  0x00005555557f5719 in cranelift_codegen::ir::layout::Layout::assign_inst_seq ()
#2  0x000055555578eb39 in <&mut cranelift_codegen::cursor::FuncCursor as cranelift_codegen::ir::builder::InstInserterBase>::insert_built_inst ()
#3  0x000055555579b468 in cranelift_codege
[message truncated]

Last updated: Oct 23 2024 at 20:03 UTC