Created
April 29, 2019 17:16
-
-
Save alexanderkyte/f69b1d096682007f14e13c57968cda64 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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