Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexanderkyte/f69b1d096682007f14e13c57968cda64 to your computer and use it in GitHub Desktop.
Save alexanderkyte/f69b1d096682007f14e13c57968cda64 to your computer and use it in GitHub Desktop.
Mono Ahead of Time compiler - compiling assembly /Users/akyte/Projects/SpanCrash/SpanCrash/bin/Debug/SpanCrash.exe
AOTID 71A837F8-2414-E5AB-71ED-B6C8B8693C53
converting llvm method int SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>)
created temp 0 (R16) of type System.Int32
creating vars
created temp 1 (R17) of type System.Span<System.Byte>
return : arg R16 <-
arg [0]: arg R17 <-
creating locals
local [0]: created temp 2 (R18) of type System.Byte
local [1]: created temp 3 (R19) of type System.Int32
locals done
method to IR SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>)
converting (in B2: stack: 0) IL_0000: nop
converting (in B2: stack: 0) IL_0001: ldc.i4.s 10
converting (in B2: stack: 1) IL_0003: stloc.0
converting (in B2: stack: 0) IL_0004: ldarg.0
converting (in B2: stack: 1) IL_0005: ldloc.0
converting (in B2: stack: 2) IL_0006: call 0x2b000001
INLINE START 0x7ff476e020d0 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.MemoryExtensions:IndexOf<byte> (System.Span`1<byte>,byte)
created temp 4 (R24) of type System.Int32
method to IR System.MemoryExtensions:IndexOf<byte> (System.Span`1<byte>,byte)
created temp 5 (R25) of type System.Span<System.Byte>
created temp 6 (R26) of type System.Byte
converting (in B8: stack: 0) IL_0000: ldtoken 0x1b00000d
converting (in B8: stack: 1) IL_000a: ldtoken 0x0100004d
converting (in B8: stack: 2) IL_0014: call 0x0a000057
converting (in B8: stack: 1) IL_0019: brfalse.s IL_003b
converting (in B11: stack: 0) IL_001b: ldarg.0
converting (in B11: stack: 1) IL_001c: call 0x2b00000b
converting (in B11: stack: 1) IL_0021: call 0x2b00000c
INLINE START 0x7ff47781df10 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
created temp 7 (R33) of type System.IntPtr
method to IR System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
created temp 8 (R34) of type System.IntPtr
converting (in B17: stack: 0) IL_0000: ldarg.0
converting (in B17: stack: 1) IL_0001: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
converting (in B11: stack: 1) IL_0026: ldarga.s 1
converting (in B11: stack: 2) IL_0028: call 0x2b00000c
INLINE START 0x7ff47781df10 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
created temp 9 (R38) of type System.IntPtr
method to IR System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
created temp 10 (R39) of type System.IntPtr
converting (in B22: stack: 0) IL_0000: ldarg.0
converting (in B22: stack: 1) IL_0001: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, byte> (byte&)
converting (in B11: stack: 2) IL_002d: ldind.u1
converting (in B11: stack: 2) IL_002e: ldarga.s 0
converting (in B11: stack: 3) IL_0030: call 0x0a00007b
INLINE START 0x7ff47781ee90 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
created temp 11 (R44) of type System.Int32
method to IR System.Span`1<byte>:get_Length ()
created temp 12 (R45) of type System.IntPtr
converting (in B27: stack: 0) IL_0000: ldarg.0
converting (in B27: stack: 1) IL_0001: ldfld 0x0a0000c4
converting (in B27: stack: 1) IL_0006: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
converting (in B11: stack: 3) IL_0035: call 0x06000112
converting (in B11: stack: 1) IL_003a: ret
converting (in B10: stack: 0) IL_003b: ldtoken 0x1b00000d
converting (in B10: stack: 1) IL_0045: ldtoken 0x0100005d
converting (in B10: stack: 2) IL_004f: call 0x0a000057
converting (in B10: stack: 1) IL_0054: brfalse.s IL_0076
converting (in B13: stack: 0) IL_0056: ldarg.0
converting (in B13: stack: 1) IL_0057: call 0x2b00000b
converting (in B13: stack: 1) IL_005c: call 0x2b00000d
INLINE START 0x7ff47781f970 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
created temp 13 (R59) of type System.IntPtr
method to IR System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
created temp 14 (R60) of type System.IntPtr
converting (in B32: stack: 0) IL_0000: ldarg.0
converting (in B32: stack: 1) IL_0001: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
converting (in B13: stack: 1) IL_0061: ldarga.s 1
converting (in B13: stack: 2) IL_0063: call 0x2b00000d
INLINE START 0x7ff47781f970 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
created temp 15 (R64) of type System.IntPtr
method to IR System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
created temp 16 (R65) of type System.IntPtr
converting (in B37: stack: 0) IL_0000: ldarg.0
converting (in B37: stack: 1) IL_0001: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Runtime.CompilerServices.Unsafe:As<byte, char> (byte&)
converting (in B13: stack: 2) IL_0068: ldind.u2
converting (in B13: stack: 2) IL_0069: ldarga.s 0
converting (in B13: stack: 3) IL_006b: call 0x0a00007b
INLINE START 0x7ff47781ee90 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
created temp 17 (R70) of type System.Int32
method to IR System.Span`1<byte>:get_Length ()
created temp 18 (R71) of type System.IntPtr
converting (in B42: stack: 0) IL_0000: ldarg.0
converting (in B42: stack: 1) IL_0001: ldfld 0x0a0000c4
converting (in B42: stack: 1) IL_0006: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
converting (in B13: stack: 3) IL_0070: call 0x06000121
converting (in B13: stack: 1) IL_0075: ret
converting (in B12: stack: 0) IL_0076: ldarg.0
converting (in B12: stack: 1) IL_0077: call 0x2b00000b
converting (in B12: stack: 1) IL_007c: ldarg.1
converting (in B12: stack: 2) IL_007d: ldarga.s 0
converting (in B12: stack: 3) IL_007f: call 0x0a00007b
INLINE START 0x7ff47781ee90 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
created temp 19 (R84) of type System.Int32
method to IR System.Span`1<byte>:get_Length ()
created temp 20 (R85) of type System.IntPtr
converting (in B47: stack: 0) IL_0000: ldarg.0
converting (in B47: stack: 1) IL_0001: ldfld 0x0a0000c4
converting (in B47: stack: 1) IL_0006: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.Span`1<byte>:get_Length ()
converting (in B12: stack: 3) IL_0084: call 0x2b00000e
converting (in B12: stack: 1) IL_0089: ret
INLINE END SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) -> System.MemoryExtensions:IndexOf<byte> (System.Span`1<byte>,byte)
converting (in B7: stack: 1) IL_000b: stloc.1
converting (in B7: stack: 0) IL_000c: br.s IL_000e
converting (in B4: stack: 0) IL_000e: ldloc.1
converting (in B4: stack: 1) IL_000f: ret
REGION BB0 IL_0000 ID_FFFFFFFF
REGION BB3 IL_0000 ID_FFFFFFFF
REGION BB2 IL_0006 ID_FFFFFFFF
REGION BB8 IL_0006 ID_FFFFFFFF
REGION BB11 IL_0006 ID_FFFFFFFF
REGION BB10 IL_0006 ID_FFFFFFFF
REGION BB13 IL_0006 ID_FFFFFFFF
REGION BB12 IL_0006 ID_FFFFFFFF
REGION BB7 IL_000c ID_FFFFFFFF
REGION BB4 IL_000f ID_FFFFFFFF
REGION BB1 IL_0000 ID_FFFFFFFF
AFTER METHOD-TO-IR 0: [IN: , OUT: BB3(0) ]
AFTER METHOD-TO-IR 3: [IN: BB0(0), OUT: BB2(0) ]
iconst R18 <- [0]
iconst R19 <- [0]
AFTER METHOD-TO-IR 2: [IN: BB3(0), OUT: BB8(0) ]
il_seq_point il: 0x0
nop
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R21 <- R20
move R18 <- R21
il_seq_point il: 0x4
vmove R22 <- R17
move R23 <- R18
nop
vmove R25 <- R22
move R26 <- R23
AFTER METHOD-TO-IR 8: [IN: BB2(0), OUT: BB10(0) BB11(0) ]
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
AFTER METHOD-TO-IR 11: [IN: BB8(0), OUT: BB7(0) ]
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R31 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
nop
move R34 <- R31
move R35 <- R34
move R33 <- R35
nop
move R36 <- R33
ldaddr R37 <- R26
nop
move R39 <- R37
move R40 <- R39
move R38 <- R40
nop
move R41 <- R38
loadu1_membase R42 <- [R41 + 0x0]
ldaddr R43 <- R25
nop
move R45 <- R43
move R46 <- R45
not_null R46
loadi4_membase R47 <- [R46 + 0x10]
move R44 <- R47
nop
move R48 <- R44
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R49 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
move R24 <- R49
br [B7]
AFTER METHOD-TO-IR 10: [IN: BB8(0), OUT: BB12(0) BB13(0) ]
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
AFTER METHOD-TO-IR 13: [IN: BB10(0), OUT: BB7(0) ]
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R57 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
nop
move R60 <- R57
move R61 <- R60
move R59 <- R61
nop
move R62 <- R59
ldaddr R63 <- R26
nop
move R65 <- R63
move R66 <- R65
move R64 <- R66
nop
move R67 <- R64
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R69 <- R25
nop
move R71 <- R69
move R72 <- R71
not_null R72
loadi4_membase R73 <- [R72 + 0x10]
move R70 <- R73
nop
move R74 <- R70
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R75 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
move R24 <- R75
br [B7]
AFTER METHOD-TO-IR 12: [IN: BB10(0), OUT: BB7(0) ]
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R83 <- R25
nop
move R85 <- R83
move R86 <- R85
not_null R86
loadi4_membase R87 <- [R86 + 0x10]
move R84 <- R87
nop
move R88 <- R84
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R89 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
move R24 <- R89
br [B7]
AFTER METHOD-TO-IR 7: [IN: BB11(0) BB13(0) BB12(0), OUT: BB4(0) ]
move R93 <- R24
il_seq_point il: 0xb, nonempty-stack
move R19 <- R93
il_seq_point il: 0xc
br [B4]
AFTER METHOD-TO-IR 4: [IN: BB7(0), OUT: BB1(0) ]
il_seq_point il: 0xe
move R94 <- R19
il_seq_point il: 0xf
move R16 <- R94
br [B1]
AFTER METHOD-TO-IR 1: [IN: BB4(0), OUT: ]
CCOPY/2: R22 -> R17
CCOPY/2: R23 -> R18
CCOPY/2: R93 -> R24
CCOPY/2: R94 -> R19
HANDLE-GLOBAL-VREGS BLOCK 0:
HANDLE-GLOBAL-VREGS BLOCK 3:
iconst R18 <- [0]
iconst R19 <- [0]
HANDLE-GLOBAL-VREGS BLOCK 2:
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R21 <- R20
move R18 <- R21
il_seq_point il: 0x4
vmove R22 <- R17
move R23 <- R18
vmove R25 <- R17
move R26 <- R18
HANDLE-GLOBAL-VREGS BLOCK 8:
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
HANDLE-GLOBAL-VREGS BLOCK 11:
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R31 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R34 <- R31
move R35 <- R34
move R33 <- R35
move R36 <- R33
ldaddr R37 <- R26
ldaddr R39 <- R26
ldaddr R40 <- R26
ldaddr R38 <- R26
ldaddr R41 <- R26
loadu1_membase R42 <- [R41 + 0x0]
ldaddr R43 <- R25
ldaddr R45 <- R25
ldaddr R46 <- R25
not_null R46
loadi4_membase R47 <- [R46 + 0x10]
move R44 <- R47
move R48 <- R44
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R49 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
move R24 <- R49
br [B7]
HANDLE-GLOBAL-VREGS BLOCK 10:
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
HANDLE-GLOBAL-VREGS BLOCK 13:
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R57 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
move R60 <- R57
move R61 <- R60
move R59 <- R61
move R62 <- R59
ldaddr R63 <- R26
ldaddr R65 <- R26
ldaddr R66 <- R26
ldaddr R64 <- R26
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R69 <- R25
ldaddr R71 <- R25
ldaddr R72 <- R25
not_null R72
loadi4_membase R73 <- [R72 + 0x10]
move R70 <- R73
move R74 <- R70
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R75 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
move R24 <- R75
br [B7]
HANDLE-GLOBAL-VREGS BLOCK 12:
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R83 <- R25
ldaddr R85 <- R25
ldaddr R86 <- R25
not_null R86
loadi4_membase R87 <- [R86 + 0x10]
move R84 <- R87
move R88 <- R84
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R89 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
move R24 <- R89
br [B7]
HANDLE-GLOBAL-VREGS BLOCK 7:
move R93 <- R24
il_seq_point il: 0xb, nonempty-stack
move R19 <- R24
il_seq_point il: 0xc
br [B4]
HANDLE-GLOBAL-VREGS BLOCK 4:
il_seq_point il: 0xe
move R94 <- R19
il_seq_point il: 0xf
move R16 <- R19
br [B1]
HANDLE-GLOBAL-VREGS BLOCK 1:
setret R16
CONVERTED R33(7) TO VREG.
CONVERTED R34(8) TO VREG.
CONVERTED R38(9) TO VREG.
CONVERTED R39(10) TO VREG.
CONVERTED R44(11) TO VREG.
CONVERTED R45(12) TO VREG.
CONVERTED R59(13) TO VREG.
CONVERTED R60(14) TO VREG.
CONVERTED R64(15) TO VREG.
CONVERTED R65(16) TO VREG.
CONVERTED R70(17) TO VREG.
CONVERTED R71(18) TO VREG.
CONVERTED R84(19) TO VREG.
CONVERTED R85(20) TO VREG.
Reverse copyprop in BB2 on move R18 <- R21
Reverse copyprop in BB11 on move R24 <- R49
Reverse copyprop in BB11 on move R48 <- R44
Reverse copyprop in BB11 on move R48 <- R47
Reverse copyprop in BB11 on move R36 <- R33
Reverse copyprop in BB11 on move R36 <- R35
Reverse copyprop in BB11 on move R36 <- R34
Reverse copyprop in BB11 on move R36 <- R31
Reverse copyprop in BB13 on move R24 <- R75
Reverse copyprop in BB13 on move R74 <- R70
Reverse copyprop in BB13 on move R74 <- R73
Reverse copyprop in BB13 on move R62 <- R59
Reverse copyprop in BB13 on move R62 <- R61
Reverse copyprop in BB13 on move R62 <- R60
Reverse copyprop in BB13 on move R62 <- R57
Reverse copyprop in BB12 on move R24 <- R89
Reverse copyprop in BB12 on move R88 <- R84
Reverse copyprop in BB12 on move R88 <- R87
BEFORE ALIAS_ANALYSIS 0: [IN: , OUT: BB3(0) ]
BEFORE ALIAS_ANALYSIS 3: [IN: BB0(0), OUT: BB2(0) ]
iconst R18 <- [0]
iconst R19 <- [0]
BEFORE ALIAS_ANALYSIS 2: [IN: BB3(0), OUT: BB8(0) ]
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
BEFORE ALIAS_ANALYSIS 8: [IN: BB2(0), OUT: BB10(0) BB11(0) ]
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
BEFORE ALIAS_ANALYSIS 11: [IN: BB8(0), OUT: BB7(0) ]
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
ldaddr R41 <- R26
loadu1_membase R42 <- [R41 + 0x0]
ldaddr R46 <- R25
not_null R46
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
BEFORE ALIAS_ANALYSIS 10: [IN: BB8(0), OUT: BB12(0) BB13(0) ]
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
BEFORE ALIAS_ANALYSIS 13: [IN: BB10(0), OUT: BB7(0) ]
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
not_null R72
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R24 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
BEFORE ALIAS_ANALYSIS 12: [IN: BB10(0), OUT: BB7(0) ]
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
not_null R86
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R24 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
BEFORE ALIAS_ANALYSIS 7: [IN: BB11(0) BB13(0) BB12(0), OUT: BB4(0) ]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R24
il_seq_point il: 0xc
br [B4]
BEFORE ALIAS_ANALYSIS 4: [IN: BB7(0), OUT: BB1(0) ]
il_seq_point il: 0xe
il_seq_point il: 0xf
move R16 <- R19
br [B1]
BEFORE ALIAS_ANALYSIS 1: [IN: BB4(0), OUT: ]
setret R16
New address: ldaddr R41 <- R26
Found candidate load: loadu1_membase R42 <- [R41 + 0x0]
mem2reg replacing: loadu1_membase R42 <- [R41 + 0x0]
New address: ldaddr R46 <- R25
Found null check over local: not_null R46
New address: ldaddr R67 <- R26
Found candidate load: loadu2_membase R68 <- [R67 + 0x0]
Incompatible load type: expected loadu1_membase but got loadu2_membase
New address: ldaddr R72 <- R25
Found null check over local: not_null R72
New address: ldaddr R86 <- R25
Found null check over local: not_null R86
Killing : local R25 <-
Killing : local R26 <-
Found op : ldaddr R46 <- R25
Restoring : local R25 <-
Found op : ldaddr R67 <- R26
Restoring : local R26 <-
Found op : ldaddr R72 <- R25
Found op : ldaddr R86 <- R25
AFTER ALIAS_ANALYSIS 0: [IN: , OUT: BB3(0) ]
AFTER ALIAS_ANALYSIS 3: [IN: BB0(0), OUT: BB2(0) ]
iconst R18 <- [0]
iconst R19 <- [0]
AFTER ALIAS_ANALYSIS 2: [IN: BB3(0), OUT: BB8(0) ]
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
AFTER ALIAS_ANALYSIS 8: [IN: BB2(0), OUT: BB10(0) BB11(0) ]
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
AFTER ALIAS_ANALYSIS 11: [IN: BB8(0), OUT: BB7(0) ]
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
AFTER ALIAS_ANALYSIS 10: [IN: BB8(0), OUT: BB12(0) BB13(0) ]
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
AFTER ALIAS_ANALYSIS 13: [IN: BB10(0), OUT: BB7(0) ]
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R24 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
AFTER ALIAS_ANALYSIS 12: [IN: BB10(0), OUT: BB7(0) ]
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R24 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
AFTER ALIAS_ANALYSIS 7: [IN: BB11(0) BB13(0) BB12(0), OUT: BB4(0) ]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R24
il_seq_point il: 0xc
br [B4]
AFTER ALIAS_ANALYSIS 4: [IN: BB7(0), OUT: BB1(0) ]
il_seq_point il: 0xe
il_seq_point il: 0xf
move R16 <- R19
br [B1]
AFTER ALIAS_ANALYSIS 1: [IN: BB4(0), OUT: ]
setret R16
BB0 IN:
BB3 IN: 0
BB2 IN: 3
BB8 IN: 2
BB10 IN: 8
BB12 IN: 10
BB7 IN: 11 13 12
BB4 IN: 7
BB1 IN: 4
BB13 IN: 10
BB11 IN: 8
DTREE SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>) 0
BB0(dfn=0) (IDOM=BB-1): BB0
BB3(dfn=1) (IDOM=BB0): BB0 BB3
BB2(dfn=2) (IDOM=BB3): BB0 BB3 BB2
BB8(dfn=3) (IDOM=BB2): BB0 BB3 BB2 BB8
BB10(dfn=4) (IDOM=BB8): BB0 BB3 BB2 BB8 BB10
BB12(dfn=5) (IDOM=BB10): BB0 BB3 BB2 BB8 BB10 BB12
BB7(dfn=6) (IDOM=BB8): BB0 BB3 BB2 BB8 BB7
BB4(dfn=7) (IDOM=BB7): BB0 BB3 BB2 BB8 BB7 BB4
BB1(dfn=8) (IDOM=BB4): BB0 BB3 BB2 BB8 BB7 BB4 BB1
BB13(dfn=9) (IDOM=BB10): BB0 BB3 BB2 BB8 BB10 BB13
BB11(dfn=10) (IDOM=BB8): BB0 BB3 BB2 BB8 BB11
SKIPPING SAFEPOINTS for code compiled with LLVM
COMPUTE SSA 7 (R95-)
LIVENESS:
BLOCK BB0 (BB3, ):
GEN BB0: {}
KILL BB0: {}
BLOCK BB3 (BB2, ):
1 iconst R18 <- [0]
KILL: R18(2)
1 iconst R19 <- [0]
KILL: R19(3)
GEN BB3: {}
KILL BB3: {2, 3}
BLOCK BB2 (BB8, ):
1 il_seq_point il: 0x0
1 il_seq_point il: 0x1
1 iconst R20 <- [10]
1 int_conv_to_u1 R18 <- R20
KILL: R18(2)
1 il_seq_point il: 0x4
1 vmove R25 <- R17
GEN: R17(1)
KILL: R25(5)
1 move R26 <- R18
GEN: R18(2)
KILL: R26(6)
GEN BB2: {1}
KILL BB2: {2, 5, 6}
BLOCK BB8 (BB10, BB11, ):
1 aotconst R27 <-
1 aotconst R28 <-
1 compare R27 R28
1 long_ceq R29 <-
1 icompare_imm R29 [0]
1 int_beq [B10B11]
GEN BB8: {}
KILL BB8: {}
BLOCK BB10 (BB12, BB13, ):
1 aotconst R53 <-
1 aotconst R54 <-
1 compare R53 R54
1 long_ceq R55 <-
1 icompare_imm R55 [0]
1 int_beq [B12B13]
GEN BB10: {}
KILL BB10: {}
BLOCK BB12 (BB7, ):
1 vmove R79 <- R25
GEN: R25(5)
1 llvm_outarg_vt R81 <- R79
1 call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
1 move R82 <- R26
GEN: R26(6)
1 ldaddr R86 <- R25
GEN: R25(5)
1 loadi4_membase R88 <- [R86 + 0x10]
1 move R90 <- R80
1 move R91 <- R82
1 move R92 <- R88
1 call R24 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
KILL: R24(4)
1 br [B7]
GEN BB12: {5, 6}
KILL BB12: {4}
BLOCK BB7 (BB4, ):
1 il_seq_point il: 0xb, nonempty-stack
1 move R19 <- R24
GEN: R24(4)
KILL: R19(3)
1 il_seq_point il: 0xc
1 br [B4]
GEN BB7: {4}
KILL BB7: {3}
BLOCK BB4 (BB1, ):
1 il_seq_point il: 0xe
1 il_seq_point il: 0xf
1 move R16 <- R19
GEN: R19(3)
KILL: R16(0)
1 br [B1]
GEN BB4: {3}
KILL BB4: {0}
BLOCK BB1 ():
1 setret R16
GEN: R16(0)
GEN BB1: {0}
KILL BB1: {}
BLOCK BB13 (BB7, ):
1 vmove R56 <- R25
GEN: R25(5)
1 llvm_outarg_vt R58 <- R56
1 call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
1 ldaddr R67 <- R26
GEN: R26(6)
1 loadu2_membase R68 <- [R67 + 0x0]
1 ldaddr R72 <- R25
GEN: R25(5)
1 loadi4_membase R74 <- [R72 + 0x10]
1 move R76 <- R62
1 move R77 <- R68
1 move R78 <- R74
1 call R24 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
KILL: R24(4)
1 br [B7]
GEN BB13: {5, 6}
KILL BB13: {4}
BLOCK BB11 (BB7, ):
1 vmove R30 <- R25
GEN: R25(5)
1 llvm_outarg_vt R32 <- R30
1 call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
1 move R42 <- R26
GEN: R26(6)
1 ldaddr R46 <- R25
GEN: R25(5)
1 loadi4_membase R48 <- [R46 + 0x10]
1 move R50 <- R36
1 move R51 <- R42
1 move R52 <- R48
1 call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
KILL: R24(4)
1 br [B7]
GEN BB11: {5, 6}
KILL BB11: {4}
ITERATION:
P: BB11(10): IN: BB8 OUT:BB7
LIVE IN BB11: {5, 6}
P: BB13(9): IN: BB10 OUT:BB7
LIVE IN BB13: {5, 6}
P: BB1(8): IN: BB4 OUT:
P: BB4(7): IN: BB7 OUT:BB1
LIVE IN BB4: {3}
P: BB7(6): IN: BB11 BB13 BB12 OUT:BB4
ADD: 11
ADD: 13
LIVE IN BB7: {4}
P: BB13(9): IN: BB10 OUT:BB7
LIVE IN BB13: {5, 6}
P: BB11(10): IN: BB8 OUT:BB7
LIVE IN BB11: {5, 6}
P: BB12(5): IN: BB10 OUT:BB7
LIVE IN BB12: {5, 6}
P: BB10(4): IN: BB8 OUT:BB12 BB13
LIVE IN BB10: {5, 6}
P: BB8(3): IN: BB2 OUT:BB10 BB11
LIVE IN BB8: {5, 6}
P: BB2(2): IN: BB3 OUT:BB8
LIVE IN BB2: {1}
P: BB3(1): IN: BB0 OUT:BB2
LIVE IN BB3: {1}
P: BB0(0): IN: OUT:BB3
LIVE IN BB0: {1}
IT: 11 12.
LIVE IN BB11: {5, 6}
LIVE OUT BB11: {4}
LIVE IN BB13: {5, 6}
LIVE OUT BB13: {4}
LIVE IN BB1: {0}
LIVE OUT BB1: {}
LIVE IN BB4: {3}
LIVE OUT BB4: {0}
LIVE IN BB7: {4}
LIVE OUT BB7: {3}
LIVE IN BB12: {5, 6}
LIVE OUT BB12: {4}
LIVE IN BB10: {5, 6}
LIVE OUT BB10: {5, 6}
LIVE IN BB8: {5, 6}
LIVE OUT BB8: {5, 6}
LIVE IN BB2: {1}
LIVE OUT BB2: {5, 6}
LIVE IN BB3: {1}
LIVE OUT BB3: {1}
LIVE IN BB0: {1}
LIVE OUT BB0: {1}
V0: [0x0 - 0x200002]
V1: [0x0 - 0x8000c]
V2: [0x40003 - 0x8000e]
V3: [0x40005 - 0x1c0006]
V4: [0x140015 - 0x2bffff]
V5: [0x8000d - 0x28000a]
V6: [0x8000f - 0x280008]
LIVENESS 2 SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>)
LIVENESS BLOCK BB11:
Var R24 live at exit, set last_use to 2bffff
28000d: br [B7]
28000c: call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
add range to R24: [28000c, 2bffff)
28000b: move R52 <- R48
28000a: move R51 <- R42
280009: move R50 <- R36
280008: loadi4_membase R48 <- [R46 + 0x10]
280007: ldaddr R46 <- R25
280006: move R42 <- R26
last use of R26 set to 280006
280005: call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
280004: llvm_outarg_vt R32 <- R30
280003: vmove R30 <- R25
last use of R25 set to 280003
Var R16 live at enter, add range to R16: [280001, 2bffff)
Var R25 live at enter, add range to R25: [280001, 280003)
Var R26 live at enter, add range to R26: [280001, 280006)
LIVENESS BLOCK BB13:
Var R24 live at exit, set last_use to 280001
24000e: br [B7]
24000d: call R24 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
add range to R24: [24000d, 280001)
24000c: move R78 <- R74
24000b: move R77 <- R68
24000a: move R76 <- R62
240009: loadi4_membase R74 <- [R72 + 0x10]
240008: ldaddr R72 <- R25
240007: loadu2_membase R68 <- [R67 + 0x0]
240006: ldaddr R67 <- R26
240005: call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
240004: llvm_outarg_vt R58 <- R56
240003: vmove R56 <- R25
last use of R25 set to 240003
Var R16 live at enter, add range to R16: [240001, 280001)
Var R25 live at enter, add range to R25: [240001, 240003)
LIVENESS BLOCK BB1:
200003: setret R16
Var R16 live at enter, add range to R16: [200001, 240001)
LIVENESS BLOCK BB4:
Var R16 live at exit, set last_use to 200001
1c0006: br [B1]
1c0005: move R16 <- R19
add range to R16: [1c0005, 200001)
last use of R19 set to 1c0005
1c0004: il_seq_point il: 0xf
1c0003: il_seq_point il: 0xe
Var R19 live at enter, add range to R19: [1c0001, 1c0005)
LIVENESS BLOCK BB7:
Var R19 live at exit, set last_use to 1c0001
180006: br [B4]
180005: il_seq_point il: 0xc
180004: move R19 <- R24
add range to R19: [180004, 1c0001)
last use of R24 set to 180004
180003: il_seq_point il: 0xb, nonempty-stack
Var R16 live at enter, add range to R16: [180001, 1c0001)
Var R24 live at enter, add range to R24: [180001, 180004)
LIVENESS BLOCK BB12:
Var R24 live at exit, set last_use to 180001
14000d: br [B7]
14000c: call R24 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
add range to R24: [14000c, 180001)
14000b: move R92 <- R88
14000a: move R91 <- R82
140009: move R90 <- R80
140008: loadi4_membase R88 <- [R86 + 0x10]
140007: ldaddr R86 <- R25
140006: move R82 <- R26
last use of R26 set to 140006
140005: call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
140004: llvm_outarg_vt R81 <- R79
140003: vmove R79 <- R25
last use of R25 set to 140003
Var R16 live at enter, add range to R16: [140001, 180001)
Var R25 live at enter, add range to R25: [140001, 140003)
Var R26 live at enter, add range to R26: [140001, 140006)
LIVENESS BLOCK BB10:
Var R25 live at exit, set last_use to 140001
Var R26 live at exit, set last_use to 140001
100008: int_beq [B12B13]
100007: icompare_imm R55 [0]
100006: long_ceq R55 <-
100005: compare R53 R54
100004: aotconst R54 <-
100003: aotconst R53 <-
Var R16 live at enter, add range to R16: [100001, 140001)
Var R25 live at enter, add range to R25: [100001, 140001)
Var R26 live at enter, add range to R26: [100001, 140001)
LIVENESS BLOCK BB8:
Var R25 live at exit, set last_use to 100001
Var R26 live at exit, set last_use to 100001
c0008: int_beq [B10B11]
c0007: icompare_imm R29 [0]
c0006: long_ceq R29 <-
c0005: compare R27 R28
c0004: aotconst R28 <-
c0003: aotconst R27 <-
Var R16 live at enter, add range to R16: [c0001, 100001)
Var R25 live at enter, add range to R25: [c0001, 100001)
Var R26 live at enter, add range to R26: [c0001, 100001)
LIVENESS BLOCK BB2:
Var R25 live at exit, set last_use to c0001
Var R26 live at exit, set last_use to c0001
80009: move R26 <- R18
add range to R26: [80009, c0001)
last use of R18 set to 80009
80008: vmove R25 <- R17
add range to R25: [80008, c0001)
last use of R17 set to 80008
80007: il_seq_point il: 0x4
80006: int_conv_to_u1 R18 <- R20
add range to R18: [80006, 80009)
80005: iconst R20 <- [10]
80004: il_seq_point il: 0x1
80003: il_seq_point il: 0x0
Var R16 live at enter, add range to R16: [80001, c0001)
Var R17 live at enter, add range to R17: [80001, 80008)
LIVENESS BLOCK BB3:
Var R17 live at exit, set last_use to 80001
40004: nop
40003: nop
Var R16 live at enter, add range to R16: [40001, 80001)
Var R17 live at enter, add range to R17: [40001, 80001)
LIVENESS BLOCK BB0:
Var R17 live at exit, set last_use to 40001
Var R16 live at enter, add range to R16: [1, 40001)
Var R17 live at enter, add range to R17: [1, 40001)
R24 needs PHI functions in : BB7
RENAME VARS BLOCK 0:
RENAME VARS BLOCK 3:
RENAME VARS BLOCK 2:
RENAME VARS BLOCK 8:
RENAME VARS BLOCK 11:
Add PHI R24 <- R24 to BB7
RENAME VARS BLOCK 7:
created temp 7 (R95) of type System.Int32
R24 -> R95
RENAME VARS BLOCK 4:
created temp 8 (R96) of type System.Int32
R16 -> R96
RENAME VARS BLOCK 1:
RENAME VARS BLOCK 10:
RENAME VARS BLOCK 13:
created temp 9 (R97) of type System.Int32
R24 -> R97
Add PHI R95 <- R97 to BB7
RENAME VARS BLOCK 12:
created temp 10 (R98) of type System.Int32
R24 -> R98
Add PHI R95 <- R98 to BB7
END COMPUTE SSA.
IR code for method SpanCrash.MainClass:SpanIndexOfInner (System.Span`1<byte>)
BB0 (0) (len: 0):
prev: succ: BB3
idom: BB-1
dominators: BB0
dfrontier:
BB3 (1) (len: 0):
nop
nop
prev: BB0 succ: BB2
idom: BB0
dominators: [BB0] BB3
dfrontier:
BB2 (2) (len: 0):
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
prev: BB3 succ: BB8
idom: BB3
dominators: BB0 [BB3] BB2
dfrontier:
BB8 (3) (len: 27):
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
prev: BB2 succ: BB10 BB11
idom: BB2
dominators: BB0 BB3 [BB2] BB8
dfrontier:
BB10 (4) (len: 27):
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
prev: BB8 succ: BB12 BB13
idom: BB8
dominators: BB0 BB3 BB2 [BB8] BB10
dfrontier: BB7
BB12 (5) (len: 20):
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
prev: BB10 succ: BB7
idom: BB10
dominators: BB0 BB3 BB2 BB8 [BB10] BB12
dfrontier: BB7
BB7 (6) (len: 86688362):
phi R95 <- [4 (R24, R97, R98)]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R95
il_seq_point il: 0xc
br [B4]
prev: BB11 BB13 BB12 succ: BB4
idom: BB8
dominators: BB0 BB3 BB2 [BB8] BB7
dfrontier:
BB4 (7) (len: 2):
il_seq_point il: 0xe
il_seq_point il: 0xf
move R96 <- R19
br [B1]
prev: BB7 succ: BB1
idom: BB7
dominators: BB0 BB3 BB2 BB8 [BB7] BB4
dfrontier:
BB1 (8) (len: 0):
setret R96
prev: BB4 succ:
idom: BB4
dominators: BB0 BB3 BB2 BB8 BB7 [BB4] BB1
dfrontier:
BB13 (9) (len: 32):
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
prev: BB10 succ: BB7
idom: BB10
dominators: BB0 BB3 BB2 BB8 [BB10] BB13
dfrontier: BB7
BB11 (10) (len: 32):
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
prev: BB8 succ: BB7
idom: BB8
dominators: BB0 BB3 BB2 [BB8] BB11
dfrontier: BB7
ABCREM BLOCK 0:
ABCREM BLOCK 3:
ABCREM BLOCK 2:
iconst R20 <- [10]
Summarized variable 20: CONSTANT 10
int_conv_to_u1 R18 <- R20
[var18 <= 255][var18 >= 0]Summarized variable 18: ANY
Global register 25 is not in the SSA form, skipping.
Global register 26 is not in the SSA form, skipping.
ABCREM BLOCK 8:
aotconst R27 <-
Summarized variable 27: ANY
aotconst R28 <-
Summarized variable 28: ANY
long_ceq R29 <-
Summarized variable 29: ANY
ABCREM BLOCK 11:
Global register 25 is not in the SSA form, skipping.
llvm_outarg_vt R32 <- R30
Summarized variable 32: ANY
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
Summarized variable 36: ANY
Global register 26 is not in the SSA form, skipping.
ldaddr R46 <- R25
Summarized variable 46: CONSTANT 0
loadi4_membase R48 <- [R46 + 0x10]
Summarized variable 48: ANY
move R50 <- R36
Summarized variable 50: VARIABLE 36, delta 0
move R51 <- R42
Summarized variable 51: VARIABLE 42, delta 0
move R52 <- R48
Summarized variable 52: VARIABLE 48, delta 0
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
Summarized variable 24: ANY
ABCREM BLOCK 10:
aotconst R53 <-
Summarized variable 53: ANY
aotconst R54 <-
Summarized variable 54: ANY
long_ceq R55 <-
Summarized variable 55: ANY
ABCREM BLOCK 13:
Global register 25 is not in the SSA form, skipping.
llvm_outarg_vt R58 <- R56
Summarized variable 58: ANY
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
Summarized variable 62: ANY
ldaddr R67 <- R26
Summarized variable 67: CONSTANT 0
loadu2_membase R68 <- [R67 + 0x0]
Summarized variable 68: ANY
ldaddr R72 <- R25
Summarized variable 72: CONSTANT 0
loadi4_membase R74 <- [R72 + 0x10]
Summarized variable 74: ANY
move R76 <- R62
Summarized variable 76: VARIABLE 62, delta 0
move R77 <- R68
Summarized variable 77: VARIABLE 68, delta 0
move R78 <- R74
Summarized variable 78: VARIABLE 74, delta 0
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
Summarized variable 97: ANY
ABCREM BLOCK 12:
Global register 25 is not in the SSA form, skipping.
llvm_outarg_vt R81 <- R79
Summarized variable 81: ANY
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
Summarized variable 80: ANY
Global register 26 is not in the SSA form, skipping.
ldaddr R86 <- R25
Summarized variable 86: CONSTANT 0
loadi4_membase R88 <- [R86 + 0x10]
Summarized variable 88: ANY
move R90 <- R80
Summarized variable 90: VARIABLE 80, delta 0
move R91 <- R82
Summarized variable 91: VARIABLE 82, delta 0
move R92 <- R88
Summarized variable 92: VARIABLE 88, delta 0
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
Summarized variable 98: ANY
ABCREM BLOCK 7:
phi R95 <- [4 (R24, R97, R98)]
Summarized variable 95: PHI (24,97,98)
move R19 <- R95
Summarized variable 19: VARIABLE 95, delta 0
ABCREM BLOCK 4:
move R96 <- R19
Summarized variable 96: VARIABLE 19, delta 0
ABCREM BLOCK 1:
Added symmetric summarized value for variable variable 19 (to 95): VARIABLE 19, delta 0
Added symmetric summarized value for variable variable 50 (to 36): VARIABLE 50, delta 0
Added symmetric summarized value for variable variable 51 (to 42): VARIABLE 51, delta 0
Added symmetric summarized value for variable variable 52 (to 48): VARIABLE 52, delta 0
Added symmetric summarized value for variable variable 76 (to 62): VARIABLE 76, delta 0
Added symmetric summarized value for variable variable 77 (to 68): VARIABLE 77, delta 0
Added symmetric summarized value for variable variable 78 (to 74): VARIABLE 78, delta 0
Added symmetric summarized value for variable variable 90 (to 80): VARIABLE 90, delta 0
Added symmetric summarized value for variable variable 91 (to 82): VARIABLE 91, delta 0
Added symmetric summarized value for variable variable 92 (to 88): VARIABLE 92, delta 0
Added symmetric summarized value for variable variable 96 (to 19): VARIABLE 96, delta 0
ABCREM BLOCK/2 0 [dfn 0]...
ABCREM BLOCK/2 3 [dfn 1]...
nop
nop
ABCREM BLOCK/2 2 [dfn 2]...
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
ABCREM BLOCK/2 8 [dfn 3]...
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
ABCREM BLOCK/2 11 [dfn 10]...
Adding relation 1 on variable 29: Relation (LT|GT) with value CONSTANT 0
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
ABCREM BLOCK/2 7 [dfn 6]...
phi R95 <- [4 (R24, R97, R98)]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R95
il_seq_point il: 0xc
br [B4]
ABCREM BLOCK/2 4 [dfn 7]...
il_seq_point il: 0xe
il_seq_point il: 0xf
move R96 <- R19
br [B1]
ABCREM BLOCK/2 1 [dfn 8]...
setret R96
ABCREM BLOCK/2 10 [dfn 4]...
Adding relation 1 on variable 29: Relation (EQ) with value CONSTANT 0
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
ABCREM BLOCK/2 13 [dfn 9]...
Adding relation 1 on variable 55: Relation (LT|GT) with value CONSTANT 0
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
ABCREM BLOCK/2 12 [dfn 5]...
Adding relation 1 on variable 55: Relation (EQ) with value CONSTANT 0
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
BEFORE LOWER-VTYPE-OPTS 0: [IN: , OUT: BB3(1) ]
AFTER LOWER-VTYPE-OPTS 0: [IN: , OUT: BB3(1) ]
BEFORE LOWER-VTYPE-OPTS 3: [IN: BB0(0), OUT: BB2(2) ]
nop
nop
AFTER LOWER-VTYPE-OPTS 3: [IN: BB0(0), OUT: BB2(2) ]
nop
nop
BEFORE LOWER-VTYPE-OPTS 2: [IN: BB3(1), OUT: BB8(3) ]
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
AFTER LOWER-VTYPE-OPTS 2: [IN: BB3(1), OUT: BB8(3) ]
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
BEFORE LOWER-VTYPE-OPTS 8: [IN: BB2(2), OUT: BB10(4) BB11(10) ]
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
AFTER LOWER-VTYPE-OPTS 8: [IN: BB2(2), OUT: BB10(4) BB11(10) ]
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
BEFORE LOWER-VTYPE-OPTS 11: [IN: BB8(3), OUT: BB7(6) ]
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
AFTER LOWER-VTYPE-OPTS 11: [IN: BB8(3), OUT: BB7(6) ]
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
BEFORE LOWER-VTYPE-OPTS 10: [IN: BB8(3), OUT: BB12(5) BB13(9) ]
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
AFTER LOWER-VTYPE-OPTS 10: [IN: BB8(3), OUT: BB12(5) BB13(9) ]
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
BEFORE LOWER-VTYPE-OPTS 13: [IN: BB10(4), OUT: BB7(6) ]
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
AFTER LOWER-VTYPE-OPTS 13: [IN: BB10(4), OUT: BB7(6) ]
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
BEFORE LOWER-VTYPE-OPTS 12: [IN: BB10(4), OUT: BB7(6) ]
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
AFTER LOWER-VTYPE-OPTS 12: [IN: BB10(4), OUT: BB7(6) ]
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
BEFORE LOWER-VTYPE-OPTS 7: [IN: BB11(10) BB13(9) BB12(5), OUT: BB4(7) ]
phi R95 <- [4 (R24, R97, R98)]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R95
il_seq_point il: 0xc
br [B4]
AFTER LOWER-VTYPE-OPTS 7: [IN: BB11(10) BB13(9) BB12(5), OUT: BB4(7) ]
phi R95 <- [4 (R24, R97, R98)]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R95
il_seq_point il: 0xc
br [B4]
BEFORE LOWER-VTYPE-OPTS 4: [IN: BB7(6), OUT: BB1(8) ]
il_seq_point il: 0xe
il_seq_point il: 0xf
move R96 <- R19
br [B1]
AFTER LOWER-VTYPE-OPTS 4: [IN: BB7(6), OUT: BB1(8) ]
il_seq_point il: 0xe
il_seq_point il: 0xf
move R96 <- R19
br [B1]
BEFORE LOWER-VTYPE-OPTS 1: [IN: BB4(7), OUT: ]
setret R96
AFTER LOWER-VTYPE-OPTS 1: [IN: BB4(7), OUT: ]
setret R96
DUMP BLOCK 0:
DUMP BLOCK 3:
nop
nop
DUMP BLOCK 2:
il_seq_point il: 0x0
il_seq_point il: 0x1
iconst R20 <- [10]
int_conv_to_u1 R18 <- R20
il_seq_point il: 0x4
vmove R25 <- R17
move R26 <- R18
DUMP BLOCK 8:
aotconst R27 <-
aotconst R28 <-
compare R27 R28
long_ceq R29 <-
icompare_imm R29 [0]
int_beq [B10B11]
DUMP BLOCK 11:
vmove R30 <- R25
llvm_outarg_vt R32 <- R30
call R36 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R32] clobbers: c
move R42 <- R26
ldaddr R46 <- R25
loadi4_membase R48 <- [R46 + 0x10]
move R50 <- R36
move R51 <- R42
move R52 <- R48
call R24 <- [int System.SpanHelpers:IndexOf (byte&,byte,int)] [%rax <- R50] [%rax <- R51] [%rax <- R52] clobbers: c
br [B7]
DUMP BLOCK 10:
aotconst R53 <-
aotconst R54 <-
compare R53 R54
long_ceq R55 <-
icompare_imm R55 [0]
int_beq [B12B13]
DUMP BLOCK 13:
vmove R56 <- R25
llvm_outarg_vt R58 <- R56
call R62 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R58] clobbers: c
ldaddr R67 <- R26
loadu2_membase R68 <- [R67 + 0x0]
ldaddr R72 <- R25
loadi4_membase R74 <- [R72 + 0x10]
move R76 <- R62
move R77 <- R68
move R78 <- R74
call R97 <- [int System.SpanHelpers:IndexOf (char&,char,int)] [%rax <- R76] [%rax <- R77] [%rax <- R78] clobbers: c
br [B7]
DUMP BLOCK 12:
vmove R79 <- R25
llvm_outarg_vt R81 <- R79
call R80 <- [byte& System.Runtime.InteropServices.MemoryMarshal:GetReference<byte> (System.Span`1<byte>)] [%rax <- R81] clobbers: c
move R82 <- R26
ldaddr R86 <- R25
loadi4_membase R88 <- [R86 + 0x10]
move R90 <- R80
move R91 <- R82
move R92 <- R88
call R98 <- [int System.SpanHelpers:IndexOf<byte> (byte&,byte,int)] [%rax <- R90] [%rax <- R91] [%rax <- R92] clobbers: c
br [B7]
DUMP BLOCK 7:
phi R95 <- [4 (R24, R97, R98)]
il_seq_point il: 0xb, nonempty-stack
move R19 <- R95
il_seq_point il: 0xc
br [B4]
DUMP BLOCK 4:
il_seq_point il: 0xe
il_seq_point il: 0xf
move R96 <- R19
br [B1]
DUMP BLOCK 1:
setret R96
; Function Attrs: noinline uwtable
define hidden monocc i32 @SpanCrash_MainClass_SpanIndexOfInner_System_Span_1_byte(%"System.Span`1<byte>"* byval %arg_span) #5 gc "mono" {
BB0:
%0 = alloca i8, align 1
%1 = alloca %"System.Span`1<byte>", align 8
%2 = alloca %"System.Span`1<byte>", align 8
%3 = alloca %"System.Span`1<byte>", align 8
%4 = alloca %"System.Span`1<byte>", align 8
%5 = alloca %"System.Span`1<byte>", align 8
br label %INIT_BB1
INIT_BB1: ; preds = %BB0
%is_inited = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @mono_inited_tmp, i32 0, i32 0)
%6 = call i8 @llvm.expect.i8(i8 %is_inited, i8 1)
%7 = icmp eq i8 %6, 0
br i1 %7, label %NOTINITED_BB3, label %INITED_BB2
INITED_BB2: ; preds = %NOTINITED_BB3, %INIT_BB1
br label %BB3
BB3: ; preds = %INITED_BB2
br label %BB2
BB2: ; preds = %BB3
%8 = bitcast %"System.Span`1<byte>"* %arg_span to i8*
%9 = bitcast %"System.Span`1<byte>"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %9, i8* %8, i32 24, i32 0, i1 false)
store i8 10, i8* %0
br label %BB8
BB8: ; preds = %BB2
%TYPE_FROM_HANDLE_30 = load i64*, i64** getelementptr inbounds ([0 x i64*], [0 x i64*]* @mono_dummy_got, i32 0, i32 30), !invariant.load !2
%TYPE_FROM_HANDLE_31 = load i64*, i64** getelementptr inbounds ([0 x i64*], [0 x i64*]* @mono_dummy_got, i32 0, i32 31), !invariant.load !2
%10 = icmp eq i64* %TYPE_FROM_HANDLE_30, %TYPE_FROM_HANDLE_31
%t29 = zext i1 %10 to i32
%11 = icmp eq i32 %t29, 0
br i1 %11, label %BB10, label %BB11
BB10: ; preds = %BB8
%TYPE_FROM_HANDLE_301 = load i64*, i64** getelementptr inbounds ([0 x i64*], [0 x i64*]* @mono_dummy_got, i32 0, i32 30), !invariant.load !2
%TYPE_FROM_HANDLE_32 = load i64*, i64** getelementptr inbounds ([0 x i64*], [0 x i64*]* @mono_dummy_got, i32 0, i32 32), !invariant.load !2
%12 = icmp eq i64* %TYPE_FROM_HANDLE_301, %TYPE_FROM_HANDLE_32
%t55 = zext i1 %12 to i32
%13 = icmp eq i32 %t55, 0
br i1 %13, label %BB12, label %BB13
BB11: ; preds = %BB8
%14 = bitcast %"System.Span`1<byte>"* %1 to i8*
%15 = bitcast %"System.Span`1<byte>"* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %15, i8* %14, i32 24, i32 0, i1 false)
%16 = notail call monocc i64* @p_1_plt_System_Runtime_InteropServices_MemoryMarshal_GetReference_byte_System_Span_1_byte_llvm(%"System.Span`1<byte>"* byval %3)
%17 = load volatile i8, i8* %0
%18 = zext i8 %17 to i32
%19 = bitcast %"System.Span`1<byte>"* %1 to i32*
%20 = getelementptr i32, i32* %19, i32 4
%t48 = load volatile i32, i32* %20
%21 = notail call monocc i32 @p_4_plt_System_SpanHelpers_IndexOf_byte__byte_int_llvm(i64* %16, i32 %18, i32 %t48)
br label %BB7
BB12: ; preds = %BB10
%22 = bitcast %"System.Span`1<byte>"* %1 to i8*
%23 = bitcast %"System.Span`1<byte>"* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %22, i32 24, i32 0, i1 false)
%24 = notail call monocc i64* @p_1_plt_System_Runtime_InteropServices_MemoryMarshal_GetReference_byte_System_Span_1_byte_llvm(%"System.Span`1<byte>"* byval %5)
%25 = load volatile i8, i8* %0
%26 = zext i8 %25 to i32
%27 = bitcast %"System.Span`1<byte>"* %1 to i32*
%28 = getelementptr i32, i32* %27, i32 4
%t88 = load volatile i32, i32* %28
%29 = notail call monocc i32 @p_2_plt_System_SpanHelpers_IndexOf_byte_byte__byte_int_llvm(i64* %24, i32 %26, i32 %t88)
br label %BB7
BB13: ; preds = %BB10
%30 = bitcast %"System.Span`1<byte>"* %1 to i8*
%31 = bitcast %"System.Span`1<byte>"* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %31, i8* %30, i32 24, i32 0, i1 false)
%32 = notail call monocc i64* @p_1_plt_System_Runtime_InteropServices_MemoryMarshal_GetReference_byte_System_Span_1_byte_llvm(%"System.Span`1<byte>"* byval %4)
%33 = bitcast i8* %0 to i16*
%34 = load i16, i16* %33
%35 = zext i16 %34 to i32
%36 = bitcast %"System.Span`1<byte>"* %1 to i32*
%37 = getelementptr i32, i32* %36, i32 4
%t74 = load volatile i32, i32* %37
%38 = notail call monocc i32 @p_3_plt_System_SpanHelpers_IndexOf_char__char_int_llvm(i64* %32, i32 %35, i32 %t74)
br label %BB7
BB7: ; preds = %BB11, %BB13, %BB12
%39 = phi i32 [ %21, %BB11 ], [ %38, %BB13 ], [ %29, %BB12 ]
br label %BB4
BB4: ; preds = %BB7
br label %BB1
BB1: ; preds = %BB4
ret i32 %39
NOTINITED_BB3: ; preds = %INIT_BB1
call monocc void @mono_aot_SpanCrashinit_method(i32 0)
br label %INITED_BB2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment