Skip to content

Instantly share code, notes, and snippets.

@trylek
Created September 1, 2020 23:38
Show Gist options
  • Save trylek/ee6512d53d25edab7591a5ea77dba585 to your computer and use it in GitHub Desktop.
Save trylek/ee6512d53d25edab7591a5ea77dba585 to your computer and use it in GitHub Desktop.
Perf regression caused by fix for expanding generic dictionaries - slow version
****** START compiling System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this (MethodHash=992e2e63)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 3a 00 00 1b initobj 0x1B00003A
IL_0008 12 01 ldloca.s 0x1
IL_000a 02 ldarg.0
IL_000b 7b 59 08 00 0a ldfld 0xA000859
IL_0010 28 a9 05 00 0a call 0xA0005A9
IL_0015 16 ldc.i4.0
IL_0016 0c stloc.2
IL_0017 2b 12 br.s 18 (IL_002b)
IL_0019 12 01 ldloca.s 0x1
IL_001b 08 ldloc.2
IL_001c 28 0b 08 00 0a call 0xA00080B
IL_0021 fe 15 3a 00 00 1b initobj 0x1B00003A
IL_0027 08 ldloc.2
IL_0028 17 ldc.i4.1
IL_0029 58 add
IL_002a 0c stloc.2
IL_002b 08 ldloc.2
IL_002c 12 01 ldloca.s 0x1
IL_002e 28 70 08 00 0a call 0xA000870
IL_0033 32 e4 blt.s -28 (IL_0019)
IL_0035 06 ldloc.0
IL_0036 2a ret
lvaSetClass: setting class for V00 to (00007FF9F0F4EC18) System.Collections.IndexerSet`1[__Canon]
'this' passed in register rcx
lvaSetClass: setting class for V01 to (00007FF9F09E0FD8) System.__Canon
lvaGrabTemp returning 4 (V04 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 this ref this class-hnd
; V01 loc0 ref class-hnd
; V02 loc1 struct <System.Span`1[__Canon], 16>
; V03 loc2 int
; V04 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 4
VarNum LVNum Name Beg End
0: 00h 00h V00 this 000h 037h
1: 01h 01h V01 loc0 000h 037h
2: 02h 02h V02 loc1 000h 037h
3: 03h 03h V03 loc2 000h 037h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
Jump targets:
IL_0019
IL_002b
New Basic Block BB01 [0000] created.
BB01 [000..019)
New Basic Block BB02 [0001] created.
BB02 [019..02B)
New Basic Block BB03 [0002] created.
BB03 [02B..035)
New Basic Block BB04 [0003] created.
BB04 [035..037)
****
**** JIT Tier0 jit request switching to Tier1 because of loop
****
Notify VM instruction set (AVX) must be supported.
****** START compiling System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this (MethodHash=992e2e63)
Generating code for Windows x64
OPTIONS: Tier-0 compilation, switched to FullOpts
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL Code Size,Instr 55, 0, Basic Block count 4, Local Variable Num,Ref count 5, 0 for method System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
OPTIONS: opts.MinOpts() == false
Basic block list for 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..019)-> BB03 (always)
BB02 [0001] 1 1 [019..02B) bwd bwd-target
BB03 [0002] 2 1 [02B..035)-> BB02 ( cond ) bwd
BB04 [0003] 1 1 [035..037) (return)
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Importation
*************** In impImport() for System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B00003A
STMT00000 (IL 0x000... ???)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 1
[ 1] 10 (0x00a) ldarg.0
[ 2] 11 (0x00b) ldfld 0A000859
[ 2] 16 (0x010) call 0A0005A9
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
lvaGrabTemp returning 5 (V05 tmp1) called for impRuntimeLookup slot.
lvaGrabTemp returning 6 (V06 tmp2) called for impAppendStmt.
STMT00002 (IL 0x008... ???)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
Marked V06 as a single def temp
Querying runtime about current class of field System.Collections.IndexerSet`1[System.__Canon]._array (declared as System.__Canon[])
Field's current class not available
lvaSetClass: setting class for V06 to (00007FF9F109F808) System.__Canon[]
STMT00001 (IL 0x008... ???)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
lvaGrabTemp returning 7 (V07 tmp3) called for impRuntimeLookup indirectOffset.
STMT00003 (IL ???... ???)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
lvaGrabTemp returning 8 (V08 tmp4) called for spilling Runtime Lookup tree.
STMT00004 (IL ???... ???)
[000044] -AC-G------- * ASG long
[000043] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000033] ------------ arg0 +--* EQ int
[000029] n----------- | +--* IND long
[000028] ------------ | | \--* ADD long
[000025] ------------ | | +--* LCL_VAR long V07 tmp3
[000027] ------------ | | \--* CNS_INT long 96
[000032] ------------ | \--* CNS_INT long 0
[000042] ------------ arg1 +--* LE int
[000040] ------------ | +--* IND long
[000039] ------------ | | \--* ADD long
[000026] ------------ | | +--* LCL_VAR long V07 tmp3
[000038] ------------ | | \--* CNS_INT long 8
[000041] ------------ | \--* CNS_INT long 96
[000034] n----------- arg2 +--* IND long
[000035] ------------ | \--* ADD long
[000036] ------------ | +--* LCL_VAR long V07 tmp3
[000037] ------------ | \--* CNS_INT long 96
[000017] ------------ arg3 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg4 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
STMT00005 (IL ???... ???)
[000009] I-C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor (exactContextHnd=0x00007FF9F129E501)
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
[ 0] 21 (0x015) ldc.i4.0 0
[ 1] 22 (0x016) stloc.2
STMT00006 (IL 0x015... ???)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
[ 0] 23 (0x017) br.s
impImportBlockPending for BB03
Importing BB03 (PC=043) of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
[ 0] 43 (0x02b) ldloc.2
[ 1] 44 (0x02c) ldloca.s 1
[ 2] 46 (0x02e) call 0A000870
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
lvaGrabTemp returning 9 (V09 tmp5) called for impRuntimeLookup slot.
STMT00007 (IL 0x02B... ???)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
lvaGrabTemp returning 10 (V10 tmp6) called for impRuntimeLookup indirectOffset.
STMT00008 (IL ???... ???)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
lvaGrabTemp returning 11 (V11 tmp7) called for spilling Runtime Lookup tree.
STMT00009 (IL ???... ???)
[000085] -AC-G------- * ASG long
[000084] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000074] ------------ arg0 +--* EQ int
[000070] n----------- | +--* IND long
[000069] ------------ | | \--* ADD long
[000066] ------------ | | +--* LCL_VAR long V10 tmp6
[000068] ------------ | | \--* CNS_INT long 96
[000073] ------------ | \--* CNS_INT long 0
[000083] ------------ arg1 +--* LE int
[000081] ------------ | +--* IND long
[000080] ------------ | | \--* ADD long
[000067] ------------ | | +--* LCL_VAR long V10 tmp6
[000079] ------------ | | \--* CNS_INT long 8
[000082] ------------ | \--* CNS_INT long 96
[000075] n----------- arg2 +--* IND long
[000076] ------------ | \--* ADD long
[000077] ------------ | +--* LCL_VAR long V10 tmp6
[000078] ------------ | \--* CNS_INT long 96
[000058] ------------ arg3 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg4 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
STMT00010 (IL ???... ???)
[000053] I-C-G------- * CALL int System.Span`1[__Canon][System.__Canon].get_Length (exactContextHnd=0x00007FF9F129E501)
[000052] ------------ this in rcx +--* ADDR byref
[000051] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000087] ------------ arg1 \--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000086] ------------ \--* LCL_VAR long V11 tmp7
[ 2] 51 (0x033) blt.s
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000088] --C--------- \--* RET_EXPR int (inl return from call [000053])
impImportBlockPending for BB04
impImportBlockPending for BB02
Importing BB02 (PC=025) of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
[ 0] 25 (0x019) ldloca.s 1
[ 1] 27 (0x01b) ldloc.2
[ 2] 28 (0x01c) call 0A00080B
In Compiler::impImportCall: opcode is call, kind=0, callRetType is byref, structSize is 0
impIntrinsic: Expanding Span<T>.get_Item, T=System.__Canon, sizeof(T)=8
with ptr-to-span
[000092] ------------ * ADDR byref
[000091] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
and index
[000093] ------------ * LCL_VAR int V03 loc2
[ 1] 33 (0x021) initobj 1B00003A
STMT00012 (IL 0x019... ???)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* FIELD int _length
[000092] ------------ | | \--* ADDR byref
[000091] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* FIELD byref _pointer
[000096] ------------ | | \--* ADDR byref
[000095] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
[ 0] 39 (0x027) ldloc.2
[ 1] 40 (0x028) ldc.i4.1 1
[ 2] 41 (0x029) add
[ 1] 42 (0x02a) stloc.2
STMT00013 (IL 0x027... ???)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
impImportBlockPending for BB03
Importing BB04 (PC=053) of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
[ 0] 53 (0x035) ldloc.0
[ 1] 54 (0x036) ret
STMT00014 (IL 0x035... ???)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
*************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..019)-> BB03 (always) i
BB02 [0001] 1 1 [019..02B) i bwd bwd-target
BB03 [0002] 2 1 [02B..035)-> BB02 ( cond ) i bwd
BB04 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..019) -> BB03 (always), preds={} succs={BB03}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
***** BB01
STMT00004 (IL ???... ???)
[000044] -AC-G------- * ASG long
[000043] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000033] ------------ arg0 +--* EQ int
[000029] n----------- | +--* IND long
[000028] ------------ | | \--* ADD long
[000025] ------------ | | +--* LCL_VAR long V07 tmp3
[000027] ------------ | | \--* CNS_INT long 96
[000032] ------------ | \--* CNS_INT long 0
[000042] ------------ arg1 +--* LE int
[000040] ------------ | +--* IND long
[000039] ------------ | | \--* ADD long
[000026] ------------ | | +--* LCL_VAR long V07 tmp3
[000038] ------------ | | \--* CNS_INT long 8
[000041] ------------ | \--* CNS_INT long 96
[000034] n----------- arg2 +--* IND long
[000035] ------------ | \--* ADD long
[000036] ------------ | +--* LCL_VAR long V07 tmp3
[000037] ------------ | \--* CNS_INT long 96
[000017] ------------ arg3 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg4 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
***** BB01
STMT00005 (IL ???... ???)
[000009] I-C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor (exactContextHnd=0x00007FF9F129E501)
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
***** BB01
STMT00006 (IL 0x015... ???)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
------------ BB02 [019..02B), preds={} succs={BB03}
***** BB02
STMT00012 (IL 0x019...0x022)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* FIELD int _length
[000092] ------------ | | \--* ADDR byref
[000091] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* FIELD byref _pointer
[000096] ------------ | | \--* ADDR byref
[000095] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
***** BB02
STMT00013 (IL 0x027...0x02A)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
------------ BB03 [02B..035) -> BB02 (cond), preds={} succs={BB04,BB02}
***** BB03
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
***** BB03
STMT00008 (IL ???... ???)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
***** BB03
STMT00009 (IL ???... ???)
[000085] -AC-G------- * ASG long
[000084] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000074] ------------ arg0 +--* EQ int
[000070] n----------- | +--* IND long
[000069] ------------ | | \--* ADD long
[000066] ------------ | | +--* LCL_VAR long V10 tmp6
[000068] ------------ | | \--* CNS_INT long 96
[000073] ------------ | \--* CNS_INT long 0
[000083] ------------ arg1 +--* LE int
[000081] ------------ | +--* IND long
[000080] ------------ | | \--* ADD long
[000067] ------------ | | +--* LCL_VAR long V10 tmp6
[000079] ------------ | | \--* CNS_INT long 8
[000082] ------------ | \--* CNS_INT long 96
[000075] n----------- arg2 +--* IND long
[000076] ------------ | \--* ADD long
[000077] ------------ | +--* LCL_VAR long V10 tmp6
[000078] ------------ | \--* CNS_INT long 96
[000058] ------------ arg3 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg4 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
***** BB03
STMT00010 (IL ???... ???)
[000053] I-C-G------- * CALL int System.Span`1[__Canon][System.__Canon].get_Length (exactContextHnd=0x00007FF9F129E501)
[000052] ------------ this in rcx +--* ADDR byref
[000051] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000087] ------------ arg1 \--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000086] ------------ \--* LCL_VAR long V11 tmp7
***** BB03
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000088] --C--------- \--* RET_EXPR int (inl return from call [000053])
------------ BB04 [035..037) (return), preds={} succs={}
***** BB04
STMT00014 (IL 0x035...0x036)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
*** ExpRuntimeLookup: transformingSTMT00004
New Basic Block BB05 [0004] created.
BB03 previous predecessor was BB01, now is BB05
New Basic Block BB06 [0005] created.
New Basic Block BB07 [0006] created.
New Basic Block BB08 [0007] created.
New Basic Block BB09 [0008] created.
Removing statement STMT00004 (IL ???... ???)
[000044] -AC-G------- * ASG long
[000043] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] ------------ arg0 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
in BB01 as useless:
*** ExpRuntimeLookup: transformingSTMT00009
New Basic Block BB10 [0009] created.
BB04 previous predecessor was BB03, now is BB10
BB02 previous predecessor was BB03, now is BB10
New Basic Block BB11 [0010] created.
New Basic Block BB12 [0011] created.
New Basic Block BB13 [0012] created.
New Basic Block BB14 [0013] created.
Removing statement STMT00009 (IL ???... ???)
[000085] -AC-G------- * ASG long
[000084] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] ------------ arg0 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
in BB03 as useless:
-- 2 calls transformed
*************** Finishing PHASE Indirect call transform
Trees after Indirect call transform
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB06 [0005] 0 1 [???..???)-> BB09 ( cond ) i
BB07 [0006] 0 0.80 [???..???)-> BB09 ( cond ) i
BB08 [0007] 0 0.80 [???..???)-> BB05 (always) i
BB09 [0008] 0 0.20 [???..???) i
BB05 [0004] 1 1 [015..019)-> BB03 (always) i label target
BB02 [0001] 1 1 [019..02B) i bwd bwd-target
BB03 [0002] 2 1 [02B..???) i bwd
BB11 [0010] 0 1 [???..???)-> BB14 ( cond ) i
BB12 [0011] 0 0.80 [???..???)-> BB14 ( cond ) i
BB13 [0012] 0 0.80 [???..???)-> BB10 (always) i
BB14 [0013] 0 0.20 [???..???) i
BB10 [0009] 1 1 [???..035)-> BB02 ( cond ) i label target bwd
BB04 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015), preds={} succs={BB06}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
------------ BB06 [???..???) -> BB09 (cond), preds={} succs={BB07,BB09}
***** BB06
STMT00015 (IL ???... ???)
[000115] ------------ * JTRUE void
[000042] ------------ \--* LE int
[000040] ------------ +--* IND long
[000039] ------------ | \--* ADD long
[000026] ------------ | +--* LCL_VAR long V07 tmp3
[000038] ------------ | \--* CNS_INT long 8
[000041] ------------ \--* CNS_INT long 96
------------ BB07 [???..???) -> BB09 (cond), preds={} succs={BB08,BB09}
***** BB07
STMT00016 (IL ???... ???)
[000116] ------------ * JTRUE void
[000033] ------------ \--* EQ int
[000029] n----------- +--* IND long
[000028] ------------ | \--* ADD long
[000025] ------------ | +--* LCL_VAR long V07 tmp3
[000027] ------------ | \--* CNS_INT long 96
[000032] ------------ \--* CNS_INT long 0
------------ BB08 [???..???) -> BB05 (always), preds={} succs={BB05}
***** BB08
STMT00017 (IL ???... ???)
[000118] -A---------- * ASG long
[000117] D------N---- +--* LCL_VAR long V08 tmp4
[000034] n----------- \--* IND long
[000035] ------------ \--* ADD long
[000036] ------------ +--* LCL_VAR long V07 tmp3
[000037] ------------ \--* CNS_INT long 96
------------ BB09 [???..???), preds={} succs={BB05}
***** BB09
STMT00018 (IL ???... ???)
[000120] -AC-G------- * ASG long
[000119] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] ------------ arg0 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB03 (always), preds={} succs={BB03}
***** BB05
STMT00005 (IL ???... ???)
[000009] I-C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor (exactContextHnd=0x00007FF9F129E501)
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
***** BB05
STMT00006 (IL 0x015... ???)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
------------ BB02 [019..02B), preds={} succs={BB03}
***** BB02
STMT00012 (IL 0x019...0x022)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* FIELD int _length
[000092] ------------ | | \--* ADDR byref
[000091] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* FIELD byref _pointer
[000096] ------------ | | \--* ADDR byref
[000095] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
***** BB02
STMT00013 (IL 0x027...0x02A)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
------------ BB03 [02B..???), preds={} succs={BB11}
***** BB03
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
***** BB03
STMT00008 (IL ???... ???)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
------------ BB11 [???..???) -> BB14 (cond), preds={} succs={BB12,BB14}
***** BB11
STMT00019 (IL ???... ???)
[000121] ------------ * JTRUE void
[000083] ------------ \--* LE int
[000081] ------------ +--* IND long
[000080] ------------ | \--* ADD long
[000067] ------------ | +--* LCL_VAR long V10 tmp6
[000079] ------------ | \--* CNS_INT long 8
[000082] ------------ \--* CNS_INT long 96
------------ BB12 [???..???) -> BB14 (cond), preds={} succs={BB13,BB14}
***** BB12
STMT00020 (IL ???... ???)
[000122] ------------ * JTRUE void
[000074] ------------ \--* EQ int
[000070] n----------- +--* IND long
[000069] ------------ | \--* ADD long
[000066] ------------ | +--* LCL_VAR long V10 tmp6
[000068] ------------ | \--* CNS_INT long 96
[000073] ------------ \--* CNS_INT long 0
------------ BB13 [???..???) -> BB10 (always), preds={} succs={BB10}
***** BB13
STMT00021 (IL ???... ???)
[000124] -A---------- * ASG long
[000123] D------N---- +--* LCL_VAR long V11 tmp7
[000075] n----------- \--* IND long
[000076] ------------ \--* ADD long
[000077] ------------ +--* LCL_VAR long V10 tmp6
[000078] ------------ \--* CNS_INT long 96
------------ BB14 [???..???), preds={} succs={BB10}
***** BB14
STMT00022 (IL ???... ???)
[000126] -AC-G------- * ASG long
[000125] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] ------------ arg0 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB10 [???..035) -> BB02 (cond), preds={} succs={BB04,BB02}
***** BB10
STMT00010 (IL ???... ???)
[000053] I-C-G------- * CALL int System.Span`1[__Canon][System.__Canon].get_Length (exactContextHnd=0x00007FF9F129E501)
[000052] ------------ this in rcx +--* ADDR byref
[000051] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000087] ------------ arg1 \--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000086] ------------ \--* LCL_VAR long V11 tmp7
***** BB10
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000088] --C--------- \--* RET_EXPR int (inl return from call [000053])
------------ BB04 [035..037) (return), preds={} succs={}
***** BB04
STMT00014 (IL 0x035...0x036)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 15, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
Querying runtime about current class of field System.Collections.IndexerSet`1[System.__Canon]._array (declared as System.__Canon[])
Field's current class not available
Expanding INLINE_CANDIDATE in statement STMT00005 in BB05:
STMT00005 (IL ???... ???)
[000009] I-C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor (exactContextHnd=0x00007FF9F129E501)
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
thisArg: is a constant is byref to a struct local
[000006] ------------ * ADDR byref
[000005] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
Argument #1: is a local var
[000016] ------------ * LCL_VAR ref V06 tmp2
INLINER: inlineInfo.tokenLookupContextHandle for System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this set to 0x00007FF9F129E501:
Invoking compiler for the inlinee method System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this :
IL to import:
IL_0000 03 ldarg.1
IL_0001 2d 08 brtrue.s 8 (IL_000b)
IL_0003 02 ldarg.0
IL_0004 fe 15 b2 00 00 1b initobj 0x1B0000B2
IL_000a 2a ret
IL_000b d0 15 00 00 1b ldtoken 0x1B000015
IL_0010 28 87 07 00 06 call 0x6000787
IL_0015 28 d0 07 00 06 call 0x60007D0
IL_001a 2d 1c brtrue.s 28 (IL_0038)
IL_001c 03 ldarg.1
IL_001d 6f 91 04 00 06 callvirt 0x6000491
IL_0022 d0 40 00 00 1b ldtoken 0x1B000040
IL_0027 28 87 07 00 06 call 0x6000787
IL_002c 28 89 07 00 06 call 0x6000789
IL_0031 2c 05 brfalse.s 5 (IL_0038)
IL_0033 28 d9 18 00 06 call 0x60018D9
IL_0038 02 ldarg.0
IL_0039 03 ldarg.1
IL_003a 28 1e 01 00 2b call 0x2B00011E
IL_003f 73 ad 01 00 0a newobj 0xA0001AD
IL_0044 7d b5 01 00 0a stfld 0xA0001B5
IL_0049 02 ldarg.0
IL_004a 03 ldarg.1
IL_004b 8e ldlen
IL_004c 69 conv.i4
IL_004d 7d b9 01 00 0a stfld 0xA0001B9
IL_0052 2a ret
INLINER impTokenLookupContextHandle for System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this is 0x00007FF9F129E501.
*************** In fgFindBasicBlocks() for System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
Jump targets:
IL_000b
IL_0038
New Basic Block BB15 [0014] created.
BB15 [000..003)
New Basic Block BB16 [0015] created.
BB16 [003..00B)
New Basic Block BB17 [0016] created.
BB17 [00B..01C)
New Basic Block BB18 [0017] created.
BB18 [01C..033)
New Basic Block BB19 [0018] created.
BB19 [033..038)
New Basic Block BB20 [0019] created.
BB20 [038..053)
Basic block list for 'System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB15 [0014] 1 1 [000..003)-> BB17 ( cond )
BB16 [0015] 1 1 [003..00B) (return)
BB17 [0016] 1 1 [00B..01C)-> BB20 ( cond )
BB18 [0017] 1 1 [01C..033)-> BB20 ( cond )
BB19 [0018] 1 1 [033..038)
BB20 [0019] 3 1 [038..053) (return)
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Inline @[000009] Starting PHASE Pre-import
*************** Inline @[000009] Finishing PHASE Pre-import
*************** Inline @[000009] Starting PHASE Importation
*************** In impImport() for System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
impImportBlockPending for BB15
Importing BB15 (PC=000) of 'System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this'
[ 0] 0 (0x000) ldarg.1
[ 1] 1 (0x001) brtrue.s
[000129] ------------ * JTRUE void
[000128] ------------ \--* NE int
[000016] ------------ +--* LCL_VAR ref V06 tmp2
[000127] ------------ \--* CNS_INT ref null
impImportBlockPending for BB16
impImportBlockPending for BB17
Importing BB17 (PC=011) of 'System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this'
[ 0] 11 (0x00b) ldtoken
** Note: inlinee IL was partially imported -- imported 3 of 83 bytes of method IL
*************** Inline @[000009] Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB15 [0014] 1 1 [000..003)-> BB17 ( cond ) i
BB16 [0015] 1 1 [003..00B) (return)
BB17 [0016] 1 1 [00B..01C)-> BB20 ( cond )
BB18 [0017] 1 1 [01C..033)-> BB20 ( cond )
BB19 [0018] 1 1 [033..038)
BB20 [0019] 3 1 [038..053) (return)
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB15 [000..003) -> BB17 (cond), preds={} succs={BB16,BB17}
***** BB15
[000129] ------------ * JTRUE void
[000128] ------------ \--* NE int
[000016] ------------ +--* LCL_VAR ref V06 tmp2
[000127] ------------ \--* CNS_INT ref null
------------ BB16 [003..00B) (return), preds={} succs={}
------------ BB17 [00B..01C) -> BB20 (cond), preds={} succs={BB18,BB20}
------------ BB18 [01C..033) -> BB20 (cond), preds={} succs={BB19,BB20}
------------ BB19 [033..038), preds={} succs={BB20}
------------ BB20 [038..053) (return), preds={} succs={}
-------------------------------------------------------------------------------------------------------------------
*************** Inline @[000009] Starting PHASE Indirect call transform
-- no candidates to transform
*************** Inline @[000009] Finishing PHASE Indirect call transform [no changes]
*************** Inline @[000009] Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Inline @[000009] Finishing PHASE Expand patchpoints [no changes]
*************** Inline @[000009] Starting PHASE Post-import
*************** Inline @[000009] Finishing PHASE Post-import
INLINER: during 'fgInline' result 'failed this call site' reason 'runtime dictionary lookup' for 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this' calling 'System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this'
INLINER: during 'fgInline' result 'failed this call site' reason 'runtime dictionary lookup'
Expanding INLINE_CANDIDATE in statement STMT00010 in BB10:
STMT00010 (IL ???... ???)
[000053] I-C-G------- * CALL int System.Span`1[__Canon][System.__Canon].get_Length (exactContextHnd=0x00007FF9F129E501)
[000052] ------------ this in rcx +--* ADDR byref
[000051] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000087] ------------ arg1 \--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000086] ------------ \--* LCL_VAR long V11 tmp7
thisArg: is a constant is byref to a struct local
[000052] ------------ * ADDR byref
[000051] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
INLINER: inlineInfo.tokenLookupContextHandle for System.Span`1[__Canon][System.__Canon]:get_Length():int:this set to 0x00007FF9F129E501:
Invoking compiler for the inlinee method System.Span`1[__Canon][System.__Canon]:get_Length():int:this :
IL to import:
IL_0000 02 ldarg.0
IL_0001 7b b9 01 00 0a ldfld 0xA0001B9
IL_0006 2a ret
INLINER impTokenLookupContextHandle for System.Span`1[__Canon][System.__Canon]:get_Length():int:this is 0x00007FF9F129E501.
*************** In fgFindBasicBlocks() for System.Span`1[__Canon][System.__Canon]:get_Length():int:this
Jump targets:
none
New Basic Block BB21 [0020] created.
BB21 [000..007)
Basic block list for 'System.Span`1[__Canon][System.__Canon]:get_Length():int:this'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB21 [0020] 1 1 [000..007) (return)
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Inline @[000053] Starting PHASE Pre-import
*************** Inline @[000053] Finishing PHASE Pre-import
*************** Inline @[000053] Starting PHASE Importation
*************** In impImport() for System.Span`1[__Canon][System.__Canon]:get_Length():int:this
impImportBlockPending for BB21
Importing BB21 (PC=000) of 'System.Span`1[__Canon][System.__Canon]:get_Length():int:this'
[ 0] 0 (0x000) ldarg.0
[ 1] 1 (0x001) ldfld 0A0001B9
[ 1] 6 (0x006) ret
Inlinee Return expression (before normalization) =>
[000132] ------------ * FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
Inlinee Return expression (after normalization) =>
[000132] ------------ * FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
** Note: inlinee IL was partially imported -- imported 0 of 7 bytes of method IL
*************** Inline @[000053] Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB21 [0020] 1 1 [000..007) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB21 [000..007) (return), preds={} succs={}
-------------------------------------------------------------------------------------------------------------------
*************** Inline @[000053] Starting PHASE Indirect call transform
-- no candidates to transform
*************** Inline @[000053] Finishing PHASE Indirect call transform [no changes]
*************** Inline @[000053] Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Inline @[000053] Finishing PHASE Expand patchpoints [no changes]
*************** Inline @[000053] Starting PHASE Post-import
*************** In fgRemoveEmptyBlocks
*************** Inline @[000053] Finishing PHASE Post-import
----------- Statements (and blocks) added due to the inlining of call [000053] -----------
Arguments setup:
Inlinee method body:fgInlineAppendStatements: no gc ref inline locals.
Return expression for call at [000053] is
[000132] ------------ * FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
Successfully inlined System.Span`1[__Canon][System.__Canon]:get_Length():int:this (7 IL bytes) (depth 1) [below ALWAYS_INLINE size]
--------------------------------------------------------------------------------------------
INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this' calling 'System.Span`1[__Canon][System.__Canon]:get_Length():int:this'
INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size'
Replacing the return expression placeholder [000088] with [000132]
[000088] --C--------- * RET_EXPR int (inl return from call [000132])
Inserting the inline return expression
[000132] ------------ * FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
**************** Inline Tree
Inlines into 0600164E System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
[0 IL=0016 TR=000009 060013F3] [FAILED: runtime dictionary lookup] System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
[1 IL=0046 TR=000053 060013F8] [below ALWAYS_INLINE size] System.Span`1[__Canon][System.__Canon]:get_Length():int:this
Budget: initialTime=225, finalTime=211, initialBudget=2250, currentBudget=2250
Budget: initialSize=1385, finalSize=1385
*************** Finishing PHASE Morph - Inlining
Trees after Morph - Inlining
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB06 [0005] 0 1 [???..???)-> BB09 ( cond ) i
BB07 [0006] 0 0.80 [???..???)-> BB09 ( cond ) i
BB08 [0007] 0 0.80 [???..???)-> BB05 (always) i
BB09 [0008] 0 0.20 [???..???) i
BB05 [0004] 1 1 [015..019)-> BB03 (always) i label target
BB02 [0001] 1 1 [019..02B) i bwd bwd-target
BB03 [0002] 2 1 [02B..???) i bwd
BB11 [0010] 0 1 [???..???)-> BB14 ( cond ) i
BB12 [0011] 0 0.80 [???..???)-> BB14 ( cond ) i
BB13 [0012] 0 0.80 [???..???)-> BB10 (always) i
BB14 [0013] 0 0.20 [???..???) i
BB10 [0009] 1 1 [???..035)-> BB02 ( cond ) i label target bwd
BB04 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015), preds={} succs={BB06}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
------------ BB06 [???..???) -> BB09 (cond), preds={} succs={BB07,BB09}
***** BB06
STMT00015 (IL ???... ???)
[000115] ------------ * JTRUE void
[000042] ------------ \--* LE int
[000040] ------------ +--* IND long
[000039] ------------ | \--* ADD long
[000026] ------------ | +--* LCL_VAR long V07 tmp3
[000038] ------------ | \--* CNS_INT long 8
[000041] ------------ \--* CNS_INT long 96
------------ BB07 [???..???) -> BB09 (cond), preds={} succs={BB08,BB09}
***** BB07
STMT00016 (IL ???... ???)
[000116] ------------ * JTRUE void
[000033] ------------ \--* EQ int
[000029] n----------- +--* IND long
[000028] ------------ | \--* ADD long
[000025] ------------ | +--* LCL_VAR long V07 tmp3
[000027] ------------ | \--* CNS_INT long 96
[000032] ------------ \--* CNS_INT long 0
------------ BB08 [???..???) -> BB05 (always), preds={} succs={BB05}
***** BB08
STMT00017 (IL ???... ???)
[000118] -A---------- * ASG long
[000117] D------N---- +--* LCL_VAR long V08 tmp4
[000034] n----------- \--* IND long
[000035] ------------ \--* ADD long
[000036] ------------ +--* LCL_VAR long V07 tmp3
[000037] ------------ \--* CNS_INT long 96
------------ BB09 [???..???), preds={} succs={BB05}
***** BB09
STMT00018 (IL ???... ???)
[000120] -AC-G------- * ASG long
[000119] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] ------------ arg0 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB03 (always), preds={} succs={BB03}
***** BB05
STMT00005 (IL ???... ???)
[000009] --C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
***** BB05
STMT00006 (IL 0x015... ???)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
------------ BB02 [019..02B), preds={} succs={BB03}
***** BB02
STMT00012 (IL 0x019...0x022)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* FIELD int _length
[000092] ------------ | | \--* ADDR byref
[000091] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* FIELD byref _pointer
[000096] ------------ | | \--* ADDR byref
[000095] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
***** BB02
STMT00013 (IL 0x027...0x02A)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
------------ BB03 [02B..???), preds={} succs={BB11}
***** BB03
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
***** BB03
STMT00008 (IL ???... ???)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
------------ BB11 [???..???) -> BB14 (cond), preds={} succs={BB12,BB14}
***** BB11
STMT00019 (IL ???... ???)
[000121] ------------ * JTRUE void
[000083] ------------ \--* LE int
[000081] ------------ +--* IND long
[000080] ------------ | \--* ADD long
[000067] ------------ | +--* LCL_VAR long V10 tmp6
[000079] ------------ | \--* CNS_INT long 8
[000082] ------------ \--* CNS_INT long 96
------------ BB12 [???..???) -> BB14 (cond), preds={} succs={BB13,BB14}
***** BB12
STMT00020 (IL ???... ???)
[000122] ------------ * JTRUE void
[000074] ------------ \--* EQ int
[000070] n----------- +--* IND long
[000069] ------------ | \--* ADD long
[000066] ------------ | +--* LCL_VAR long V10 tmp6
[000068] ------------ | \--* CNS_INT long 96
[000073] ------------ \--* CNS_INT long 0
------------ BB13 [???..???) -> BB10 (always), preds={} succs={BB10}
***** BB13
STMT00021 (IL ???... ???)
[000124] -A---------- * ASG long
[000123] D------N---- +--* LCL_VAR long V11 tmp7
[000075] n----------- \--* IND long
[000076] ------------ \--* ADD long
[000077] ------------ +--* LCL_VAR long V10 tmp6
[000078] ------------ \--* CNS_INT long 96
------------ BB14 [???..???), preds={} succs={BB10}
***** BB14
STMT00022 (IL ???... ???)
[000126] -AC-G------- * ASG long
[000125] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] ------------ arg0 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB10 [???..035) -> BB02 (cond), preds={} succs={BB04,BB02}
***** BB10
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000132] ------------ \--* FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16> V02 loc1
------------ BB04 [035..037) (return), preds={} succs={}
***** BB04
STMT00014 (IL 0x035...0x036)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB06 [0005] 0 1 [???..???)-> BB09 ( cond ) i
BB07 [0006] 0 0.80 [???..???)-> BB09 ( cond ) i
BB08 [0007] 0 0.80 [???..???)-> BB05 (always) i
BB09 [0008] 0 0.20 [???..???) i
BB05 [0004] 1 1 [015..019)-> BB03 (always) i label target
BB02 [0001] 1 1 [019..02B) i bwd bwd-target
BB03 [0002] 2 1 [02B..???) i bwd
BB11 [0010] 0 1 [???..???)-> BB14 ( cond ) i
BB12 [0011] 0 0.80 [???..???)-> BB14 ( cond ) i
BB13 [0012] 0 0.80 [???..???)-> BB10 (always) i
BB14 [0013] 0 0.20 [???..???) i
BB10 [0009] 1 1 [???..035)-> BB02 ( cond ) i label target bwd
BB04 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB06 [0005] 0 1 [???..???)-> BB09 ( cond ) i
BB07 [0006] 0 0.80 [???..???)-> BB09 ( cond ) i
BB08 [0007] 0 0.80 [???..???)-> BB05 (always) i
BB09 [0008] 0 0.20 [???..???) i
BB05 [0004] 1 1 [015..019)-> BB03 (always) i label target
BB02 [0001] 1 1 [019..02B) i bwd bwd-target
BB03 [0002] 2 1 [02B..???) i bwd
BB11 [0010] 0 1 [???..???)-> BB14 ( cond ) i
BB12 [0011] 0 0.80 [???..???)-> BB14 ( cond ) i
BB13 [0012] 0 0.80 [???..???)-> BB10 (always) i
BB14 [0013] 0 0.20 [???..???) i
BB10 [0009] 1 1 [???..035)-> BB02 ( cond ) i label target bwd
BB04 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
Renumber BB06 to BB02
Renumber BB07 to BB03
Renumber BB08 to BB04
Renumber BB09 to BB05
Renumber BB05 to BB06
Renumber BB02 to BB07
Renumber BB03 to BB08
Renumber BB11 to BB09
Renumber BB12 to BB10
Renumber BB13 to BB11
Renumber BB14 to BB12
Renumber BB10 to BB13
Renumber BB04 to BB14
*************** After renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB02 [0005] 0 1 [???..???)-> BB05 ( cond ) i
BB03 [0006] 0 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 0 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 0 0.20 [???..???) i
BB06 [0004] 1 1 [015..019)-> BB08 (always) i label target
BB07 [0001] 1 1 [019..02B) i bwd bwd-target
BB08 [0002] 2 1 [02B..???) i bwd
BB09 [0010] 0 1 [???..???)-> BB12 ( cond ) i
BB10 [0011] 0 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 0 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 0 0.20 [???..???) i
BB13 [0009] 1 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
New BlockSet epoch 2, # of blocks (including unused BB00): 15, bitset array size: 1 (short)
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i
BB02 [0005] 0 1 [???..???)-> BB05 ( cond ) i
BB03 [0006] 0 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 0 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 0 0.20 [???..???) i
BB06 [0004] 1 1 [015..019)-> BB08 (always) i label target
BB07 [0001] 1 1 [019..02B) i bwd bwd-target
BB08 [0002] 2 1 [02B..???) i bwd
BB09 [0010] 0 1 [???..???)-> BB12 ( cond ) i
BB10 [0011] 0 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 0 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 0 0.20 [???..???) i
BB13 [0009] 1 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i label target
BB02 [0005] 1 BB01 1 [???..???)-> BB05 ( cond ) i
BB03 [0006] 1 BB02 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 1 BB03 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 2 BB02,BB03 0.20 [???..???) i label target
BB06 [0004] 2 BB04,BB05 1 [015..019)-> BB08 (always) i label target
BB07 [0001] 1 BB13 1 [019..02B) i label target bwd bwd-target
BB08 [0002] 2 BB06,BB07 1 [02B..???) i label target bwd
BB09 [0010] 1 BB08 1 [???..???)-> BB12 ( cond ) i
BB10 [0011] 1 BB09 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 1 BB10 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 2 BB09,BB10 0.20 [???..???) i label target
BB13 [0009] 2 BB11,BB12 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 BB13 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Merge throw blocks
*************** In fgTailMergeThrows
Method does not have multiple noreturn calls.
*************** Finishing PHASE Merge throw blocks [no changes]
*************** Starting PHASE Update flow graph early pass
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015) i label target
BB02 [0005] 1 BB01 1 [???..???)-> BB05 ( cond ) i
BB03 [0006] 1 BB02 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 1 BB03 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 2 BB02,BB03 0.20 [???..???) i label target
BB06 [0004] 2 BB04,BB05 1 [015..019)-> BB08 (always) i label target
BB07 [0001] 1 BB13 1 [019..02B) i label target bwd bwd-target
BB08 [0002] 2 BB06,BB07 1 [02B..???) i label target bwd
BB09 [0010] 1 BB08 1 [???..???)-> BB12 ( cond ) i
BB10 [0011] 1 BB09 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 1 BB10 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 2 BB09,BB10 0.20 [???..???) i label target
BB13 [0009] 2 BB11,BB12 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 BB13 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
Compacting blocks BB01 and BB02:
*************** In fgDebugCheckBBlist
Compacting blocks BB08 and BB09:
*************** In fgDebugCheckBBlist
After updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB05 ( cond ) i label target
BB03 [0006] 1 BB01 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 1 BB03 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 2 BB01,BB03 0.20 [???..???) i label target
BB06 [0004] 2 BB04,BB05 1 [015..019)-> BB08 (always) i label target
BB07 [0001] 1 BB13 1 [019..02B) i label target bwd bwd-target
BB08 [0002] 2 BB06,BB07 1 [02B..???)-> BB12 ( cond ) i label target bwd
BB10 [0011] 1 BB08 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 1 BB10 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 2 BB08,BB10 0.20 [???..???) i label target
BB13 [0009] 2 BB11,BB12 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 BB13 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Update flow graph early pass
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
lvaTable before fgPromoteStructs
; Initial local variable assignments
;
; V00 this ref this class-hnd
; V01 loc0 ref ld-addr-op class-hnd
; V02 loc1 struct <System.Span`1[__Canon], 16> ld-addr-op
; V03 loc2 int
; V04 OutArgs lclBlk <na> "OutgoingArgSpace"
; V05 tmp1 long "impRuntimeLookup slot"
; V06 tmp2 ref class-hnd "impAppendStmt"
; V07 tmp3 long "impRuntimeLookup indirectOffset"
; V08 tmp4 long "spilling Runtime Lookup tree"
; V09 tmp5 long "impRuntimeLookup slot"
; V10 tmp6 long "impRuntimeLookup indirectOffset"
; V11 tmp7 long "spilling Runtime Lookup tree"
Promoting struct local V02 (System.Span`1[__Canon]):
lvaGrabTemp returning 12 (V12 tmp8) (a long lifetime temp) called for field V02._pointer (fldOffset=0x0).
lvaGrabTemp returning 13 (V13 tmp9) (a long lifetime temp) called for field V02._length (fldOffset=0x8).
lvaTable after fgPromoteStructs
; Initial local variable assignments
;
; V00 this ref this class-hnd
; V01 loc0 ref ld-addr-op class-hnd
; V02 loc1 struct <System.Span`1[__Canon], 16> ld-addr-op
; V03 loc2 int
; V04 OutArgs lclBlk <na> "OutgoingArgSpace"
; V05 tmp1 long "impRuntimeLookup slot"
; V06 tmp2 ref class-hnd "impAppendStmt"
; V07 tmp3 long "impRuntimeLookup indirectOffset"
; V08 tmp4 long "spilling Runtime Lookup tree"
; V09 tmp5 long "impRuntimeLookup slot"
; V10 tmp6 long "impRuntimeLookup indirectOffset"
; V11 tmp7 long "spilling Runtime Lookup tree"
; V12 tmp8 byref V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)"
; V13 tmp9 int V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)"
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00002 (IL 0x008...0x016)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008... ???)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
LocalAddressVisitor visiting statement:
STMT00003 (IL ???... ???)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
LocalAddressVisitor visiting statement:
STMT00015 (IL ???... ???)
[000115] ------------ * JTRUE void
[000042] ------------ \--* LE int
[000040] ------------ +--* IND long
[000039] ------------ | \--* ADD long
[000026] ------------ | +--* LCL_VAR long V07 tmp3
[000038] ------------ | \--* CNS_INT long 8
[000041] ------------ \--* CNS_INT long 96
LocalAddressVisitor visiting statement:
STMT00016 (IL ???... ???)
[000116] ------------ * JTRUE void
[000033] ------------ \--* EQ int
[000029] n----------- +--* IND long
[000028] ------------ | \--* ADD long
[000025] ------------ | +--* LCL_VAR long V07 tmp3
[000027] ------------ | \--* CNS_INT long 96
[000032] ------------ \--* CNS_INT long 0
LocalAddressVisitor visiting statement:
STMT00017 (IL ???... ???)
[000118] -A---------- * ASG long
[000117] D------N---- +--* LCL_VAR long V08 tmp4
[000034] n----------- \--* IND long
[000035] ------------ \--* ADD long
[000036] ------------ +--* LCL_VAR long V07 tmp3
[000037] ------------ \--* CNS_INT long 96
LocalAddressVisitor visiting statement:
STMT00018 (IL ???... ???)
[000120] -AC-G------- * ASG long
[000119] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] ------------ arg0 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
LocalAddressVisitor visiting statement:
STMT00005 (IL ???... ???)
[000009] --C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
Local V12 should not be enregistered because: it is address exposed
Local V13 should not be enregistered because: it is address exposed
Local V02 should not be enregistered because: it is address exposed
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x015... ???)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00012 (IL 0x019...0x022)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* FIELD int _length
[000092] ------------ | | \--* ADDR byref
[000091] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| | \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| | \--* int V02._length (offs=0x08) -> V13 tmp9
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* FIELD byref _pointer
[000096] ------------ | | \--* ADDR byref
[000095] -------N---- | | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| | \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| | \--* int V02._length (offs=0x08) -> V13 tmp9
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
Replacing the field in promoted struct with local var V13
Replacing the field in promoted struct with local var V12
LocalAddressVisitor modified statement:
STMT00012 (IL 0x019...0x022)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00013 (IL 0x027...0x02A)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
LocalAddressVisitor visiting statement:
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
LocalAddressVisitor visiting statement:
STMT00008 (IL ???... ???)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
LocalAddressVisitor visiting statement:
STMT00019 (IL ???... ???)
[000121] ------------ * JTRUE void
[000083] ------------ \--* LE int
[000081] ------------ +--* IND long
[000080] ------------ | \--* ADD long
[000067] ------------ | +--* LCL_VAR long V10 tmp6
[000079] ------------ | \--* CNS_INT long 8
[000082] ------------ \--* CNS_INT long 96
LocalAddressVisitor visiting statement:
STMT00020 (IL ???... ???)
[000122] ------------ * JTRUE void
[000074] ------------ \--* EQ int
[000070] n----------- +--* IND long
[000069] ------------ | \--* ADD long
[000066] ------------ | +--* LCL_VAR long V10 tmp6
[000068] ------------ | \--* CNS_INT long 96
[000073] ------------ \--* CNS_INT long 0
LocalAddressVisitor visiting statement:
STMT00021 (IL ???... ???)
[000124] -A---------- * ASG long
[000123] D------N---- +--* LCL_VAR long V11 tmp7
[000075] n----------- \--* IND long
[000076] ------------ \--* ADD long
[000077] ------------ +--* LCL_VAR long V10 tmp6
[000078] ------------ \--* CNS_INT long 96
LocalAddressVisitor visiting statement:
STMT00022 (IL ???... ???)
[000126] -AC-G------- * ASG long
[000125] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] ------------ arg0 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
LocalAddressVisitor visiting statement:
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000132] ------------ \--* FIELD int _length
[000130] ------------ \--* ADDR byref
[000131] -------N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
\--* byref V02._pointer (offs=0x00) -> V12 tmp8
\--* int V02._length (offs=0x08) -> V13 tmp9
Replacing the field in promoted struct with local var V13
LocalAddressVisitor modified statement:
STMT00011 (IL ???... ???)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000132] ------------ \--* LCL_VAR int (AX) V13 tmp9
LocalAddressVisitor visiting statement:
STMT00014 (IL 0x035...0x036)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
*************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
Morphing BB01 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB01, STMT00000 (before)
[000004] IA---------- * ASG struct (init)
[000003] -------N---- +--* BLK struct<8>
[000001] ------------ | \--* ADDR byref
[000000] -------N---- | \--* LCL_VAR ref V01 loc0
[000002] ------------ \--* CNS_INT int 0
fgMorphBlkNode for dst tree, before:
[000003] n----+-N---- * BLK struct<8>
[000001] -----+------ \--* ADDR byref
[000000] D----+-N---- \--* LCL_VAR ref V01 loc0
fgMorphBlkNode after:
[000003] n----+-N---- * BLK struct<8>
[000001] -----+------ \--* ADDR byref
[000000] D----+-N---- \--* LCL_VAR ref V01 loc0
fgMorphInitBlock:fgMorphOneAsgBlock (after):
[000004] -A---------- * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
using oneAsgTree.
GenTreeNode creates assertion:
[000004] -A---------- * ASG ref
In BB01 New Local Constant Assertion: V01 == null index=#01, mask=0000000000000001
fgMorphTree BB01, STMT00000 (after)
[000004] -A---+------ * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
fgMorphTree BB01, STMT00002 (before)
[000015] -A-XG------- * ASG ref
[000014] D------N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG------- \--* FIELD ref _array
[000007] ------------ \--* LCL_VAR ref V00 this
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000008] ---XG------- * IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
GenTreeNode creates assertion:
[000008] ---XG------- * IND ref
In BB01 New Local Constant Assertion: V00 != null index=#02, mask=0000000000000002
fgMorphTree BB01, STMT00002 (after)
[000015] -A-XG+------ * ASG ref
[000014] D----+-N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG+------ \--* IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
fgMorphTree BB01, STMT00001 (before)
[000013] -A-X-------- * ASG long
[000012] D------N---- +--* LCL_VAR long V05 tmp1
[000011] #--X-------- \--* IND long
[000010] !----------- \--* LCL_VAR ref V00 this
Non-null prop for index #02 in BB01:
[000011] #--X-------- * IND long
fgMorphTree BB01, STMT00003 (before)
[000024] -A---------- * ASG long
[000023] D------N---- +--* LCL_VAR long V07 tmp3
[000022] n----------- \--* IND long
[000021] #----------- \--* IND long
[000020] ------------ \--* ADD long
[000018] ------------ +--* LCL_VAR long V05 tmp1
[000019] ------------ \--* CNS_INT long 56
fgMorphTree BB01, STMT00015 (before)
[000115] ------------ * JTRUE void
[000042] ------------ \--* LE int
[000040] ------------ +--* IND long
[000039] ------------ | \--* ADD long
[000026] ------------ | +--* LCL_VAR long V07 tmp3
[000038] ------------ | \--* CNS_INT long 8
[000041] ------------ \--* CNS_INT long 96
Morphing BB03 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB03, STMT00016 (before)
[000116] ------------ * JTRUE void
[000033] ------------ \--* EQ int
[000029] n----------- +--* IND long
[000028] ------------ | \--* ADD long
[000025] ------------ | +--* LCL_VAR long V07 tmp3
[000027] ------------ | \--* CNS_INT long 96
[000032] ------------ \--* CNS_INT long 0
Morphing BB04 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB04, STMT00017 (before)
[000118] -A---------- * ASG long
[000117] D------N---- +--* LCL_VAR long V08 tmp4
[000034] n----------- \--* IND long
[000035] ------------ \--* ADD long
[000036] ------------ +--* LCL_VAR long V07 tmp3
[000037] ------------ \--* CNS_INT long 96
Morphing BB05 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB05, STMT00018 (before)
[000120] -AC-G------- * ASG long
[000119] D------N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] ------------ arg0 +--* LCL_VAR long V05 tmp1
[000030] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
Initializing arg info for 31.CALL:
ArgTable for 31.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 17.LCL_VAR long (By ref), 1 reg: rcx, align=1]
fgArgTabEntry[arg 1 30.CNS_INT long (By ref), 1 reg: rdx, align=1]
Morphing args for 31.CALL:
argSlots=2, preallocatedArgCount=4, nextSlotNum=4, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000017] -----+------ * LCL_VAR long V05 tmp1
Replaced with placeholder node:
[000136] ----------L- * ARGPLACE long
Deferred argument ('rdx'):
[000030] -----+------ * CNS_INT(h) long 0x7ff9f1337fe8 token
Replaced with placeholder node:
[000137] ----------L- * ARGPLACE long
Shuffled argument table: rcx rdx
ArgTable for 31.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 17.LCL_VAR long (By ref), 1 reg: rcx, align=1, lateArgInx=0, processed]
fgArgTabEntry[arg 1 30.CNS_INT long (By ref), 1 reg: rdx, align=1, lateArgInx=1, processed]
fgMorphTree BB05, STMT00018 (after)
[000120] -AC-G+------ * ASG long
[000119] D----+-N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] -----+------ arg0 in rcx +--* LCL_VAR long V05 tmp1
[000030] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
Morphing BB06 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB06, STMT00005 (before)
[000009] --C-G------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] ------------ this in rcx +--* ADDR byref
[000005] -------N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000046] ------------ arg1 +--* RUNTIMELOOKUP long 0x7ff9f129e500 class
[000045] ------------ | \--* LCL_VAR long V08 tmp4
[000016] ------------ arg2 \--* LCL_VAR ref V06 tmp2
Initializing arg info for 9.CALL:
ArgTable for 9.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.ADDR byref (By ref), 1 reg: rcx, align=1]
fgArgTabEntry[arg 1 46.RUNTIMELOOKUP long (By ref), 1 reg: rdx, align=1]
fgArgTabEntry[arg 2 16.LCL_VAR ref (By ref), 1 reg: r8, align=1]
Morphing args for 9.CALL:
argSlots=3, preallocatedArgCount=4, nextSlotNum=4, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] -----+------ * ADDR byref
[000005] ----G+-N---- \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
\--* byref V02._pointer (offs=0x00) -> V12 tmp8
\--* int V02._length (offs=0x08) -> V13 tmp9
Replaced with placeholder node:
[000138] ----------L- * ARGPLACE byref
Deferred argument ('rdx'):
[000045] -----+------ * LCL_VAR long V08 tmp4
Replaced with placeholder node:
[000139] ----------L- * ARGPLACE long
Deferred argument ('r8'):
[000016] -----+------ * LCL_VAR ref V06 tmp2
Replaced with placeholder node:
[000140] ----------L- * ARGPLACE ref
Shuffled argument table: rcx rdx r8
ArgTable for 9.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.ADDR byref (By ref), 1 reg: rcx, align=1, lateArgInx=0, processed]
fgArgTabEntry[arg 1 45.LCL_VAR long (By ref), 1 reg: rdx, align=1, lateArgInx=1, processed]
fgArgTabEntry[arg 2 16.LCL_VAR ref (By ref), 1 reg: r8, align=1, lateArgInx=2, processed]
fgMorphTree BB06, STMT00005 (after)
[000009] --CXG+------ * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] -----+------ this in rcx +--* ADDR byref
[000005] ----G+-N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000045] -----+------ arg1 in rdx +--* LCL_VAR long V08 tmp4
[000016] -----+------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
fgMorphTree BB06, STMT00006 (before)
[000049] -A---------- * ASG int
[000048] D------N---- +--* LCL_VAR int V03 loc2
[000047] ------------ \--* CNS_INT int 0
GenTreeNode creates assertion:
[000049] -A---------- * ASG int
In BB06 New Local Constant Assertion: V03 == 0 index=#01, mask=0000000000000001
Morphing BB07 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB07, STMT00012 (before)
[000107] IA-X-------- * ASG struct (init)
[000106] ---X---N---- +--* BLK struct<8>
[000104] ---X-------- | \--* COMMA byref
[000098] ---X-------- | +--* ARR_BOUNDS_CHECK_Rng void
[000093] ------------ | | +--* LCL_VAR int V03 loc2
[000097] ------------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ------------ | \--* ADD byref
[000102] ------------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] ------------ | \--* MUL long
[000099] ------------ | +--* CAST long <- int
[000094] ------------ | | \--* LCL_VAR int V03 loc2
[000100] ------------ | \--* CNS_INT int 8
[000105] ------------ \--* CNS_INT int 0
fgMorphBlkNode for dst tree, before:
[000106] ---XG+-N---- * BLK struct<8>
[000104] ---XG+------ \--* COMMA byref
[000098] ---XG+------ +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ \--* ADD byref
[000102] ----G+------ +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ \--* LSH long
[000099] -----+------ +--* CAST long <- int
[000094] -----+------ | \--* LCL_VAR int V03 loc2
[000100] -----+------ \--* CNS_INT int 3
fgMorphBlkNode after:
[000106] ---XG+-N---- * BLK struct<8>
[000104] ---XG+------ \--* COMMA byref
[000098] ---XG+------ +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ \--* ADD byref
[000102] ----G+------ +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ \--* LSH long
[000099] -----+------ +--* CAST long <- int
[000094] -----+------ | \--* LCL_VAR int V03 loc2
[000100] -----+------ \--* CNS_INT int 3
fgMorphInitBlock:
fgMorphTree BB07, STMT00012 (after)
[000107] IA-XG+------ * ASG struct (init)
[000106] ---XG+-N---- +--* BLK struct<8>
[000104] ---XG+------ | \--* COMMA byref
[000098] ---XG+------ | +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ | \--* ADD byref
[000102] ----G+------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ | \--* LSH long
[000099] -----+------ | +--* CAST long <- int
[000094] -----+------ | | \--* LCL_VAR int V03 loc2
[000100] -----+------ | \--* CNS_INT int 3
[000105] -----+------ \--* CNS_INT int 0
fgMorphTree BB07, STMT00013 (before)
[000112] -A---------- * ASG int
[000111] D------N---- +--* LCL_VAR int V03 loc2
[000110] ------------ \--* ADD int
[000108] ------------ +--* LCL_VAR int V03 loc2
[000109] ------------ \--* CNS_INT int 1
Morphing BB08 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB08, STMT00007 (before)
[000057] -A-X-------- * ASG long
[000056] D------N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-------- \--* IND long
[000054] !----------- \--* LCL_VAR ref V00 this
GenTreeNode creates assertion:
[000055] #--X-------- * IND long
In BB08 New Local Constant Assertion: V00 != null index=#01, mask=0000000000000001
fgMorphTree BB08, STMT00008 (before)
[000065] -A---------- * ASG long
[000064] D------N---- +--* LCL_VAR long V10 tmp6
[000063] n----------- \--* IND long
[000062] #----------- \--* IND long
[000061] ------------ \--* ADD long
[000059] ------------ +--* LCL_VAR long V09 tmp5
[000060] ------------ \--* CNS_INT long 56
fgMorphTree BB08, STMT00019 (before)
[000121] ------------ * JTRUE void
[000083] ------------ \--* LE int
[000081] ------------ +--* IND long
[000080] ------------ | \--* ADD long
[000067] ------------ | +--* LCL_VAR long V10 tmp6
[000079] ------------ | \--* CNS_INT long 8
[000082] ------------ \--* CNS_INT long 96
Morphing BB10 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB10, STMT00020 (before)
[000122] ------------ * JTRUE void
[000074] ------------ \--* EQ int
[000070] n----------- +--* IND long
[000069] ------------ | \--* ADD long
[000066] ------------ | +--* LCL_VAR long V10 tmp6
[000068] ------------ | \--* CNS_INT long 96
[000073] ------------ \--* CNS_INT long 0
Morphing BB11 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB11, STMT00021 (before)
[000124] -A---------- * ASG long
[000123] D------N---- +--* LCL_VAR long V11 tmp7
[000075] n----------- \--* IND long
[000076] ------------ \--* ADD long
[000077] ------------ +--* LCL_VAR long V10 tmp6
[000078] ------------ \--* CNS_INT long 96
Morphing BB12 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB12, STMT00022 (before)
[000126] -AC-G------- * ASG long
[000125] D------N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] ------------ arg0 +--* LCL_VAR long V09 tmp5
[000071] ------------ arg1 \--* CNS_INT(h) long 0x7ff9f1337fe8 token
Initializing arg info for 72.CALL:
ArgTable for 72.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 58.LCL_VAR long (By ref), 1 reg: rcx, align=1]
fgArgTabEntry[arg 1 71.CNS_INT long (By ref), 1 reg: rdx, align=1]
Morphing args for 72.CALL:
argSlots=2, preallocatedArgCount=4, nextSlotNum=4, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000058] -----+------ * LCL_VAR long V09 tmp5
Replaced with placeholder node:
[000141] ----------L- * ARGPLACE long
Deferred argument ('rdx'):
[000071] -----+------ * CNS_INT(h) long 0x7ff9f1337fe8 token
Replaced with placeholder node:
[000142] ----------L- * ARGPLACE long
Shuffled argument table: rcx rdx
ArgTable for 72.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 58.LCL_VAR long (By ref), 1 reg: rcx, align=1, lateArgInx=0, processed]
fgArgTabEntry[arg 1 71.CNS_INT long (By ref), 1 reg: rdx, align=1, lateArgInx=1, processed]
fgMorphTree BB12, STMT00022 (after)
[000126] -AC-G+------ * ASG long
[000125] D----+-N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] -----+------ arg0 in rcx +--* LCL_VAR long V09 tmp5
[000071] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
Morphing BB13 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB13, STMT00011 (before)
[000090] --C--------- * JTRUE void
[000089] --C--------- \--* LT int
[000050] ------------ +--* LCL_VAR int V03 loc2
[000132] ------------ \--* LCL_VAR int (AX) V13 tmp9
Morphing BB14 of 'System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this'
fgMorphTree BB14, STMT00014 (before)
[000114] ------------ * RETURN ref
[000113] ------------ \--* LCL_VAR ref V01 loc0
*************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB05 ( cond ) i label target
BB03 [0006] 1 BB01 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 1 BB03 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 2 BB01,BB03 0.20 [???..???) i label target hascall
BB06 [0004] 2 BB04,BB05 1 [015..019)-> BB08 (always) i label target hascall
BB07 [0001] 1 BB13 1 [019..02B) i label target bwd bwd-target
BB08 [0002] 2 BB06,BB07 1 [02B..???)-> BB12 ( cond ) i label target bwd
BB10 [0011] 1 BB08 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 1 BB10 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 2 BB08,BB10 0.20 [???..???) i label target hascall
BB13 [0009] 2 BB11,BB12 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 BB13 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB05 (cond), preds={} succs={BB03,BB05}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] -A---+------ * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG+------ * ASG ref
[000014] D----+-N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG+------ \--* IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A---+------ * ASG long
[000012] D----+-N---- +--* LCL_VAR long V05 tmp1
[000011] #----+------ \--* IND long
[000010] !----+------ \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---+------ * ASG long
[000023] D----+-N---- +--* LCL_VAR long V07 tmp3
[000022] n----+------ \--* IND long
[000021] #----+------ \--* IND long
[000020] -----+------ \--* ADD long
[000018] -----+------ +--* LCL_VAR long V05 tmp1
[000019] -----+------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
[000115] ---X-+------ * JTRUE void
[000042] J--X-+-N---- \--* LE int
[000040] ---X-+------ +--* IND long
[000039] -----+------ | \--* ADD long
[000026] -----+------ | +--* LCL_VAR long V07 tmp3
[000038] -----+------ | \--* CNS_INT long 8
[000041] -----+------ \--* CNS_INT long 96
------------ BB03 [???..???) -> BB05 (cond), preds={BB01} succs={BB04,BB05}
***** BB03
STMT00016 (IL ???... ???)
[000116] -----+------ * JTRUE void
[000033] J----+-N---- \--* EQ int
[000029] n----+------ +--* IND long
[000028] -----+------ | \--* ADD long
[000025] -----+------ | +--* LCL_VAR long V07 tmp3
[000027] -----+------ | \--* CNS_INT long 96
[000032] -----+------ \--* CNS_INT long 0
------------ BB04 [???..???) -> BB06 (always), preds={BB03} succs={BB06}
***** BB04
STMT00017 (IL ???... ???)
[000118] -A---+------ * ASG long
[000117] D----+-N---- +--* LCL_VAR long V08 tmp4
[000034] n----+------ \--* IND long
[000035] -----+------ \--* ADD long
[000036] -----+------ +--* LCL_VAR long V07 tmp3
[000037] -----+------ \--* CNS_INT long 96
------------ BB05 [???..???), preds={BB01,BB03} succs={BB06}
***** BB05
STMT00018 (IL ???... ???)
[000120] -AC-G+------ * ASG long
[000119] D----+-N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] -----+------ arg0 in rcx +--* LCL_VAR long V05 tmp1
[000030] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB06 [015..019) -> BB08 (always), preds={BB04,BB05} succs={BB08}
***** BB06
STMT00005 (IL ???... ???)
[000009] --CXG+------ * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] -----+------ this in rcx +--* ADDR byref
[000005] ----G+-N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000045] -----+------ arg1 in rdx +--* LCL_VAR long V08 tmp4
[000016] -----+------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
***** BB06
STMT00006 (IL 0x015... ???)
[000049] -A---+------ * ASG int
[000048] D----+-N---- +--* LCL_VAR int V03 loc2
[000047] -----+------ \--* CNS_INT int 0
------------ BB07 [019..02B), preds={BB13} succs={BB08}
***** BB07
STMT00012 (IL 0x019...0x022)
[000107] IA-XG+------ * ASG struct (init)
[000106] ---XG+-N---- +--* BLK struct<8>
[000104] ---XG+------ | \--* COMMA byref
[000098] ---XG+------ | +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ | \--* ADD byref
[000102] ----G+------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ | \--* LSH long
[000099] -----+------ | +--* CAST long <- int
[000094] -----+------ | | \--* LCL_VAR int V03 loc2
[000100] -----+------ | \--* CNS_INT int 3
[000105] -----+------ \--* CNS_INT int 0
***** BB07
STMT00013 (IL 0x027...0x02A)
[000112] -A---+------ * ASG int
[000111] D----+-N---- +--* LCL_VAR int V03 loc2
[000110] -----+------ \--* ADD int
[000108] -----+------ +--* LCL_VAR int V03 loc2
[000109] -----+------ \--* CNS_INT int 1
------------ BB08 [02B..???) -> BB12 (cond), preds={BB06,BB07} succs={BB10,BB12}
***** BB08
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-+------ * ASG long
[000056] D----+-N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-+------ \--* IND long
[000054] !----+------ \--* LCL_VAR ref V00 this
***** BB08
STMT00008 (IL ???... ???)
[000065] -A---+------ * ASG long
[000064] D----+-N---- +--* LCL_VAR long V10 tmp6
[000063] n----+------ \--* IND long
[000062] #----+------ \--* IND long
[000061] -----+------ \--* ADD long
[000059] -----+------ +--* LCL_VAR long V09 tmp5
[000060] -----+------ \--* CNS_INT long 56
***** BB08
STMT00019 (IL ???... ???)
[000121] ---X-+------ * JTRUE void
[000083] J--X-+-N---- \--* LE int
[000081] ---X-+------ +--* IND long
[000080] -----+------ | \--* ADD long
[000067] -----+------ | +--* LCL_VAR long V10 tmp6
[000079] -----+------ | \--* CNS_INT long 8
[000082] -----+------ \--* CNS_INT long 96
------------ BB10 [???..???) -> BB12 (cond), preds={BB08} succs={BB11,BB12}
***** BB10
STMT00020 (IL ???... ???)
[000122] -----+------ * JTRUE void
[000074] J----+-N---- \--* EQ int
[000070] n----+------ +--* IND long
[000069] -----+------ | \--* ADD long
[000066] -----+------ | +--* LCL_VAR long V10 tmp6
[000068] -----+------ | \--* CNS_INT long 96
[000073] -----+------ \--* CNS_INT long 0
------------ BB11 [???..???) -> BB13 (always), preds={BB10} succs={BB13}
***** BB11
STMT00021 (IL ???... ???)
[000124] -A---+------ * ASG long
[000123] D----+-N---- +--* LCL_VAR long V11 tmp7
[000075] n----+------ \--* IND long
[000076] -----+------ \--* ADD long
[000077] -----+------ +--* LCL_VAR long V10 tmp6
[000078] -----+------ \--* CNS_INT long 96
------------ BB12 [???..???), preds={BB08,BB10} succs={BB13}
***** BB12
STMT00022 (IL ???... ???)
[000126] -AC-G+------ * ASG long
[000125] D----+-N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] -----+------ arg0 in rcx +--* LCL_VAR long V09 tmp5
[000071] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB13 [???..035) -> BB07 (cond), preds={BB11,BB12} succs={BB14,BB07}
***** BB13
STMT00011 (IL ???... ???)
[000090] ----G+------ * JTRUE void
[000089] J---G+-N---- \--* LT int
[000050] -----+------ +--* LCL_VAR int V03 loc2
[000132] ----G+------ \--* LCL_VAR int (AX) V13 tmp9
------------ BB14 [035..037) (return), preds={BB13} succs={}
***** BB14
STMT00014 (IL 0x035...0x036)
[000114] -----+------ * RETURN ref
[000113] -----+------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Mark GC poll blocks
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB05 ( cond ) i label target
BB03 [0006] 1 BB01 0.80 [???..???)-> BB05 ( cond ) i
BB04 [0007] 1 BB03 0.80 [???..???)-> BB06 (always) i
BB05 [0008] 2 BB01,BB03 0.20 [???..???) i label target hascall
BB06 [0004] 2 BB04,BB05 1 [015..019)-> BB08 (always) i label target hascall
BB07 [0001] 1 BB13 1 [019..02B) i label target bwd bwd-target
BB08 [0002] 2 BB06,BB07 1 [02B..???)-> BB12 ( cond ) i label target bwd
BB10 [0011] 1 BB08 0.80 [???..???)-> BB12 ( cond ) i
BB11 [0012] 1 BB10 0.80 [???..???)-> BB13 (always) i
BB12 [0013] 2 BB08,BB10 0.20 [???..???) i label target hascall
BB13 [0009] 2 BB11,BB12 1 [???..035)-> BB07 ( cond ) i label target bwd
BB14 [0003] 1 BB13 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
Renumber BB03 to BB02
Renumber BB04 to BB03
Renumber BB05 to BB04
Renumber BB06 to BB05
Renumber BB07 to BB06
Renumber BB08 to BB07
Renumber BB10 to BB08
Renumber BB11 to BB09
Renumber BB12 to BB10
Renumber BB13 to BB11
Renumber BB14 to BB12
*************** After renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
New BlockSet epoch 3, # of blocks (including unused BB00): 13, bitset array size: 1 (short)
*************** Finishing PHASE Mark GC poll blocks
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
fgComputeEdgeWeights() found inconsistent profile data, not using the edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Optimize layout
*************** In optOptimizeLayout()
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgExpandRarelyRunBlocks()
*************** In fgReorderBlocks()
Initial BasicBlocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Optimize layout
*************** Starting PHASE Compute blocks reachability
*************** In fgComputeReachability
*************** In fgDebugCheckBBlist
Renumbering the basic blocks for fgComputeReachability pass #1
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
Enter blocks: BB01
After computing reachability sets:
------------------------------------------------
BBnum Reachable by
------------------------------------------------
BB01 : BB01
BB02 : BB01 BB02
BB03 : BB01 BB02 BB03
BB04 : BB01 BB02 BB04
BB05 : BB01 BB02 BB03 BB04 BB05
BB06 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB07 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB08 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB09 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB10 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB11 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11
BB12 : BB01 BB02 BB03 BB04 BB05 BB06 BB07 BB08 BB09 BB10 BB11 BB12
After computing reachability:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.80 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.80 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.20 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 1 [019..02B) i Loop label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.80 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.80 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.20 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgComputeDoms
*************** In fgDebugCheckBBlist
Dominator computation start blocks (those blocks with no incoming edges):
BB01
------------------------------------------------
BBnum Dominated by
------------------------------------------------
BB01: BB01
BB02: BB02 BB01
BB03: BB03 BB02 BB01
BB04: BB04 BB01
BB05: BB05 BB01
BB07: BB07 BB05 BB01
BB08: BB08 BB07 BB05 BB01
BB09: BB09 BB08 BB07 BB05 BB01
BB10: BB10 BB07 BB05 BB01
BB11: BB11 BB07 BB05 BB01
BB12: BB12 BB11 BB07 BB05 BB01
BB06: BB06 BB11 BB07 BB05 BB01
Inside fgBuildDomTree
After computing the Dominance Tree:
BB01 : BB05 BB04 BB02
BB02 : BB03
BB05 : BB07
BB07 : BB11 BB10 BB08
BB08 : BB09
BB11 : BB12 BB06
After numbering the dominator tree:
BB01: pre=01, post=12
BB02: pre=11, post=11
BB03: pre=12, post=10
BB04: pre=10, post=09
BB05: pre=02, post=08
BB06: pre=06, post=02
BB07: pre=03, post=07
BB08: pre=08, post=06
BB09: pre=09, post=05
BB10: pre=07, post=04
BB11: pre=04, post=03
BB12: pre=05, post=01
*************** Finishing PHASE Compute blocks reachability
*************** Starting PHASE Optimize loops
*************** In optOptimizeLoops()
After optSetBlockWeights:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 0.50 [019..02B) i Loop label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 1 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 0.40 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 0.40 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.10 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 1 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In optFindNaturalLoops()
Recorded loop L00, from BB06 to BB11 (Head=BB05, Entry=BB07, ExitCnt=1 at BB11) [over V03 (ADD 1 ) from 0LTV13 ]
Final natural loop table:
L00, from BB06 to BB11 (Head=BB05, Entry=BB07, ExitCnt=1 at BB11)
Marking a loop from BB06 to BB11
BB06(wt=2 )
BB07(wt=8 )
BB08(wt=1.60)
BB09(wt=1.60)
BB10(wt=0.40)
BB11(wt=8 )
Found a total of 1 loops.
After loop weight marking:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Optimize loops
*************** Starting PHASE Clone loops
*************** In optCloneLoops()
Blocks/Trees at start of phase
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] -A---+------ * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG+------ * ASG ref
[000014] D----+-N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG+------ \--* IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A---+------ * ASG long
[000012] D----+-N---- +--* LCL_VAR long V05 tmp1
[000011] #----+------ \--* IND long
[000010] !----+------ \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---+------ * ASG long
[000023] D----+-N---- +--* LCL_VAR long V07 tmp3
[000022] n----+------ \--* IND long
[000021] #----+------ \--* IND long
[000020] -----+------ \--* ADD long
[000018] -----+------ +--* LCL_VAR long V05 tmp1
[000019] -----+------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
[000115] ---X-+------ * JTRUE void
[000042] J--X-+-N---- \--* LE int
[000040] ---X-+------ +--* IND long
[000039] -----+------ | \--* ADD long
[000026] -----+------ | +--* LCL_VAR long V07 tmp3
[000038] -----+------ | \--* CNS_INT long 8
[000041] -----+------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
[000116] -----+------ * JTRUE void
[000033] J----+-N---- \--* EQ int
[000029] n----+------ +--* IND long
[000028] -----+------ | \--* ADD long
[000025] -----+------ | +--* LCL_VAR long V07 tmp3
[000027] -----+------ | \--* CNS_INT long 96
[000032] -----+------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
[000118] -A---+------ * ASG long
[000117] D----+-N---- +--* LCL_VAR long V08 tmp4
[000034] n----+------ \--* IND long
[000035] -----+------ \--* ADD long
[000036] -----+------ +--* LCL_VAR long V07 tmp3
[000037] -----+------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
[000120] -AC-G+------ * ASG long
[000119] D----+-N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] -----+------ arg0 in rcx +--* LCL_VAR long V05 tmp1
[000030] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00005 (IL ???... ???)
[000009] --CXG+------ * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] -----+------ this in rcx +--* ADDR byref
[000005] ----G+-N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000045] -----+------ arg1 in rdx +--* LCL_VAR long V08 tmp4
[000016] -----+------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
***** BB05
STMT00006 (IL 0x015... ???)
[000049] -A---+------ * ASG int
[000048] D----+-N---- +--* LCL_VAR int V03 loc2
[000047] -----+------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
[000107] IA-XG+------ * ASG struct (init)
[000106] ---XG+-N---- +--* BLK struct<8>
[000104] ---XG+------ | \--* COMMA byref
[000098] ---XG+------ | +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ | \--* ADD byref
[000102] ----G+------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ | \--* LSH long
[000099] -----+------ | +--* CAST long <- int
[000094] -----+------ | | \--* LCL_VAR int V03 loc2
[000100] -----+------ | \--* CNS_INT int 3
[000105] -----+------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
[000112] -A---+------ * ASG int
[000111] D----+-N---- +--* LCL_VAR int V03 loc2
[000110] -----+------ \--* ADD int
[000108] -----+------ +--* LCL_VAR int V03 loc2
[000109] -----+------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-+------ * ASG long
[000056] D----+-N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-+------ \--* IND long
[000054] !----+------ \--* LCL_VAR ref V00 this
***** BB07
STMT00008 (IL ???... ???)
[000065] -A---+------ * ASG long
[000064] D----+-N---- +--* LCL_VAR long V10 tmp6
[000063] n----+------ \--* IND long
[000062] #----+------ \--* IND long
[000061] -----+------ \--* ADD long
[000059] -----+------ +--* LCL_VAR long V09 tmp5
[000060] -----+------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
[000121] ---X-+------ * JTRUE void
[000083] J--X-+-N---- \--* LE int
[000081] ---X-+------ +--* IND long
[000080] -----+------ | \--* ADD long
[000067] -----+------ | +--* LCL_VAR long V10 tmp6
[000079] -----+------ | \--* CNS_INT long 8
[000082] -----+------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
[000122] -----+------ * JTRUE void
[000074] J----+-N---- \--* EQ int
[000070] n----+------ +--* IND long
[000069] -----+------ | \--* ADD long
[000066] -----+------ | +--* LCL_VAR long V10 tmp6
[000068] -----+------ | \--* CNS_INT long 96
[000073] -----+------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
***** BB09
STMT00021 (IL ???... ???)
[000124] -A---+------ * ASG long
[000123] D----+-N---- +--* LCL_VAR long V11 tmp7
[000075] n----+------ \--* IND long
[000076] -----+------ \--* ADD long
[000077] -----+------ +--* LCL_VAR long V10 tmp6
[000078] -----+------ \--* CNS_INT long 96
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
***** BB10
STMT00022 (IL ???... ???)
[000126] -AC-G+------ * ASG long
[000125] D----+-N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] -----+------ arg0 in rcx +--* LCL_VAR long V09 tmp5
[000071] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
[000090] ----G+------ * JTRUE void
[000089] J---G+-N---- \--* LT int
[000050] -----+------ +--* LCL_VAR int V03 loc2
[000132] ----G+------ \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
[000114] -----+------ * RETURN ref
[000113] -----+------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
Considering loop 0 to clone for optimizations.
> Loop inversion NOT present, loop test [000089] may not protect entry from head.
------------------------------------------------------------
After loop cloning:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
[000004] -A---+------ * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
[000015] -A-XG+------ * ASG ref
[000014] D----+-N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG+------ \--* IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
[000013] -A---+------ * ASG long
[000012] D----+-N---- +--* LCL_VAR long V05 tmp1
[000011] #----+------ \--* IND long
[000010] !----+------ \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
[000024] -A---+------ * ASG long
[000023] D----+-N---- +--* LCL_VAR long V07 tmp3
[000022] n----+------ \--* IND long
[000021] #----+------ \--* IND long
[000020] -----+------ \--* ADD long
[000018] -----+------ +--* LCL_VAR long V05 tmp1
[000019] -----+------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
[000115] ---X-+------ * JTRUE void
[000042] J--X-+-N---- \--* LE int
[000040] ---X-+------ +--* IND long
[000039] -----+------ | \--* ADD long
[000026] -----+------ | +--* LCL_VAR long V07 tmp3
[000038] -----+------ | \--* CNS_INT long 8
[000041] -----+------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
[000116] -----+------ * JTRUE void
[000033] J----+-N---- \--* EQ int
[000029] n----+------ +--* IND long
[000028] -----+------ | \--* ADD long
[000025] -----+------ | +--* LCL_VAR long V07 tmp3
[000027] -----+------ | \--* CNS_INT long 96
[000032] -----+------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
[000118] -A---+------ * ASG long
[000117] D----+-N---- +--* LCL_VAR long V08 tmp4
[000034] n----+------ \--* IND long
[000035] -----+------ \--* ADD long
[000036] -----+------ +--* LCL_VAR long V07 tmp3
[000037] -----+------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
[000120] -AC-G+------ * ASG long
[000119] D----+-N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] -----+------ arg0 in rcx +--* LCL_VAR long V05 tmp1
[000030] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00005 (IL ???... ???)
[000009] --CXG+------ * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] -----+------ this in rcx +--* ADDR byref
[000005] ----G+-N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000045] -----+------ arg1 in rdx +--* LCL_VAR long V08 tmp4
[000016] -----+------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
***** BB05
STMT00006 (IL 0x015... ???)
[000049] -A---+------ * ASG int
[000048] D----+-N---- +--* LCL_VAR int V03 loc2
[000047] -----+------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
[000107] IA-XG+------ * ASG struct (init)
[000106] ---XG+-N---- +--* BLK struct<8>
[000104] ---XG+------ | \--* COMMA byref
[000098] ---XG+------ | +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ | \--* ADD byref
[000102] ----G+------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ | \--* LSH long
[000099] -----+------ | +--* CAST long <- int
[000094] -----+------ | | \--* LCL_VAR int V03 loc2
[000100] -----+------ | \--* CNS_INT int 3
[000105] -----+------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
[000112] -A---+------ * ASG int
[000111] D----+-N---- +--* LCL_VAR int V03 loc2
[000110] -----+------ \--* ADD int
[000108] -----+------ +--* LCL_VAR int V03 loc2
[000109] -----+------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-+------ * ASG long
[000056] D----+-N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-+------ \--* IND long
[000054] !----+------ \--* LCL_VAR ref V00 this
***** BB07
STMT00008 (IL ???... ???)
[000065] -A---+------ * ASG long
[000064] D----+-N---- +--* LCL_VAR long V10 tmp6
[000063] n----+------ \--* IND long
[000062] #----+------ \--* IND long
[000061] -----+------ \--* ADD long
[000059] -----+------ +--* LCL_VAR long V09 tmp5
[000060] -----+------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
[000121] ---X-+------ * JTRUE void
[000083] J--X-+-N---- \--* LE int
[000081] ---X-+------ +--* IND long
[000080] -----+------ | \--* ADD long
[000067] -----+------ | +--* LCL_VAR long V10 tmp6
[000079] -----+------ | \--* CNS_INT long 8
[000082] -----+------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
[000122] -----+------ * JTRUE void
[000074] J----+-N---- \--* EQ int
[000070] n----+------ +--* IND long
[000069] -----+------ | \--* ADD long
[000066] -----+------ | +--* LCL_VAR long V10 tmp6
[000068] -----+------ | \--* CNS_INT long 96
[000073] -----+------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
***** BB09
STMT00021 (IL ???... ???)
[000124] -A---+------ * ASG long
[000123] D----+-N---- +--* LCL_VAR long V11 tmp7
[000075] n----+------ \--* IND long
[000076] -----+------ \--* ADD long
[000077] -----+------ +--* LCL_VAR long V10 tmp6
[000078] -----+------ \--* CNS_INT long 96
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
***** BB10
STMT00022 (IL ???... ???)
[000126] -AC-G+------ * ASG long
[000125] D----+-N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] -----+------ arg0 in rcx +--* LCL_VAR long V09 tmp5
[000071] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
[000090] ----G+------ * JTRUE void
[000089] J---G+-N---- \--* LT int
[000050] -----+------ +--* LCL_VAR int V03 loc2
[000132] ----G+------ \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
[000114] -----+------ * RETURN ref
[000113] -----+------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Clone loops
*************** Starting PHASE Unroll loops
*************** In optUnrollLoops()
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Unroll loops
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
*** marking local variables in block BB01 (weight=1 )
STMT00000 (IL 0x000...0x003)
[000004] -A---+------ * ASG ref
[000000] D----+-N---- +--* LCL_VAR ref V01 loc0
[000002] -----+------ \--* CNS_INT ref null
New refCnts for V01: refCnt = 1, refCntWtd = 1
STMT00002 (IL 0x008...0x016)
[000015] -A-XG+------ * ASG ref
[000014] D----+-N---- +--* LCL_VAR ref V06 tmp2
[000008] ---XG+------ \--* IND ref
[000135] -----+------ \--* ADD byref
[000007] -----+------ +--* LCL_VAR ref V00 this
[000134] -----+------ \--* CNS_INT long 16 field offset Fseq[_array]
New refCnts for V06: refCnt = 1, refCntWtd = 2
New refCnts for V00: refCnt = 1, refCntWtd = 1
STMT00001 (IL 0x008... ???)
[000013] -A---+------ * ASG long
[000012] D----+-N---- +--* LCL_VAR long V05 tmp1
[000011] #----+------ \--* IND long
[000010] !----+------ \--* LCL_VAR ref V00 this
New refCnts for V05: refCnt = 1, refCntWtd = 2
-- generic context in use at [000010]
New refCnts for V00: refCnt = 2, refCntWtd = 2
STMT00003 (IL ???... ???)
[000024] -A---+------ * ASG long
[000023] D----+-N---- +--* LCL_VAR long V07 tmp3
[000022] n----+------ \--* IND long
[000021] #----+------ \--* IND long
[000020] -----+------ \--* ADD long
[000018] -----+------ +--* LCL_VAR long V05 tmp1
[000019] -----+------ \--* CNS_INT long 56
New refCnts for V07: refCnt = 1, refCntWtd = 2
New refCnts for V05: refCnt = 2, refCntWtd = 4
STMT00015 (IL ???... ???)
[000115] ---X-+------ * JTRUE void
[000042] J--X-+-N---- \--* LE int
[000040] ---X-+------ +--* IND long
[000039] -----+------ | \--* ADD long
[000026] -----+------ | +--* LCL_VAR long V07 tmp3
[000038] -----+------ | \--* CNS_INT long 8
[000041] -----+------ \--* CNS_INT long 96
New refCnts for V07: refCnt = 2, refCntWtd = 4
*** marking local variables in block BB02 (weight=0.40)
STMT00016 (IL ???... ???)
[000116] -----+------ * JTRUE void
[000033] J----+-N---- \--* EQ int
[000029] n----+------ +--* IND long
[000028] -----+------ | \--* ADD long
[000025] -----+------ | +--* LCL_VAR long V07 tmp3
[000027] -----+------ | \--* CNS_INT long 96
[000032] -----+------ \--* CNS_INT long 0
New refCnts for V07: refCnt = 3, refCntWtd = 4.80
*** marking local variables in block BB03 (weight=0.40)
STMT00017 (IL ???... ???)
[000118] -A---+------ * ASG long
[000117] D----+-N---- +--* LCL_VAR long V08 tmp4
[000034] n----+------ \--* IND long
[000035] -----+------ \--* ADD long
[000036] -----+------ +--* LCL_VAR long V07 tmp3
[000037] -----+------ \--* CNS_INT long 96
New refCnts for V08: refCnt = 1, refCntWtd = 0.80
New refCnts for V07: refCnt = 4, refCntWtd = 5.60
*** marking local variables in block BB04 (weight=0.10)
STMT00018 (IL ???... ???)
[000120] -AC-G+------ * ASG long
[000119] D----+-N---- +--* LCL_VAR long V08 tmp4
[000031] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000017] -----+------ arg0 in rcx +--* LCL_VAR long V05 tmp1
[000030] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
New refCnts for V08: refCnt = 2, refCntWtd = 1
New refCnts for V05: refCnt = 3, refCntWtd = 4.20
*** marking local variables in block BB05 (weight=1 )
STMT00005 (IL ???... ???)
[000009] --CXG+------ * CALL void System.Span`1[__Canon][System.__Canon]..ctor
[000006] -----+------ this in rcx +--* ADDR byref
[000005] ----G+-N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
[000045] -----+------ arg1 in rdx +--* LCL_VAR long V08 tmp4
[000016] -----+------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
New refCnts for V12: refCnt = 1, refCntWtd = 1
New refCnts for V13: refCnt = 1, refCntWtd = 1
New refCnts for V02: refCnt = 1, refCntWtd = 1
New refCnts for V08: refCnt = 3, refCntWtd = 3
New refCnts for V06: refCnt = 2, refCntWtd = 4
STMT00006 (IL 0x015... ???)
[000049] -A---+------ * ASG int
[000048] D----+-N---- +--* LCL_VAR int V03 loc2
[000047] -----+------ \--* CNS_INT int 0
New refCnts for V03: refCnt = 1, refCntWtd = 1
*** marking local variables in block BB06 (weight=2 )
STMT00012 (IL 0x019...0x022)
[000107] IA-XG+------ * ASG struct (init)
[000106] ---XG+-N---- +--* BLK struct<8>
[000104] ---XG+------ | \--* COMMA byref
[000098] ---XG+------ | +--* ARR_BOUNDS_CHECK_Rng void
[000093] -----+------ | | +--* LCL_VAR int V03 loc2
[000097] ----G+------ | | \--* LCL_VAR int (AX) V13 tmp9
[000103] ----G+------ | \--* ADD byref
[000102] ----G+------ | +--* LCL_VAR byref (AX) V12 tmp8
[000101] -----+------ | \--* LSH long
[000099] -----+------ | +--* CAST long <- int
[000094] -----+------ | | \--* LCL_VAR int V03 loc2
[000100] -----+------ | \--* CNS_INT int 3
[000105] -----+------ \--* CNS_INT int 0
New refCnts for V03: refCnt = 2, refCntWtd = 3
New refCnts for V02: refCnt = 2, refCntWtd = 3
New refCnts for V13: refCnt = 2, refCntWtd = 3
New refCnts for V02: refCnt = 3, refCntWtd = 5
New refCnts for V12: refCnt = 2, refCntWtd = 3
New refCnts for V03: refCnt = 3, refCntWtd = 5
STMT00013 (IL 0x027...0x02A)
[000112] -A---+------ * ASG int
[000111] D----+-N---- +--* LCL_VAR int V03 loc2
[000110] -----+------ \--* ADD int
[000108] -----+------ +--* LCL_VAR int V03 loc2
[000109] -----+------ \--* CNS_INT int 1
New refCnts for V03: refCnt = 4, refCntWtd = 7
New refCnts for V03: refCnt = 5, refCntWtd = 9
*** marking local variables in block BB07 (weight=8 )
STMT00007 (IL 0x02B...0x033)
[000057] -A-X-+------ * ASG long
[000056] D----+-N---- +--* LCL_VAR long V09 tmp5
[000055] #--X-+------ \--* IND long
[000054] !----+------ \--* LCL_VAR ref V00 this
New refCnts for V09: refCnt = 1, refCntWtd = 16
New refCnts for V00: refCnt = 3, refCntWtd = 10
STMT00008 (IL ???... ???)
[000065] -A---+------ * ASG long
[000064] D----+-N---- +--* LCL_VAR long V10 tmp6
[000063] n----+------ \--* IND long
[000062] #----+------ \--* IND long
[000061] -----+------ \--* ADD long
[000059] -----+------ +--* LCL_VAR long V09 tmp5
[000060] -----+------ \--* CNS_INT long 56
New refCnts for V10: refCnt = 1, refCntWtd = 16
New refCnts for V09: refCnt = 2, refCntWtd = 32
STMT00019 (IL ???... ???)
[000121] ---X-+------ * JTRUE void
[000083] J--X-+-N---- \--* LE int
[000081] ---X-+------ +--* IND long
[000080] -----+------ | \--* ADD long
[000067] -----+------ | +--* LCL_VAR long V10 tmp6
[000079] -----+------ | \--* CNS_INT long 8
[000082] -----+------ \--* CNS_INT long 96
New refCnts for V10: refCnt = 2, refCntWtd = 32
*** marking local variables in block BB08 (weight=1.60)
STMT00020 (IL ???... ???)
[000122] -----+------ * JTRUE void
[000074] J----+-N---- \--* EQ int
[000070] n----+------ +--* IND long
[000069] -----+------ | \--* ADD long
[000066] -----+------ | +--* LCL_VAR long V10 tmp6
[000068] -----+------ | \--* CNS_INT long 96
[000073] -----+------ \--* CNS_INT long 0
New refCnts for V10: refCnt = 3, refCntWtd = 35.20
*** marking local variables in block BB09 (weight=1.60)
STMT00021 (IL ???... ???)
[000124] -A---+------ * ASG long
[000123] D----+-N---- +--* LCL_VAR long V11 tmp7
[000075] n----+------ \--* IND long
[000076] -----+------ \--* ADD long
[000077] -----+------ +--* LCL_VAR long V10 tmp6
[000078] -----+------ \--* CNS_INT long 96
New refCnts for V11: refCnt = 1, refCntWtd = 3.20
New refCnts for V10: refCnt = 4, refCntWtd = 38.40
*** marking local variables in block BB10 (weight=0.40)
STMT00022 (IL ???... ???)
[000126] -AC-G+------ * ASG long
[000125] D----+-N---- +--* LCL_VAR long V11 tmp7
[000072] --C-G+------ \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
[000058] -----+------ arg0 in rcx +--* LCL_VAR long V09 tmp5
[000071] -----+------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
New refCnts for V11: refCnt = 2, refCntWtd = 4
New refCnts for V09: refCnt = 3, refCntWtd = 32.80
*** marking local variables in block BB11 (weight=8 )
STMT00011 (IL ???... ???)
[000090] ----G+------ * JTRUE void
[000089] J---G+-N---- \--* LT int
[000050] -----+------ +--* LCL_VAR int V03 loc2
[000132] ----G+------ \--* LCL_VAR int (AX) V13 tmp9
New refCnts for V03: refCnt = 6, refCntWtd = 17
New refCnts for V02: refCnt = 4, refCntWtd = 13
New refCnts for V13: refCnt = 3, refCntWtd = 11
*** marking local variables in block BB12 (weight=1 )
STMT00014 (IL 0x035...0x036)
[000114] -----+------ * RETURN ref
[000113] -----+------ \--* LCL_VAR ref V01 loc0
New refCnts for V01: refCnt = 2, refCntWtd = 2
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 4, refCntWtd = 11
New refCnts for V00: refCnt = 5, refCntWtd = 12
Reporting this as generic context: referenced
*************** In optAddCopies()
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Optimize bools
*************** In optOptimizeBools()
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Optimize bools
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
fgMarkLoopHead: Checking loop head block BB06: no guaranteed callsite exits, marking method as fully interruptible
The biggest BB has 13 tree nodes
*************** Finishing PHASE Set block order
Trees before Build SSA representation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2
N004 ( 4, 4) [000008] ---XG------- \--* IND ref
N003 ( 2, 2) [000135] -------N---- \--* ADD byref
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1
N002 ( 3, 2) [000011] #----O------ \--* IND long
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3
N005 ( 7, 6) [000022] n----------- \--* IND long
N004 ( 4, 4) [000021] #----------- \--* IND long
N003 ( 2, 2) [000020] -------N---- \--* ADD long
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int
N004 ( 4, 4) [000040] ---X-------- +--* IND long
N003 ( 2, 2) [000039] -------N---- | \--* ADD long
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int
N004 ( 4, 4) [000029] n----------- +--* IND long
N003 ( 2, 2) [000028] -------N---- | \--* ADD long
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4
N004 ( 4, 4) [000034] n----------- \--* IND long
N003 ( 2, 2) [000035] -------N---- \--* ADD long
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init)
N011 ( 19, 20) [000106] ---XG--N---- +--* BLK struct<8>
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8
N008 ( 4, 5) [000101] ------------ | \--* LSH long
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2
N003 ( 3, 3) [000110] ------------ \--* ADD int
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5
N002 ( 3, 2) [000055] #--X-------- \--* IND long
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6
N005 ( 7, 6) [000063] n----------- \--* IND long
N004 ( 4, 4) [000062] #----------- \--* IND long
N003 ( 2, 2) [000061] -------N---- \--* ADD long
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int
N004 ( 4, 4) [000081] ---X-------- +--* IND long
N003 ( 2, 2) [000080] -------N---- | \--* ADD long
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int
N004 ( 4, 4) [000070] n----------- +--* IND long
N003 ( 2, 2) [000069] -------N---- | \--* ADD long
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
***** BB09
STMT00021 (IL ???... ???)
N006 ( 4, 4) [000124] -A------R--- * ASG long
N005 ( 1, 1) [000123] D------N---- +--* LCL_VAR long V11 tmp7
N004 ( 4, 4) [000075] n----------- \--* IND long
N003 ( 2, 2) [000076] -------N---- \--* ADD long
N001 ( 1, 1) [000077] ------------ +--* LCL_VAR long V10 tmp6
N002 ( 1, 1) [000078] ------------ \--* CNS_INT long 96
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
***** BB10
STMT00022 (IL ???... ???)
N007 ( 17, 18) [000126] -AC-G---R--- * ASG long
N006 ( 1, 1) [000125] D------N---- +--* LCL_VAR long V11 tmp7
N005 ( 17, 18) [000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000058] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp5
N004 ( 2, 10) [000071] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Build SSA representation
*************** In SsaBuilder::Build()
[SsaBuilder] Max block count is 13.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
[SsaBuilder] Topologically sorted the graph.
[SsaBuilder::ComputeImmediateDom]
Inside fgBuildDomTree
After computing the Dominance Tree:
BB01 : BB05 BB04 BB02
BB02 : BB03
BB05 : BB07
BB07 : BB11 BB10 BB08
BB08 : BB09
BB11 : BB12 BB06
*************** In fgLocalVarLiveness()
In fgLocalVarLivenessInit
Tracked variable (10 out of 14) table:
V10 tmp6 [ long]: refCnt = 4, refCntWtd = 38.40
V09 tmp5 [ long]: refCnt = 3, refCntWtd = 32.80
V03 loc2 [ int]: refCnt = 6, refCntWtd = 17
V00 this [ ref]: refCnt = 5, refCntWtd = 12
V07 tmp3 [ long]: refCnt = 4, refCntWtd = 5.60
V05 tmp1 [ long]: refCnt = 3, refCntWtd = 4.20
V06 tmp2 [ ref]: refCnt = 2, refCntWtd = 4
V11 tmp7 [ long]: refCnt = 2, refCntWtd = 4
V08 tmp4 [ long]: refCnt = 3, refCntWtd = 3
V01 loc0 [ ref]: refCnt = 2, refCntWtd = 2
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(4)={ V07 V05 V06 V01}
BB02 USE(1)={V07} + ByrefExposed + GcHeap
DEF(0)={ }
BB03 USE(1)={V07 } + ByrefExposed + GcHeap
DEF(1)={ V08}
BB04 USE(1)={V05 }
DEF(1)={ V08}
BB05 USE(2)={ V06 V08} + ByrefExposed + GcHeap
DEF(1)={V03 } + ByrefExposed* + GcHeap*
BB06 USE(1)={V03} + ByrefExposed
DEF(1)={V03} + ByrefExposed + GcHeap
BB07 USE(1)={ V00} + ByrefExposed + GcHeap
DEF(2)={V10 V09 }
BB08 USE(1)={V10} + ByrefExposed + GcHeap
DEF(0)={ }
BB09 USE(1)={V10 } + ByrefExposed + GcHeap
DEF(1)={ V11}
BB10 USE(1)={V09 }
DEF(1)={ V11}
BB11 USE(1)={V03} + ByrefExposed
DEF(0)={ }
BB12 USE(1)={V01}
DEF(0)={ }
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
Reporting this as generic context: referenced
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00 } + ByrefExposed + GcHeap
OUT(5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
BB02 IN (5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
OUT(5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
BB03 IN (4)={V00 V07 V06 V01} + ByrefExposed + GcHeap
OUT(4)={V00 V06 V08 V01} + ByrefExposed + GcHeap
BB04 IN (4)={V00 V05 V06 V01} + ByrefExposed + GcHeap
OUT(4)={V00 V06 V08 V01} + ByrefExposed + GcHeap
BB05 IN (4)={ V00 V06 V08 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB06 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB07 IN (3)={ V03 V00 V01} + ByrefExposed + GcHeap
OUT(5)={V10 V09 V03 V00 V01} + ByrefExposed + GcHeap
BB08 IN (5)={V10 V09 V03 V00 V01} + ByrefExposed + GcHeap
OUT(5)={V10 V09 V03 V00 V01} + ByrefExposed + GcHeap
BB09 IN (4)={V10 V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={ V03 V00 V01} + ByrefExposed + GcHeap
BB10 IN (4)={V09 V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={ V03 V00 V01} + ByrefExposed + GcHeap
BB11 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB12 IN (2)={V00 V01}
OUT(1)={V00 }
top level assign
removing stmt with no side effects
Removing statement STMT00021 (IL ???... ???)
N006 ( 4, 4) [000124] -A------R--- * ASG long
N005 ( 1, 1) [000123] D------N---- +--* LCL_VAR long V11 tmp7
N004 ( 4, 4) [000075] n----------- \--* IND long
N003 ( 2, 2) [000076] -------N---- \--* ADD long
N001 ( 1, 1) [000077] ------------ +--* LCL_VAR long V10 tmp6
N002 ( 1, 1) [000078] ------------ \--* CNS_INT long 96
in BB09 as useless:
BB09 becomes empty
BB10 - Dead assignment has side effects...
N007 ( 17, 18) [000126] -AC-G---R--- * ASG long
N006 ( 1, 1) [000125] D------N---- +--* LCL_VAR long V11 tmp7
N005 ( 17, 18) [000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000058] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp5
N004 ( 2, 10) [000071] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
top level assign
removing stmt with no side effects
Removing statement STMT00022 (IL ???... ???)
N007 ( 17, 18) [000126] -AC-G---R--- * ASG long
N006 ( 1, 1) [000125] D------N---- +--* LCL_VAR long V11 tmp7
N005 ( 17, 18) [000072] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000058] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp5
N004 ( 2, 10) [000071] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
in BB10 as useless:
BB10 becomes empty
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(4)={ V07 V05 V06 V01}
BB02 USE(1)={V07} + ByrefExposed + GcHeap
DEF(0)={ }
BB03 USE(1)={V07 } + ByrefExposed + GcHeap
DEF(1)={ V08}
BB04 USE(1)={V05 }
DEF(1)={ V08}
BB05 USE(2)={ V06 V08} + ByrefExposed + GcHeap
DEF(1)={V03 } + ByrefExposed* + GcHeap*
BB06 USE(1)={V03} + ByrefExposed
DEF(1)={V03} + ByrefExposed + GcHeap
BB07 USE(1)={ V00} + ByrefExposed + GcHeap
DEF(2)={V10 V09 }
BB08 USE(1)={V10} + ByrefExposed + GcHeap
DEF(0)={ }
BB09 USE(0)={}
DEF(0)={}
BB10 USE(0)={}
DEF(0)={}
BB11 USE(1)={V03} + ByrefExposed
DEF(0)={ }
BB12 USE(1)={V01}
DEF(0)={ }
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
Reporting this as generic context: referenced
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00 } + ByrefExposed + GcHeap
OUT(5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
BB02 IN (5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
OUT(5)={V00 V07 V05 V06 V01} + ByrefExposed + GcHeap
BB03 IN (4)={V00 V07 V06 V01} + ByrefExposed + GcHeap
OUT(4)={V00 V06 V08 V01} + ByrefExposed + GcHeap
BB04 IN (4)={V00 V05 V06 V01} + ByrefExposed + GcHeap
OUT(4)={V00 V06 V08 V01} + ByrefExposed + GcHeap
BB05 IN (4)={ V00 V06 V08 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB06 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB07 IN (3)={ V03 V00 V01} + ByrefExposed + GcHeap
OUT(4)={V10 V03 V00 V01} + ByrefExposed + GcHeap
BB08 IN (4)={V10 V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={ V03 V00 V01} + ByrefExposed + GcHeap
BB09 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB10 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB11 IN (3)={V03 V00 V01} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V01} + ByrefExposed + GcHeap
BB12 IN (2)={V00 V01}
OUT(1)={V00 }
*************** In optRemoveRedundantZeroInits()
*************** In SsaBuilder::InsertPhiFunctions()
Inserting phi functions:
Added PHI definition for V03 at start of BB07.
Inserting phi definition for ByrefExposed at start of BB07.
Added PHI definition for V08 at start of BB05.
*************** In SsaBuilder::RenameVariables()
After fgSsaBuild:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2
N004 ( 4, 4) [000008] ---XG------- \--* IND ref
N003 ( 2, 2) [000135] -------N---- \--* ADD byref
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2
N002 ( 3, 2) [000011] #----O------ \--* IND long
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2
N005 ( 7, 6) [000022] n----------- \--* IND long
N004 ( 4, 4) [000021] #----------- \--* IND long
N003 ( 2, 2) [000020] -------N---- \--* ADD long
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int
N004 ( 4, 4) [000040] ---X-------- +--* IND long
N003 ( 2, 2) [000039] -------N---- | \--* ADD long
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int
N004 ( 4, 4) [000029] n----------- +--* IND long
N003 ( 2, 2) [000028] -------N---- | \--* ADD long
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4
N004 ( 4, 4) [000034] n----------- \--* IND long
N003 ( 2, 2) [000035] -------N---- \--* ADD long
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use)
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use)
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use)
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use)
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init)
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8>
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8
N008 ( 4, 5) [000101] ------------ | \--* LSH long
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4
N003 ( 3, 3) [000110] ------------ \--* ADD int
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use)
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2
N002 ( 3, 2) [000055] #--X-------- \--* IND long
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2
N005 ( 7, 6) [000063] n----------- \--* IND long
N004 ( 4, 4) [000062] #----------- \--* IND long
N003 ( 2, 2) [000061] -------N---- \--* ADD long
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use)
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int
N004 ( 4, 4) [000081] ---X-------- +--* IND long
N003 ( 2, 2) [000080] -------N---- | \--* ADD long
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int
N004 ( 4, 4) [000070] n----------- +--* IND long
N003 ( 2, 2) [000069] -------N---- | \--* ADD long
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use)
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use)
-------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Build SSA representation
Trees after Build SSA representation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2
N004 ( 4, 4) [000008] ---XG------- \--* IND ref
N003 ( 2, 2) [000135] -------N---- \--* ADD byref
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2
N002 ( 3, 2) [000011] #----O------ \--* IND long
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2
N005 ( 7, 6) [000022] n----------- \--* IND long
N004 ( 4, 4) [000021] #----------- \--* IND long
N003 ( 2, 2) [000020] -------N---- \--* ADD long
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int
N004 ( 4, 4) [000040] ---X-------- +--* IND long
N003 ( 2, 2) [000039] -------N---- | \--* ADD long
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int
N004 ( 4, 4) [000029] n----------- +--* IND long
N003 ( 2, 2) [000028] -------N---- | \--* ADD long
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4
N004 ( 4, 4) [000034] n----------- \--* IND long
N003 ( 2, 2) [000035] -------N---- \--* ADD long
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use)
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use)
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use)
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use)
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init)
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8>
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8
N008 ( 4, 5) [000101] ------------ | \--* LSH long
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4
N003 ( 3, 3) [000110] ------------ \--* ADD int
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use)
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2
N002 ( 3, 2) [000055] #--X-------- \--* IND long
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2
N005 ( 7, 6) [000063] n----------- \--* IND long
N004 ( 4, 4) [000062] #----------- \--* IND long
N003 ( 2, 2) [000061] -------N---- \--* ADD long
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use)
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int
N004 ( 4, 4) [000081] ---X-------- +--* IND long
N003 ( 2, 2) [000080] -------N---- | \--* ADD long
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int
N004 ( 4, 4) [000070] n----------- +--* IND long
N003 ( 2, 2) [000069] -------N---- | \--* ADD long
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use)
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use)
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Early Value Propagation
*************** In optEarlyProp()
After optEarlyProp:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2
N004 ( 4, 4) [000008] ---XG------- \--* IND ref
N003 ( 2, 2) [000135] -------N---- \--* ADD byref
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array]
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2
N002 ( 3, 2) [000011] #----O------ \--* IND long
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2
N005 ( 7, 6) [000022] n----------- \--* IND long
N004 ( 4, 4) [000021] #----------- \--* IND long
N003 ( 2, 2) [000020] -------N---- \--* ADD long
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int
N004 ( 4, 4) [000040] ---X-------- +--* IND long
N003 ( 2, 2) [000039] -------N---- | \--* ADD long
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int
N004 ( 4, 4) [000029] n----------- +--* IND long
N003 ( 2, 2) [000028] -------N---- | \--* ADD long
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4
N004 ( 4, 4) [000034] n----------- \--* IND long
N003 ( 2, 2) [000035] -------N---- \--* ADD long
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use)
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use)
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use)
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use)
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init)
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8>
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8
N008 ( 4, 5) [000101] ------------ | \--* LSH long
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4
N003 ( 3, 3) [000110] ------------ \--* ADD int
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use)
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2
N002 ( 3, 2) [000055] #--X-------- \--* IND long
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2
N005 ( 7, 6) [000063] n----------- \--* IND long
N004 ( 4, 4) [000062] #----------- \--* IND long
N003 ( 2, 2) [000061] -------N---- \--* ADD long
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use)
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int
N004 ( 4, 4) [000081] ---X-------- +--* IND long
N003 ( 2, 2) [000080] -------N---- | \--* ADD long
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int
N004 ( 4, 4) [000070] n----------- +--* IND long
N003 ( 2, 2) [000069] -------N---- | \--* ADD long
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use)
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use)
-------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Early Value Propagation
*************** Starting PHASE Do value numbering
*************** In fgValueNumber()
optComputeLoopSideEffects botNext is BB12, lnum is 0
optComputeLoopSideEffectsOfBlock BB06, mostNestedLoop 0
optComputeLoopSideEffectsOfBlock BB07, mostNestedLoop 0
optComputeLoopSideEffectsOfBlock BB08, mostNestedLoop 0
optComputeLoopSideEffectsOfBlock BB09, mostNestedLoop 0
optComputeLoopSideEffectsOfBlock BB10, mostNestedLoop 0
optComputeLoopSideEffectsOfBlock BB11, mostNestedLoop 0
Memory Initial Value in BB01 is: $81
The SSA definition for ByrefExposed (#1) at start of BB01 is $81 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB01 is $81 {InitVal($41)}
***** BB01, STMT00000(before)
N003 ( 5, 4) [000004] -A------R--- * ASG ref
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null
N001 [000002] CNS_INT null => $VN.Null
N002 [000000] LCL_VAR V01 loc0 d:2 => $VN.Null
N003 [000004] ASG => $VN.Null
***** BB01, STMT00000(after)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
---------
***** BB01, STMT00002(before)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2
N004 ( 4, 4) [000008] ---XG------- \--* IND ref
N003 ( 2, 2) [000135] -------N---- \--* ADD byref
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array]
N001 [000007] LCL_VAR V00 this u:1 => $80 {InitVal($40)}
N002 [000134] CNS_INT 16 field offset Fseq[_array] => $c1 {LngCns: 16}
N003 [000135] ADD => $140 {ADD($80, $c1)}
VNApplySelectors:
VNForHandle(_array) is $180, fieldType is ref
VNForMapSelect($81, $180):ref returns $1c0 {$81[$180]}
VNForMapSelect($1c0, $80):ref returns $1c1 {$1c0[$80]}
N004 [000008] IND => <l:$1c4 {norm=$1c1 {$1c0[$80]}, exc=$1c2 {NullPtrExc($80)}}, c:$1c3 {norm=$101 {101}, exc=$1c2 {NullPtrExc($80)}}>
N005 [000014] LCL_VAR V06 tmp2 d:2 => <l:$1c1 {$1c0[$80]}, c:$101 {101}>
N006 [000015] ASG => <l:$1c4 {norm=$1c1 {$1c0[$80]}, exc=$1c2 {NullPtrExc($80)}}, c:$1c3 {norm=$101 {101}, exc=$1c2 {NullPtrExc($80)}}>
***** BB01, STMT00002(after)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
---------
***** BB01, STMT00001(before)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2
N002 ( 3, 2) [000011] #----O------ \--* IND long
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1
N001 [000010] LCL_VAR V00 this u:1 => $80 {InitVal($40)}
VNForMapSelect($2, $80):ref returns $1c5 {$VN.ReadOnlyHeap[$80]}
VNForMapSelect($2, $80):ref returns $1c5 {$VN.ReadOnlyHeap[$80]}
N002 [000011] IND => $1c5 {$VN.ReadOnlyHeap[$80]}
N003 [000012] LCL_VAR V05 tmp1 d:2 => $1c5 {$VN.ReadOnlyHeap[$80]}
N004 [000013] ASG => $1c5 {$VN.ReadOnlyHeap[$80]}
***** BB01, STMT00001(after)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
---------
***** BB01, STMT00003(before)
N007 ( 7, 6) [000024] -A------R--- * ASG long
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2
N005 ( 7, 6) [000022] n----------- \--* IND long
N004 ( 4, 4) [000021] #----------- \--* IND long
N003 ( 2, 2) [000020] -------N---- \--* ADD long
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56
N001 [000018] LCL_VAR V05 tmp1 u:2 => $1c5 {$VN.ReadOnlyHeap[$80]}
N002 [000019] CNS_INT 56 => $c2 {LngCns: 56}
N003 [000020] ADD => $240 {ADD($c2, $1c5)}
VNForMapSelect($2, $240):ref returns $1c6 {$VN.ReadOnlyHeap[$240]}
VNForMapSelect($2, $240):ref returns $1c6 {$VN.ReadOnlyHeap[$240]}
N004 [000021] IND => $1c6 {$VN.ReadOnlyHeap[$240]}
N005 [000022] IND => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
N006 [000023] LCL_VAR V07 tmp3 d:2 => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
N007 [000024] ASG => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
***** BB01, STMT00003(after)
N007 ( 7, 6) [000024] -A------R--- * ASG long <l:$280, c:$201>
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N005 ( 7, 6) [000022] n----------- \--* IND long <l:$280, c:$201>
N004 ( 4, 4) [000021] #----------- \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- \--* ADD long $240
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56 $c2
---------
***** BB01, STMT00015(before)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int
N004 ( 4, 4) [000040] ---X-------- +--* IND long
N003 ( 2, 2) [000039] -------N---- | \--* ADD long
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96
N001 [000026] LCL_VAR V07 tmp3 u:2 => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
N002 [000038] CNS_INT 8 => $c3 {LngCns: 8}
N003 [000039] ADD => <l:$242 {ADD($c3, $280)}, c:$241 {ADD($c3, $201)}>
N004 [000040] IND => <l:$244 {norm=$281 {ByrefExposedLoad($42, $242, $81)}, exc=$1c8 {NullPtrExc($242)}}, c:$243 {norm=$203 {203}, exc=$1c7 {NullPtrExc($241)}}>
N005 [000041] CNS_INT 96 => $c4 {LngCns: 96}
N006 [000042] LE => <l:$2c3 {norm=$2c1 {LE($281, $c4)}, exc=$1c8 {NullPtrExc($242)}}, c:$2c2 {norm=$2c0 {LE($203, $c4)}, exc=$1c7 {NullPtrExc($241)}}>
***** BB01, STMT00015(after)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
finish(BB01).
Succ(BB02).
Not yet completed.
All preds complete, adding to allDone.
Succ(BB04).
Not yet completed.
Not all preds complete Adding to notallDone, if necessary...
Was necessary.
The SSA definition for ByrefExposed (#1) at start of BB02 is $81 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB02 is $81 {InitVal($41)}
***** BB02, STMT00016(before)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int
N004 ( 4, 4) [000029] n----------- +--* IND long
N003 ( 2, 2) [000028] -------N---- | \--* ADD long
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0
N001 [000025] LCL_VAR V07 tmp3 u:2 => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
N002 [000027] CNS_INT 96 => $c4 {LngCns: 96}
N003 [000028] ADD => <l:$246 {ADD($c4, $280)}, c:$245 {ADD($c4, $201)}>
N004 [000029] IND => <l:$282 {ByrefExposedLoad($42, $246, $81)}, c:$204 {204}>
N005 [000032] CNS_INT 0 => $c0 {LngCns: 0}
N006 [000033] EQ => <l:$2c5 {EQ($282, $c0)}, c:$2c4 {EQ($204, $c0)}>
***** BB02, STMT00016(after)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int <l:$2c5, c:$2c4>
N004 ( 4, 4) [000029] n----------- +--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
finish(BB02).
Succ(BB03).
Not yet completed.
All preds complete, adding to allDone.
Succ(BB04).
Not yet completed.
All preds complete, adding to allDone.
The SSA definition for ByrefExposed (#1) at start of BB04 is $81 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB04 is $81 {InitVal($41)}
***** BB04, STMT00018(before)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use)
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token
N001 [000136] ARGPLACE => $205 {205}
N002 [000137] ARGPLACE => $206 {206}
N003 [000017] LCL_VAR V05 tmp1 u:2 (last use) => $1c5 {$VN.ReadOnlyHeap[$80]}
N004 [000030] CNS_INT(h) 0x7ff9f1337fe8 token => $181 {Hnd const: 0x00007FF9F1337FE8}
VN of ARGPLACE tree [000136] updated to $1c5 {$VN.ReadOnlyHeap[$80]}
VN of ARGPLACE tree [000137] updated to $181 {Hnd const: 0x00007FF9F1337FE8}
N005 [000031] CALL help => $247 {RuntimeHandleClass($1c5, $181)}
N006 [000119] LCL_VAR V08 tmp4 d:3 => $247 {RuntimeHandleClass($1c5, $181)}
N007 [000120] ASG => $247 {RuntimeHandleClass($1c5, $181)}
***** BB04, STMT00018(after)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
finish(BB04).
Succ(BB05).
Not yet completed.
Not all preds complete Adding to notallDone, if necessary...
Was necessary.
The SSA definition for ByrefExposed (#1) at start of BB03 is $81 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB03 is $81 {InitVal($41)}
***** BB03, STMT00017(before)
N006 ( 4, 4) [000118] -A------R--- * ASG long
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4
N004 ( 4, 4) [000034] n----------- \--* IND long
N003 ( 2, 2) [000035] -------N---- \--* ADD long
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use)
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96
N001 [000036] LCL_VAR V07 tmp3 u:2 (last use) => <l:$280 {ByrefExposedLoad($42, $1c6, $81)}, c:$201 {201}>
N002 [000037] CNS_INT 96 => $c4 {LngCns: 96}
N003 [000035] ADD => <l:$246 {ADD($c4, $280)}, c:$245 {ADD($c4, $201)}>
N004 [000034] IND => <l:$282 {ByrefExposedLoad($42, $246, $81)}, c:$208 {208}>
N005 [000117] LCL_VAR V08 tmp4 d:4 => <l:$282 {ByrefExposedLoad($42, $246, $81)}, c:$208 {208}>
N006 [000118] ASG => <l:$282 {ByrefExposedLoad($42, $246, $81)}, c:$208 {208}>
***** BB03, STMT00017(after)
N006 ( 4, 4) [000118] -A------R--- * ASG long <l:$282, c:$208>
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N004 ( 4, 4) [000034] n----------- \--* IND long <l:$282, c:$208>
N003 ( 2, 2) [000035] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96 $c4
finish(BB03).
Succ(BB05).
Not yet completed.
All preds complete, adding to allDone.
SSA PHI definition: set VN of local 8/2 to $283 {PhiDef($8, $2, $248)} .
The SSA definition for ByrefExposed (#1) at start of BB05 is $81 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB05 is $81 {InitVal($41)}
***** BB05, STMT00005(before)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use)
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use)
N001 [000138] ARGPLACE => $300 {300}
N002 [000139] ARGPLACE => $20a {20a}
N003 [000140] ARGPLACE => $103 {103}
N004 [000005] LCL_VAR V02 loc1
byref V02._pointer (offs=0x00) -> V12 tmp8
int V02._length (offs=0x08) -> V13 tmp9 => $340 {340}
N005 [000006] ADDR => $301 {301}
N006 [000045] LCL_VAR V08 tmp4 u:2 (last use) => $283 {PhiDef($8, $2, $248)}
N007 [000016] LCL_VAR V06 tmp2 u:2 (last use) => <l:$1c1 {$1c0[$80]}, c:$101 {101}>
VN of ARGPLACE tree [000139] updated to $301 {301}
VN of ARGPLACE tree [000140] updated to $283 {PhiDef($8, $2, $248)}
fgCurMemoryVN[GcHeap] assigned for CALL at [000009] to VN: $104.
N008 [000009] CALL => $VN.Void
***** BB05, STMT00005(after)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
---------
***** BB05, STMT00006(before)
N003 ( 1, 3) [000049] -A------R--- * ASG int
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0
N001 [000047] CNS_INT 0 => $40 {IntCns 0}
N002 [000048] LCL_VAR V03 loc2 d:2 => $40 {IntCns 0}
N003 [000049] ASG => $40 {IntCns 0}
***** BB05, STMT00006(after)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
finish(BB05).
Succ(BB07).
Not yet completed.
Not all preds complete Adding to notallDone, if necessary...
Was necessary.
SSA PHI definition: set VN of local 3/3 to $3c0 {PhiDef($3, $3, $2c6)} .
Computing GcHeap state for block BB07, entry block for loops 0 to 0:
Loop 0 has memory havoc effect; heap state is new unique $400.
The SSA definition for GcHeap (#3) at start of BB07 is $400 {400}
***** BB07, STMT00007(before)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2
N002 ( 3, 2) [000055] #--X-------- \--* IND long
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1
N001 [000054] LCL_VAR V00 this u:1 => $80 {InitVal($40)}
VNForMapSelect($2, $80):ref returns $1c5 {$VN.ReadOnlyHeap[$80]}
VNForMapSelect($2, $80):ref returns $1c5 {$VN.ReadOnlyHeap[$80]}
N002 [000055] IND => $1c9 {norm=$1c5 {$VN.ReadOnlyHeap[$80]}, exc=$1c2 {NullPtrExc($80)}}
N003 [000056] LCL_VAR V09 tmp5 d:2 => $1c5 {$VN.ReadOnlyHeap[$80]}
N004 [000057] ASG => $1c9 {norm=$1c5 {$VN.ReadOnlyHeap[$80]}, exc=$1c2 {NullPtrExc($80)}}
***** BB07, STMT00007(after)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #--X-------- \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
---------
***** BB07, STMT00008(before)
N007 ( 7, 6) [000065] -A------R--- * ASG long
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2
N005 ( 7, 6) [000063] n----------- \--* IND long
N004 ( 4, 4) [000062] #----------- \--* IND long
N003 ( 2, 2) [000061] -------N---- \--* ADD long
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use)
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56
N001 [000059] LCL_VAR V09 tmp5 u:2 (last use) => $1c5 {$VN.ReadOnlyHeap[$80]}
N002 [000060] CNS_INT 56 => $c2 {LngCns: 56}
N003 [000061] ADD => $240 {ADD($c2, $1c5)}
VNForMapSelect($2, $240):ref returns $1c6 {$VN.ReadOnlyHeap[$240]}
VNForMapSelect($2, $240):ref returns $1c6 {$VN.ReadOnlyHeap[$240]}
N004 [000062] IND => $1c6 {$VN.ReadOnlyHeap[$240]}
N005 [000063] IND => <l:$284 {ByrefExposedLoad($42, $1c6, $400)}, c:$441 {441}>
N006 [000064] LCL_VAR V10 tmp6 d:2 => <l:$284 {ByrefExposedLoad($42, $1c6, $400)}, c:$441 {441}>
N007 [000065] ASG => <l:$284 {ByrefExposedLoad($42, $1c6, $400)}, c:$441 {441}>
***** BB07, STMT00008(after)
N007 ( 7, 6) [000065] -A------R--- * ASG long <l:$284, c:$441>
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N005 ( 7, 6) [000063] n----------- \--* IND long <l:$284, c:$441>
N004 ( 4, 4) [000062] #----------- \--* IND long $1c6
N003 ( 2, 2) [000061] -------N---- \--* ADD long $240
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use) $1c5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56 $c2
---------
***** BB07, STMT00019(before)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int
N004 ( 4, 4) [000081] ---X-------- +--* IND long
N003 ( 2, 2) [000080] -------N---- | \--* ADD long
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96
N001 [000067] LCL_VAR V10 tmp6 u:2 => <l:$284 {ByrefExposedLoad($42, $1c6, $400)}, c:$441 {441}>
N002 [000079] CNS_INT 8 => $c3 {LngCns: 8}
N003 [000080] ADD => <l:$24a {ADD($c3, $284)}, c:$249 {ADD($c3, $441)}>
N004 [000081] IND => <l:$24c {norm=$285 {ByrefExposedLoad($42, $24a, $400)}, exc=$1cb {NullPtrExc($24a)}}, c:$24b {norm=$443 {443}, exc=$1ca {NullPtrExc($249)}}>
N005 [000082] CNS_INT 96 => $c4 {LngCns: 96}
N006 [000083] LE => <l:$2ca {norm=$2c8 {LE($285, $c4)}, exc=$1cb {NullPtrExc($24a)}}, c:$2c9 {norm=$2c7 {LE($443, $c4)}, exc=$1ca {NullPtrExc($249)}}>
***** BB07, STMT00019(after)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
finish(BB07).
Succ(BB08).
Not yet completed.
All preds complete, adding to allDone.
Succ(BB10).
Not yet completed.
Not all preds complete Adding to notallDone, if necessary...
Was necessary.
The SSA definition for ByrefExposed (#3) at start of BB08 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB08 is $400 {400}
***** BB08, STMT00020(before)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int
N004 ( 4, 4) [000070] n----------- +--* IND long
N003 ( 2, 2) [000069] -------N---- | \--* ADD long
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use)
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0
N001 [000066] LCL_VAR V10 tmp6 u:2 (last use) => <l:$284 {ByrefExposedLoad($42, $1c6, $400)}, c:$441 {441}>
N002 [000068] CNS_INT 96 => $c4 {LngCns: 96}
N003 [000069] ADD => <l:$24e {ADD($c4, $284)}, c:$24d {ADD($c4, $441)}>
N004 [000070] IND => <l:$286 {ByrefExposedLoad($42, $24e, $400)}, c:$444 {444}>
N005 [000073] CNS_INT 0 => $c0 {LngCns: 0}
N006 [000074] EQ => <l:$2cc {EQ($286, $c0)}, c:$2cb {EQ($444, $c0)}>
***** BB08, STMT00020(after)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
finish(BB08).
Succ(BB09).
Not yet completed.
All preds complete, adding to allDone.
Succ(BB10).
Not yet completed.
All preds complete, adding to allDone.
The SSA definition for ByrefExposed (#3) at start of BB10 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB10 is $400 {400}
finish(BB10).
Succ(BB11).
Not yet completed.
Not all preds complete Adding to notallDone, if necessary...
Was necessary.
The SSA definition for ByrefExposed (#3) at start of BB09 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB09 is $400 {400}
finish(BB09).
Succ(BB11).
Not yet completed.
All preds complete, adding to allDone.
The SSA definition for ByrefExposed (#3) at start of BB11 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB11 is $400 {400}
***** BB11, STMT00011(before)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9
N001 [000050] LCL_VAR V03 loc2 u:3 => $3c0 {PhiDef($3, $3, $2c6)}
N002 [000132] LCL_VAR V13 tmp9 => $3c1 {ByrefExposedLoad($47, $142, $400)}
N003 [000089] LT => $2cd {LT($3c0, $3c1)}
***** BB11, STMT00011(after)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
finish(BB11).
Succ(BB12).
Not yet completed.
All preds complete, adding to allDone.
Succ(BB06).
Not yet completed.
All preds complete, adding to allDone.
The SSA definition for ByrefExposed (#3) at start of BB06 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB06 is $400 {400}
***** BB06, STMT00012(before)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init)
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8>
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8
N008 ( 4, 5) [000101] ------------ | \--* LSH long
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0
N001 [000093] LCL_VAR V03 loc2 u:3 => $3c0 {PhiDef($3, $3, $2c6)}
N002 [000097] LCL_VAR V13 tmp9 => $3c1 {ByrefExposedLoad($47, $142, $400)}
N003 [000098] ARR_BOUNDS_CHECK_Rng => $1ce {norm=$3 {3}, exc=$1cd {IndexOutOfRangeExc($3c0, $3c1)}}
N004 [000102] LCL_VAR V12 tmp8 => $480 {ByrefExposedLoad($49, $143, $400)}
N005 [000094] LCL_VAR V03 loc2 u:3 => $3c0 {PhiDef($3, $3, $2c6)}
VNForCastOper(long) is $4a
N006 [000099] CAST => $24f {Cast($3c0, $4a)}
N007 [000100] CNS_INT 3 => $44 {IntCns 3}
N008 [000101] LSH => $250 {LSH($24f, $44)}
N009 [000103] ADD => $144 {ADD($250, $480)}
N010 [000104] COMMA => $145 {norm=$144 {ADD($250, $480)}, exc=$1cd {IndexOutOfRangeExc($3c0, $3c1)}}
N011 [000106] BLK => $1d1 {norm=$3 {3}, exc=$1d0( {NullPtrExc($144)}, {IndexOutOfRangeExc($3c0, $3c1)})}
N012 [000105] CNS_INT 0 => $40 {IntCns 0}
fgCurMemoryVN[GcHeap] assigned for INITBLK - non local at [000107] to VN: $401.
N013 [000107] ASG => $VN.Void
***** BB06, STMT00012(after)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
---------
***** BB06, STMT00013(before)
N005 ( 3, 3) [000112] -A------R--- * ASG int
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4
N003 ( 3, 3) [000110] ------------ \--* ADD int
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use)
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1
N001 [000108] LCL_VAR V03 loc2 u:3 (last use) => $3c0 {PhiDef($3, $3, $2c6)}
N002 [000109] CNS_INT 1 => $4b {IntCns 1}
N003 [000110] ADD => $2ce {ADD($4b, $3c0)}
N004 [000111] LCL_VAR V03 loc2 d:4 => $2ce {ADD($4b, $3c0)}
N005 [000112] ASG => $2ce {ADD($4b, $3c0)}
***** BB06, STMT00013(after)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
finish(BB06).
Succ(BB07).
The SSA definition for ByrefExposed (#3) at start of BB12 is $400 {400}
The SSA definition for GcHeap (#3) at start of BB12 is $400 {400}
***** BB12, STMT00014(before)
N002 ( 4, 3) [000114] ------------ * RETURN ref
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use)
N001 [000113] LCL_VAR V01 loc0 u:2 (last use) => $VN.Null
N002 [000114] RETURN => $105 {105}
***** BB12, STMT00014(after)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use) $VN.Null
finish(BB12).
*************** Finishing PHASE Do value numbering
*************** Starting PHASE Hoist loop code
*************** In optHoistLoopCode()
Blocks/Trees before phase
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long <l:$280, c:$201>
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N005 ( 7, 6) [000022] n----------- \--* IND long <l:$280, c:$201>
N004 ( 4, 4) [000021] #----------- \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- \--* ADD long $240
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56 $c2
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int <l:$2c5, c:$2c4>
N004 ( 4, 4) [000029] n----------- +--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long <l:$282, c:$208>
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N004 ( 4, 4) [000034] n----------- \--* IND long <l:$282, c:$208>
N003 ( 2, 2) [000035] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96 $c4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #--X-------- \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long <l:$284, c:$441>
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N005 ( 7, 6) [000063] n----------- \--* IND long <l:$284, c:$441>
N004 ( 4, 4) [000062] #----------- \--* IND long $1c6
N003 ( 2, 2) [000061] -------N---- \--* ADD long $240
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use) $1c5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56 $c2
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use) $VN.Null
-------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Hoist loop code
*************** Starting PHASE VN based copy prop
*************** In optVnCopyProp()
Copy Assertion for BB01
curSsaName stack: { }
Live vars: {V00} => {V00 V01}
Live vars: {V00 V01} => {V00 V01 V06}
Live vars: {V00 V01 V06} => {V00 V01 V05 V06}
Live vars: {V00 V01 V05 V06} => {V00 V01 V05 V06 V07}
Copy Assertion for BB05
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 }
Live vars: {V00 V01 V06 V08} => {V00 V01 V06}
Live vars: {V00 V01 V06} => {V00 V01}
Live vars: {V00 V01} => {V00 V01 V03}
Copy Assertion for BB07
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000048]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 }
Live vars: {V00 V01 V03} => {V00 V01 V03 V09}
Live vars: {V00 V01 V03 V09} => {V00 V01 V03}
Live vars: {V00 V01 V03} => {V00 V01 V03 V10}
Copy Assertion for BB11
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Copy Assertion for BB12
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Live vars: {V00 V01} => {V00}
Copy Assertion for BB06
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Live vars: {V00 V01 V03} => {V00 V01}
Live vars: {V00 V01} => {V00 V01 V03}
Copy Assertion for BB10
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Copy Assertion for BB08
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Live vars: {V00 V01 V03 V10} => {V00 V01 V03}
Copy Assertion for BB09
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 3-[000143]:V03 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 8-[000146]:V08 9-[000056]:V09 10-[000064]:V10 }
Copy Assertion for BB04
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 }
Live vars: {V00 V01 V05 V06} => {V00 V01 V06}
Live vars: {V00 V01 V06} => {V00 V01 V06 V08}
Copy Assertion for BB02
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 }
Copy Assertion for BB03
curSsaName stack: { 0-[000007]:V00 1-[000000]:V01 5-[000012]:V05 6-[000014]:V06 7-[000023]:V07 }
Live vars: {V00 V01 V06 V07} => {V00 V01 V06}
Live vars: {V00 V01 V06} => {V00 V01 V06 V08}
*************** Finishing PHASE VN based copy prop
*************** Starting PHASE Optimize Valnum CSEs
*************** In optOptimizeCSEs()
Blocks/Trees at start of optOptimizeCSE phase
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long <l:$280, c:$201>
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N005 ( 7, 6) [000022] n----------- \--* IND long <l:$280, c:$201>
N004 ( 4, 4) [000021] #----------- \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- \--* ADD long $240
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56 $c2
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int <l:$2c5, c:$2c4>
N004 ( 4, 4) [000029] n----------- +--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long <l:$282, c:$208>
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N004 ( 4, 4) [000034] n----------- \--* IND long <l:$282, c:$208>
N003 ( 2, 2) [000035] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96 $c4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #--X-------- \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long <l:$284, c:$441>
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N005 ( 7, 6) [000063] n----------- \--* IND long <l:$284, c:$441>
N004 ( 4, 4) [000062] #----------- \--* IND long $1c6
N003 ( 2, 2) [000061] -------N---- \--* ADD long $240
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use) $1c5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56 $c2
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use) $VN.Null
-------------------------------------------------------------------------------------------------------------------
*************** In optOptimizeValnumCSEs()
CSE candidate #01, key=$282 in BB03, [cost= 4, size= 4]:
N004 ( 4, 4) CSE #01 (use)[000034] n----------- * IND long <l:$282, c:$208>
N003 ( 2, 2) [000035] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96 $c4
CSE candidate #02, key=$1c5 in BB07, [cost= 3, size= 2]:
N002 ( 3, 2) CSE #02 (use)[000055] #--X-------- * IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
CSE candidate #03, key=$1c6 in BB07, [cost= 4, size= 4]:
N004 ( 4, 4) CSE #03 (use)[000062] #----------- * IND long $1c6
N003 ( 2, 2) [000061] -------N---- \--* ADD long $240
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use) $1c5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56 $c2
Blocks that generate CSE def/uses
BB01 cseGen = 000000000000003C
BB02 cseGen = 0000000000000003
BB03 cseGen = 0000000000000003
BB07 cseGen = 000000000000003C
Performing DataFlow for ValnumCSE's
StartMerge BB01
:: cseOut = 000000000000007F
EndMerge BB01
:: cseIn = 0000000000000000
:: cseGen = 000000000000003C
=> cseOut = 000000000000003C
!= preMerge = 000000000000007F, => true
StartMerge BB02
:: cseOut = 000000000000007F
Merge BB02 and BB01
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
EndMerge BB02
:: cseIn = 000000000000003C
:: cseGen = 0000000000000003
=> cseOut = 000000000000003F
!= preMerge = 000000000000007F, => true
StartMerge BB04
:: cseOut = 000000000000007F
Merge BB04 and BB01
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
Merge BB04 and BB02
:: cseIn = 000000000000003C
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
EndMerge BB04
:: cseIn = 000000000000003C
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB03
:: cseOut = 000000000000007F
Merge BB03 and BB02
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003F
EndMerge BB03
:: cseIn = 000000000000003F
:: cseGen = 0000000000000003
=> cseOut = 000000000000003F
!= preMerge = 000000000000007F, => true
StartMerge BB04
:: cseOut = 0000000000000014
Merge BB04 and BB01
:: cseIn = 000000000000003C
:: cseOut = 0000000000000014
=> cseIn = 000000000000003C
Merge BB04 and BB02
:: cseIn = 000000000000003C
:: cseOut = 0000000000000014
=> cseIn = 000000000000003C
EndMerge BB04
:: cseIn = 000000000000003C
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 0000000000000014, => false
StartMerge BB05
:: cseOut = 000000000000007F
Merge BB05 and BB03
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003F
Merge BB05 and BB04
:: cseIn = 000000000000003F
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
EndMerge BB05
:: cseIn = 0000000000000014
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB05
:: cseOut = 0000000000000014
Merge BB05 and BB03
:: cseIn = 0000000000000014
:: cseOut = 0000000000000014
=> cseIn = 0000000000000014
Merge BB05 and BB04
:: cseIn = 0000000000000014
:: cseOut = 0000000000000014
=> cseIn = 0000000000000014
EndMerge BB05
:: cseIn = 0000000000000014
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 0000000000000014, => false
StartMerge BB07
:: cseOut = 000000000000007F
Merge BB07 and BB05
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
Merge BB07 and BB06
:: cseIn = 0000000000000014
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
EndMerge BB07
:: cseIn = 0000000000000014
:: cseGen = 000000000000003C
=> cseOut = 000000000000003C
!= preMerge = 000000000000007F, => true
StartMerge BB08
:: cseOut = 000000000000007F
Merge BB08 and BB07
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
EndMerge BB08
:: cseIn = 000000000000003C
:: cseGen = 0000000000000000
=> cseOut = 000000000000003C
!= preMerge = 000000000000007F, => true
StartMerge BB10
:: cseOut = 000000000000007F
Merge BB10 and BB07
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
Merge BB10 and BB08
:: cseIn = 000000000000003C
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
EndMerge BB10
:: cseIn = 000000000000003C
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB09
:: cseOut = 000000000000007F
Merge BB09 and BB08
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
EndMerge BB09
:: cseIn = 000000000000003C
:: cseGen = 0000000000000000
=> cseOut = 000000000000003C
!= preMerge = 000000000000007F, => true
StartMerge BB10
:: cseOut = 0000000000000014
Merge BB10 and BB07
:: cseIn = 000000000000003C
:: cseOut = 0000000000000014
=> cseIn = 000000000000003C
Merge BB10 and BB08
:: cseIn = 000000000000003C
:: cseOut = 0000000000000014
=> cseIn = 000000000000003C
EndMerge BB10
:: cseIn = 000000000000003C
-- cseKill = 0000000000000015
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 0000000000000014, => false
StartMerge BB11
:: cseOut = 000000000000007F
Merge BB11 and BB09
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 000000000000003C
Merge BB11 and BB10
:: cseIn = 000000000000003C
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
EndMerge BB11
:: cseIn = 0000000000000014
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB11
:: cseOut = 0000000000000014
Merge BB11 and BB09
:: cseIn = 0000000000000014
:: cseOut = 0000000000000014
=> cseIn = 0000000000000014
Merge BB11 and BB10
:: cseIn = 0000000000000014
:: cseOut = 0000000000000014
=> cseIn = 0000000000000014
EndMerge BB11
:: cseIn = 0000000000000014
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 0000000000000014, => false
StartMerge BB12
:: cseOut = 000000000000007F
Merge BB12 and BB11
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
EndMerge BB12
:: cseIn = 0000000000000014
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB06
:: cseOut = 000000000000007F
Merge BB06 and BB11
:: cseIn = 000000000000007F
:: cseOut = 000000000000007F
=> cseIn = 0000000000000014
EndMerge BB06
:: cseIn = 0000000000000014
:: cseGen = 0000000000000000
=> cseOut = 0000000000000014
!= preMerge = 000000000000007F, => true
StartMerge BB07
:: cseOut = 000000000000003C
Merge BB07 and BB05
:: cseIn = 0000000000000014
:: cseOut = 000000000000003C
=> cseIn = 0000000000000014
Merge BB07 and BB06
:: cseIn = 0000000000000014
:: cseOut = 000000000000003C
=> cseIn = 0000000000000014
EndMerge BB07
:: cseIn = 0000000000000014
:: cseGen = 000000000000003C
=> cseOut = 000000000000003C
!= preMerge = 000000000000003C, => false
After performing DataFlow for ValnumCSE's
BB01 cseIn = 0000000000000000, cseGen = 000000000000003C, cseOut = 000000000000003C
BB02 cseIn = 000000000000003C, cseGen = 0000000000000003, cseOut = 000000000000003F
BB03 cseIn = 000000000000003F, cseGen = 0000000000000003, cseOut = 000000000000003F
BB04 cseIn = 000000000000003C, cseGen = 0000000000000000, cseOut = 0000000000000014
BB05 cseIn = 0000000000000014, cseGen = 0000000000000000, cseOut = 0000000000000014
BB06 cseIn = 0000000000000014, cseGen = 0000000000000000, cseOut = 0000000000000014
BB07 cseIn = 0000000000000014, cseGen = 000000000000003C, cseOut = 000000000000003C
BB08 cseIn = 000000000000003C, cseGen = 0000000000000000, cseOut = 000000000000003C
BB09 cseIn = 000000000000003C, cseGen = 0000000000000000, cseOut = 000000000000003C
BB10 cseIn = 000000000000003C, cseGen = 0000000000000000, cseOut = 0000000000000014
BB11 cseIn = 0000000000000014, cseGen = 0000000000000000, cseOut = 0000000000000014
BB12 cseIn = 0000000000000014, cseGen = 0000000000000000, cseOut = 0000000000000014
Labeling the CSEs with Use/Def information
BB01 [000011] Def of CSE #02 [weight=1 ]
BB01 [000021] Def of CSE #03 [weight=1 ]
BB02 [000029] Def of CSE #01 [weight=0.40]
BB03 [000034] Use of CSE #01 [weight=0.40]
BB07 [000055] Use of CSE #02 [weight=8 ] *** Now Live Across Call ***
NO_CSE - This use has an exception set item that isn't contained in the defs!
BB07 [000062] Use of CSE #03 [weight=8 ] *** Now Live Across Call ***
************ Trees at start of optValnumCSE_Heuristic()
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) CSE #02 (def)[000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N007 ( 7, 6) [000024] -A------R--- * ASG long <l:$280, c:$201>
N006 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N005 ( 7, 6) [000022] n----------- \--* IND long <l:$280, c:$201>
N004 ( 4, 4) CSE #03 (def)[000021] #----------- \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- \--* ADD long $240
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56 $c2
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N007 ( 8, 8) [000116] ------------ * JTRUE void
N006 ( 6, 6) [000033] J------N---- \--* EQ int <l:$2c5, c:$2c4>
N004 ( 4, 4) CSE #01 (def)[000029] n----------- +--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N006 ( 4, 4) [000118] -A------R--- * ASG long <l:$282, c:$208>
N005 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N004 ( 4, 4) CSE #01 (use)[000034] n----------- \--* IND long <l:$282, c:$208>
N003 ( 2, 2) [000035] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000036] ------------ +--* LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
N002 ( 1, 1) [000037] ------------ \--* CNS_INT long 96 $c4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #--X-------- \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N007 ( 7, 6) [000065] -A------R--- * ASG long <l:$284, c:$441>
N006 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N005 ( 7, 6) [000063] n----------- \--* IND long <l:$284, c:$441>
N004 ( 4, 4) CSE #03 (use)[000062] #----------- \--* IND long $1c6
N003 ( 2, 2) [000061] -------N---- \--* ADD long $240
N001 ( 1, 1) [000059] ------------ +--* LCL_VAR long V09 tmp5 u:2 (last use) $1c5
N002 ( 1, 1) [000060] ------------ \--* CNS_INT long 56 $c2
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use) $VN.Null
-------------------------------------------------------------------------------------------------------------------
Aggressive CSE Promotion cutoff is 200
Moderate CSE Promotion cutoff is 100
enregCount is 10
Framesize estimate is 0x001C
We have a small frame
Sorted CSE candidates:
CSE #03, {$1c6, $4 } useCnt=1: [def=100, use=800, cost= 4, call]
:: N004 ( 4, 4) CSE #03 (def)[000021] #----------- * IND long $1c6
CSE #01, {$282, $4 } useCnt=1: [def= 40, use= 40, cost= 4 ]
:: N004 ( 4, 4) CSE #01 (def)[000029] n----------- * IND long <l:$282, c:$204>
CSE #02, {$1c5, $4 } useCnt=0: [def=100, use= 0, cost= 3, call]
:: N002 ( 3, 2) CSE #02 (def)[000011] #----O------ * IND long $1c5
Considering CSE #03 {$1c6, $4 } [def=100, use=800, cost= 4, call]
CSE Expression :
N004 ( 4, 4) CSE #03 (def)[000021] #----------- * IND long $1c6
N003 ( 2, 2) [000020] -------N---- \--* ADD long $240
N001 ( 1, 1) [000018] ------------ +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ \--* CNS_INT long 56 $c2
Aggressive CSE Promotion (1000 >= 200)
cseRefCnt=1000, aggressiveRefCnt=200, moderateRefCnt=100
defCnt=100, useCnt=800, cost=4, size=4, LiveAcrossCall
def_cost=1, use_cost=1, extra_no_cost=6, extra_yes_cost=100
CSE cost savings check (3206 >= 1000) passes
Promoting CSE:
lvaGrabTemp returning 14 (V14 rat0) (a long lifetime temp) called for CSE - aggressive.
CSE #03 is single-def, so associated CSE temp V14 will be in SSA
New refCnts for V14: refCnt = 2, refCntWtd = 2
New refCnts for V14: refCnt = 3, refCntWtd = 10
CSE #03 def at [000021] replaced in BB01 with def of V14
optValnumCSE morphed tree:
N011 ( 8, 7) [000024] -A------R--- * ASG long <l:$280, c:$201>
N010 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N009 ( 8, 7) [000022] nA---------- \--* IND long <l:$280, c:$201>
N008 ( 5, 5) [000156] -A---------- \--* COMMA long $1c6
N006 ( 4, 4) [000154] -A------R--- +--* ASG long $VN.Void
N005 ( 1, 1) [000153] D------N---- | +--* LCL_VAR long V14 cse0 d:1 $1c6
N004 ( 4, 4) [000021] #----------- | \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- | \--* ADD long $240
N001 ( 1, 1) [000018] ------------ | +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ | \--* CNS_INT long 56 $c2
N007 ( 1, 1) [000155] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
Working on the replacement of the CSE #03 use at [000062] in BB07
optValnumCSE morphed tree:
N004 ( 3, 3) [000065] -A------R--- * ASG long <l:$284, c:$441>
N003 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N002 ( 3, 2) [000063] n----------- \--* IND long <l:$284, c:$441>
N001 ( 1, 1) [000157] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
Considering CSE #01 {$282, $4 } [def= 40, use= 40, cost= 4 ]
CSE Expression :
N004 ( 4, 4) CSE #01 (def)[000029] n----------- * IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ \--* CNS_INT long 96 $c4
Conservative CSE Promotion (not enregisterable) (120 < 150)
cseRefCnt=120, aggressiveRefCnt=300, moderateRefCnt=150
defCnt=40, useCnt=40, cost=4, size=4
def_cost=2, use_cost=2, extra_no_cost=4, extra_yes_cost=0
CSE cost savings check (164 >= 160) passes
Promoting CSE:
lvaGrabTemp returning 15 (V15 rat0) (a long lifetime temp) called for CSE - conservative.
CSE #01 is single-def, so associated CSE temp V15 will be in SSA
New refCnts for V15: refCnt = 2, refCntWtd = 0.80
New refCnts for V15: refCnt = 3, refCntWtd = 1.20
CSE #01 def at [000029] replaced in BB02 with def of V15
optValnumCSE morphed tree:
N011 ( 15, 13) [000116] -A---------- * JTRUE void
N010 ( 13, 11) [000033] JA-----N---- \--* EQ int <l:$2c5, c:$2c4>
N008 ( 11, 9) [000161] -A---------- +--* COMMA long <l:$282, c:$204>
N006 ( 8, 7) [000159] -A------R--- | +--* ASG long $VN.Void
N005 ( 3, 2) [000158] D------N---- | | +--* LCL_VAR long V15 cse1 d:1 <l:$282, c:$204>
N004 ( 4, 4) [000029] n----------- | | \--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | | \--* CNS_INT long 96 $c4
N007 ( 3, 2) [000160] ------------ | \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
Working on the replacement of the CSE #01 use at [000034] in BB03
optValnumCSE morphed tree:
N003 ( 3, 3) [000118] -A------R--- * ASG long <l:$282, c:$208>
N002 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N001 ( 3, 2) [000162] ------------ \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
Skipped CSE #02 because use count is 0
*************** Finishing PHASE Optimize Valnum CSEs
*************** Starting PHASE Assertion prop
*************** In optAssertionPropMain()
Blocks/Trees at start of phase
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N011 ( 8, 7) [000024] -A------R--- * ASG long <l:$280, c:$201>
N010 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N009 ( 8, 7) [000022] nA---------- \--* IND long <l:$280, c:$201>
N008 ( 5, 5) [000156] -A---------- \--* COMMA long $1c6
N006 ( 4, 4) [000154] -A------R--- +--* ASG long $VN.Void
N005 ( 1, 1) [000153] D------N---- | +--* LCL_VAR long V14 cse0 d:1 $1c6
N004 ( 4, 4) [000021] #----------- | \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- | \--* ADD long $240
N001 ( 1, 1) [000018] ------------ | +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ | \--* CNS_INT long 56 $c2
N007 ( 1, 1) [000155] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N011 ( 15, 13) [000116] -A---------- * JTRUE void
N010 ( 13, 11) [000033] JA-----N---- \--* EQ int <l:$2c5, c:$2c4>
N008 ( 11, 9) [000161] -A---------- +--* COMMA long <l:$282, c:$204>
N006 ( 8, 7) [000159] -A------R--- | +--* ASG long $VN.Void
N005 ( 3, 2) [000158] D------N---- | | +--* LCL_VAR long V15 cse1 d:1 <l:$282, c:$204>
N004 ( 4, 4) [000029] n----------- | | \--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | | \--* CNS_INT long 96 $c4
N007 ( 3, 2) [000160] ------------ | \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N003 ( 3, 3) [000118] -A------R--- * ASG long <l:$282, c:$208>
N002 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N001 ( 3, 2) [000162] ------------ \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #--X-------- \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N004 ( 3, 3) [000065] -A------R--- * ASG long <l:$284, c:$441>
N003 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N002 ( 3, 2) [000063] n----------- \--* IND long <l:$284, c:$441>
N001 ( 1, 1) [000157] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
N001 ( 3, 2) [000113] ------------ \--* LCL_VAR ref V01 loc0 u:2 (last use) $VN.Null
-------------------------------------------------------------------------------------------------------------------
GenTreeNode creates assertion:
N004 ( 4, 4) [000008] ---XG------- * IND ref <l:$1c4, c:$1c3>
In BB01 New Global Constant Assertion: (128, 0) ($80,$0) V00.01 != null index=#01, mask=0000000000000001
GenTreeNode creates assertion:
N003 ( 8, 10) [000098] ---XG------- * ARR_BOUNDS_CHECK_Rng void $1ce
In BB06 New Global ArrBnds Assertion: (0, 0) ($0,$0) [idx: {PhiDef($3, $3, $2c6)};len: {ByrefExposedLoad($47, $142, $400)}] in range index=#02, mask=0000000000000002
GenTreeNode creates assertion:
N004 ( 7, 6) [000090] ----G------- * JTRUE void
In BB11 New Global Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
GenTreeNode creates assertion:
N004 ( 7, 6) [000090] ----G------- * JTRUE void
In BB11 New Global Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is {IntCns 0} index=#04, mask=0000000000000008
After constant propagation on [000113]:
STMT00014 (IL 0x035...0x036)
N002 ( 4, 3) [000114] ------------ * RETURN ref $105
[000163] ------------ \--* CNS_INT ref null $VN.Null
optVNAssertionPropCurStmt morphed tree:
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
N001 ( 1, 1) [000163] ------------ \--* CNS_INT ref null $VN.Null
BB01 valueGen = 0000000000000001 => BB04 valueGen = 0000000000000001,
BB02 valueGen = 0000000000000000 => BB04 valueGen = 0000000000000000,
BB03 valueGen = 0000000000000000
BB04 valueGen = 0000000000000000
BB05 valueGen = 0000000000000000
BB06 valueGen = 0000000000000002
BB07 valueGen = 0000000000000001 => BB10 valueGen = 0000000000000001,
BB08 valueGen = 0000000000000000 => BB10 valueGen = 0000000000000000,
BB09 valueGen = 0000000000000000
BB10 valueGen = 0000000000000000
BB11 valueGen = 0000000000000008 => BB06 valueGen = 0000000000000004,
BB12 valueGen = 0000000000000000
AssertionPropCallback::StartMerge: BB01 in -> 0000000000000000
AssertionPropCallback::EndMerge : BB01 in -> 0000000000000000
AssertionPropCallback::Changed : BB01 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB02 in -> 000000000000000F
AssertionPropCallback::Merge : BB02 in -> 000000000000000F, predBlock BB01 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB02 in -> 0000000000000001
AssertionPropCallback::Changed : BB02 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB04 in -> 000000000000000F
AssertionPropCallback::Merge : BB04 in -> 000000000000000F, predBlock BB01 out -> 0000000000000001
AssertionPropCallback::Merge : BB04 in -> 0000000000000001, predBlock BB02 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB04 in -> 0000000000000001
AssertionPropCallback::Changed : BB04 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB03 in -> 000000000000000F
AssertionPropCallback::Merge : BB03 in -> 000000000000000F, predBlock BB02 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB03 in -> 0000000000000001
AssertionPropCallback::Changed : BB03 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB04 in -> 0000000000000001
AssertionPropCallback::Merge : BB04 in -> 0000000000000001, predBlock BB01 out -> 0000000000000001
AssertionPropCallback::Merge : BB04 in -> 0000000000000001, predBlock BB02 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB04 in -> 0000000000000001
AssertionPropCallback::Unchanged : BB04 out -> 0000000000000001; jumpDest out -> 0000000000000001
AssertionPropCallback::StartMerge: BB05 in -> 000000000000000F
AssertionPropCallback::Merge : BB05 in -> 000000000000000F, predBlock BB03 out -> 0000000000000001
AssertionPropCallback::Merge : BB05 in -> 0000000000000001, predBlock BB04 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB05 in -> 0000000000000001
AssertionPropCallback::Changed : BB05 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB05 in -> 0000000000000001
AssertionPropCallback::Merge : BB05 in -> 0000000000000001, predBlock BB03 out -> 0000000000000001
AssertionPropCallback::Merge : BB05 in -> 0000000000000001, predBlock BB04 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB05 in -> 0000000000000001
AssertionPropCallback::Unchanged : BB05 out -> 0000000000000001; jumpDest out -> 0000000000000001
AssertionPropCallback::StartMerge: BB07 in -> 000000000000000F
AssertionPropCallback::Merge : BB07 in -> 000000000000000F, predBlock BB05 out -> 0000000000000001
AssertionPropCallback::Merge : BB07 in -> 0000000000000001, predBlock BB06 out -> 000000000000000F
AssertionPropCallback::EndMerge : BB07 in -> 0000000000000001
AssertionPropCallback::Changed : BB07 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB08 in -> 000000000000000F
AssertionPropCallback::Merge : BB08 in -> 000000000000000F, predBlock BB07 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB08 in -> 0000000000000001
AssertionPropCallback::Changed : BB08 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB10 in -> 000000000000000F
AssertionPropCallback::Merge : BB10 in -> 000000000000000F, predBlock BB07 out -> 0000000000000001
AssertionPropCallback::Merge : BB10 in -> 0000000000000001, predBlock BB08 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB10 in -> 0000000000000001
AssertionPropCallback::Changed : BB10 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB09 in -> 000000000000000F
AssertionPropCallback::Merge : BB09 in -> 000000000000000F, predBlock BB08 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB09 in -> 0000000000000001
AssertionPropCallback::Changed : BB09 before out -> 000000000000000F; after out -> 0000000000000001;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000001;
AssertionPropCallback::StartMerge: BB10 in -> 0000000000000001
AssertionPropCallback::Merge : BB10 in -> 0000000000000001, predBlock BB07 out -> 0000000000000001
AssertionPropCallback::Merge : BB10 in -> 0000000000000001, predBlock BB08 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB10 in -> 0000000000000001
AssertionPropCallback::Unchanged : BB10 out -> 0000000000000001; jumpDest out -> 0000000000000001
AssertionPropCallback::StartMerge: BB11 in -> 000000000000000F
AssertionPropCallback::Merge : BB11 in -> 000000000000000F, predBlock BB09 out -> 0000000000000001
AssertionPropCallback::Merge : BB11 in -> 0000000000000001, predBlock BB10 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB11 in -> 0000000000000001
AssertionPropCallback::Changed : BB11 before out -> 000000000000000F; after out -> 0000000000000009;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000005;
AssertionPropCallback::StartMerge: BB11 in -> 0000000000000001
AssertionPropCallback::Merge : BB11 in -> 0000000000000001, predBlock BB09 out -> 0000000000000001
AssertionPropCallback::Merge : BB11 in -> 0000000000000001, predBlock BB10 out -> 0000000000000001
AssertionPropCallback::EndMerge : BB11 in -> 0000000000000001
AssertionPropCallback::Unchanged : BB11 out -> 0000000000000009; jumpDest out -> 0000000000000005
AssertionPropCallback::StartMerge: BB12 in -> 000000000000000F
AssertionPropCallback::Merge : BB12 in -> 000000000000000F, predBlock BB11 out -> 0000000000000009
AssertionPropCallback::EndMerge : BB12 in -> 0000000000000009
AssertionPropCallback::Changed : BB12 before out -> 000000000000000F; after out -> 0000000000000009;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000009;
AssertionPropCallback::StartMerge: BB06 in -> 000000000000000F
AssertionPropCallback::Merge : BB06 in -> 000000000000000F, predBlock BB11 out -> 0000000000000009
AssertionPropCallback::EndMerge : BB06 in -> 0000000000000005
AssertionPropCallback::Changed : BB06 before out -> 000000000000000F; after out -> 0000000000000007;
jumpDest before out -> 000000000000000F; jumpDest after out -> 0000000000000005;
AssertionPropCallback::StartMerge: BB07 in -> 0000000000000001
AssertionPropCallback::Merge : BB07 in -> 0000000000000001, predBlock BB05 out -> 0000000000000001
AssertionPropCallback::Merge : BB07 in -> 0000000000000001, predBlock BB06 out -> 0000000000000007
AssertionPropCallback::EndMerge : BB07 in -> 0000000000000001
AssertionPropCallback::Unchanged : BB07 out -> 0000000000000001; jumpDest out -> 0000000000000001
BB01 valueIn = 0000000000000000 valueOut = 0000000000000001 => BB04 valueOut= 0000000000000001
BB02 valueIn = 0000000000000001 valueOut = 0000000000000001 => BB04 valueOut= 0000000000000001
BB03 valueIn = 0000000000000001 valueOut = 0000000000000001
BB04 valueIn = 0000000000000001 valueOut = 0000000000000001
BB05 valueIn = 0000000000000001 valueOut = 0000000000000001
BB06 valueIn = 0000000000000005 valueOut = 0000000000000007
BB07 valueIn = 0000000000000001 valueOut = 0000000000000001 => BB10 valueOut= 0000000000000001
BB08 valueIn = 0000000000000001 valueOut = 0000000000000001 => BB10 valueOut= 0000000000000001
BB09 valueIn = 0000000000000001 valueOut = 0000000000000001
BB10 valueIn = 0000000000000001 valueOut = 0000000000000001
BB11 valueIn = 0000000000000001 valueOut = 0000000000000009 => BB06 valueOut= 0000000000000005
BB12 valueIn = 0000000000000009 valueOut = 0000000000000009
Propagating 0000000000000000 assertions for BB01, stmt STMT00000, tree [000002], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00000, tree [000000], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00000, tree [000004], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00002, tree [000007], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00002, tree [000134], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00002, tree [000135], tree -> 0
Propagating 0000000000000000 assertions for BB01, stmt STMT00002, tree [000008], tree -> 1
Propagating 0000000000000001 assertions for BB01, stmt STMT00002, tree [000014], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00002, tree [000015], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00001, tree [000010], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00001, tree [000011], tree -> 1
Propagating 0000000000000001 assertions for BB01, stmt STMT00001, tree [000012], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00001, tree [000013], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000018], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000019], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000020], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000021], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000153], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000154], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000155], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000156], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000022], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000023], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00003, tree [000024], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000026], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000038], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000039], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000040], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000041], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000042], tree -> 0
Propagating 0000000000000001 assertions for BB01, stmt STMT00015, tree [000115], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000025], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000027], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000028], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000029], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000158], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000159], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000160], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000161], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000032], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000033], tree -> 0
Propagating 0000000000000001 assertions for BB02, stmt STMT00016, tree [000116], tree -> 0
Propagating 0000000000000001 assertions for BB03, stmt STMT00017, tree [000162], tree -> 0
Propagating 0000000000000001 assertions for BB03, stmt STMT00017, tree [000117], tree -> 0
Propagating 0000000000000001 assertions for BB03, stmt STMT00017, tree [000118], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000136], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000137], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000017], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000030], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000031], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000119], tree -> 0
Propagating 0000000000000001 assertions for BB04, stmt STMT00018, tree [000120], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000138], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000139], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000140], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000005], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000006], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000045], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000016], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00005, tree [000009], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00006, tree [000047], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00006, tree [000048], tree -> 0
Propagating 0000000000000001 assertions for BB05, stmt STMT00006, tree [000049], tree -> 0
Propagating 0000000000000005 assertions for BB06, stmt STMT00012, tree [000093], tree -> 0
Propagating 0000000000000005 assertions for BB06, stmt STMT00012, tree [000097], tree -> 0
Propagating 0000000000000005 assertions for BB06, stmt STMT00012, tree [000098], tree -> 2
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000102], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000094], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000099], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000100], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000101], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000103], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000104], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000106], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000105], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00012, tree [000107], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00013, tree [000108], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00013, tree [000109], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00013, tree [000110], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00013, tree [000111], tree -> 0
Propagating 0000000000000007 assertions for BB06, stmt STMT00013, tree [000112], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00007, tree [000054], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00007, tree [000055], tree -> 1
Non-null prop for index #01 in BB07:
N002 ( 3, 2) [000055] #--X-------- * IND long $1c9
Propagating 0000000000000001 assertions for BB07, stmt STMT00007, tree [000056], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00007, tree [000057], tree -> 0
Re-morphing this stmt:
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A-X----R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #----O------ \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
optAssertionPropMain morphed tree:
N004 ( 3, 3) [000057] -A---O--R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #----O------ \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
Propagating 0000000000000001 assertions for BB07, stmt STMT00008, tree [000157], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00008, tree [000063], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00008, tree [000064], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00008, tree [000065], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000067], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000079], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000080], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000081], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000082], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000083], tree -> 0
Propagating 0000000000000001 assertions for BB07, stmt STMT00019, tree [000121], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000066], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000068], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000069], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000070], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000073], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000074], tree -> 0
Propagating 0000000000000001 assertions for BB08, stmt STMT00020, tree [000122], tree -> 0
Propagating 0000000000000001 assertions for BB11, stmt STMT00011, tree [000050], tree -> 0
Propagating 0000000000000001 assertions for BB11, stmt STMT00011, tree [000132], tree -> 0
Propagating 0000000000000001 assertions for BB11, stmt STMT00011, tree [000089], tree -> 0
Propagating 0000000000000001 assertions for BB11, stmt STMT00011, tree [000090], tree -> 3
Propagating 0000000000000009 assertions for BB12, stmt STMT00014, tree [000163], tree -> 0
Propagating 0000000000000009 assertions for BB12, stmt STMT00014, tree [000114], tree -> 0
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Assertion prop
*************** Starting PHASE Optimize index checks
*************** In OptimizeRangeChecks()
Blocks/trees before phase
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N011 ( 8, 7) [000024] -A------R--- * ASG long <l:$280, c:$201>
N010 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N009 ( 8, 7) [000022] nA---------- \--* IND long <l:$280, c:$201>
N008 ( 5, 5) [000156] -A---------- \--* COMMA long $1c6
N006 ( 4, 4) [000154] -A------R--- +--* ASG long $VN.Void
N005 ( 1, 1) [000153] D------N---- | +--* LCL_VAR long V14 cse0 d:1 $1c6
N004 ( 4, 4) [000021] #----------- | \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- | \--* ADD long $240
N001 ( 1, 1) [000018] ------------ | +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ | \--* CNS_INT long 56 $c2
N007 ( 1, 1) [000155] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N011 ( 15, 13) [000116] -A---------- * JTRUE void
N010 ( 13, 11) [000033] JA-----N---- \--* EQ int <l:$2c5, c:$2c4>
N008 ( 11, 9) [000161] -A---------- +--* COMMA long <l:$282, c:$204>
N006 ( 8, 7) [000159] -A------R--- | +--* ASG long $VN.Void
N005 ( 3, 2) [000158] D------N---- | | +--* LCL_VAR long V15 cse1 d:1 <l:$282, c:$204>
N004 ( 4, 4) [000029] n----------- | | \--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | | \--* CNS_INT long 96 $c4
N007 ( 3, 2) [000160] ------------ | \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N003 ( 3, 3) [000118] -A------R--- * ASG long <l:$282, c:$208>
N002 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N001 ( 3, 2) [000162] ------------ \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N013 ( 21, 22) [000107] IA-XG------- * ASG struct (init) $VN.Void
N011 ( 19, 20) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N010 ( 16, 18) [000104] ---XG------- | \--* COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- | +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ | \--* LSH long $250
N006 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N012 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A---O--R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #----O------ \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N004 ( 3, 3) [000065] -A------R--- * ASG long <l:$284, c:$441>
N003 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N002 ( 3, 2) [000063] n----------- \--* IND long <l:$284, c:$441>
N001 ( 1, 1) [000157] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
N001 ( 1, 1) [000163] ------------ \--* CNS_INT ref null $VN.Null
-------------------------------------------------------------------------------------------------------------------
ArrSize for lengthVN:3C1 = 0
[RangeCheck::GetRange] BB06N001 ( 1, 1) [000093] ------------ * LCL_VAR int V03 loc2 u:3 $3c0
{
----------------------------------------------------
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
----------------------------------------------------
[RangeCheck::GetRange] BB07N003 ( 0, 0) [000144] ------------ * PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
{
[RangeCheck::GetRange] BB07N001 ( 0, 0) [000150] ------------ * PHI_ARG int V03 loc2 u:4
{
----------------------------------------------------
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
----------------------------------------------------
[RangeCheck::GetRange] BB06N003 ( 3, 3) [000110] ------------ * ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
{
[RangeCheck::GetRange] BB06N001 ( 1, 1) [000108] ------------ * LCL_VAR int V03 loc2 u:3 (last use) $3c0
{
----------------------------------------------------
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
----------------------------------------------------
[RangeCheck::GetRange] BB07N003 ( 0, 0) [000144] ------------ * PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
{
PhiArg [000150] is already being computed
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Merging ranges <Undef, Undef> <Dependent, Dependent>:<Dependent, Dependent>
[RangeCheck::GetRange] BB07N002 ( 0, 0) [000149] ------------ * PHI_ARG int V03 loc2 u:2 $40
{
Computed Range [000149] => <0, 0>
}
Merging assertions from pred edges of BB07 for op [000149] $40
Merge assertions from pred BB05 JTrue edge: 0000000000000001
Merging ranges <Dependent, Dependent> <0, 0>:<Dependent, Dependent>
Computed Range [000144] => <Dependent, Dependent>
}
Merge assertions from BB06:0000000000000005 for assignment about [000143]
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
The range after edge merging:<Dependent, $3c1 + -1>
done merging
Merging assertions from pred edges of BB06 for op [000108] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
Computed Range [000108] => <Dependent, $3c1 + -1>
}
Merging assertions from pred edges of BB06 for op [000108] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
[RangeCheck::GetRange] BB06N002 ( 1, 1) [000109] ------------ * CNS_INT int 1 $4b
{
Computed Range [000109] => <1, 1>
}
Merging assertions from pred edges of BB06 for op [000109] $4b
BinOp add ranges <Dependent, $3c1 + -1> <1, 1> = <Dependent, $3c1 + 0>
Computed Range [000110] => <Dependent, $3c1 + 0>
}
Merge assertions from BB07:0000000000000001 for assignment about [000111]
done merging
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Computed Range [000150] => <Dependent, $3c1 + 0>
}
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Merging ranges <Undef, Undef> <Dependent, $3c1 + 0>:<Dependent, $3c1 + 0>
[RangeCheck::GetRange] BB07N002 ( 0, 0) [000149] ------------ * PHI_ARG int V03 loc2 u:2 $40
{
Cached Range [000149] => <0, 0>
}
Merging assertions from pred edges of BB07 for op [000149] $40
Merge assertions from pred BB05 JTrue edge: 0000000000000001
Merging ranges <Dependent, $3c1 + 0> <0, 0>:<Dependent, $3c1 + 0>
Computed Range [000144] => <Dependent, $3c1 + 0>
}
Merge assertions from BB06:0000000000000005 for assignment about [000143]
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
The range after edge merging:<Dependent, $3c1 + -1>
done merging
Merging assertions from pred edges of BB06 for op [000093] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
Computed Range [000093] => <Dependent, $3c1 + -1>
}
Does overflow [000093]?
Does overflow [000144]?
Does overflow [000150]?
Does overflow [000110]?
Does overflow [000108]?
Does overflow [000144]?
Does overflow [000149]?
[000149] does not overflow
[000144] does not overflow
[000108] does not overflow
Does overflow [000109]?
[000109] does not overflow
Checking bin op overflow <Dependent, $3c1 + -1> <1, 1>
[000110] does not overflow
[000150] does not overflow
[000144] does not overflow
[000093] does not overflow
Range value <Dependent, $3c1 + -1>
[RangeCheck::Widen] BB06,
[000093]
[RangeCheck::IsMonotonicallyIncreasing] [000093]
[RangeCheck::IsMonotonicallyIncreasing] [000144]
[RangeCheck::IsMonotonicallyIncreasing] [000150]
[RangeCheck::IsMonotonicallyIncreasing] [000110]
[RangeCheck::IsBinOpMonotonicallyIncreasing] [000108], [000109]
[RangeCheck::IsMonotonicallyIncreasing] [000108]
[RangeCheck::IsMonotonicallyIncreasing] [000144]
[RangeCheck::IsMonotonicallyIncreasing] [000149]
[000093] is monotonically increasing.
[RangeCheck::GetRange] BB06N001 ( 1, 1) [000093] ------------ * LCL_VAR int V03 loc2 u:3 $3c0
{
----------------------------------------------------
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
----------------------------------------------------
[RangeCheck::GetRange] BB07N003 ( 0, 0) [000144] ------------ * PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
{
[RangeCheck::GetRange] BB07N001 ( 0, 0) [000150] ------------ * PHI_ARG int V03 loc2 u:4
{
----------------------------------------------------
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
----------------------------------------------------
[RangeCheck::GetRange] BB06N003 ( 3, 3) [000110] ------------ * ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
{
[RangeCheck::GetRange] BB06N001 ( 1, 1) [000108] ------------ * LCL_VAR int V03 loc2 u:3 (last use) $3c0
{
----------------------------------------------------
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
----------------------------------------------------
[RangeCheck::GetRange] BB07N003 ( 0, 0) [000144] ------------ * PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
{
PhiArg [000150] is already being computed
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Merging ranges <Undef, Undef> <Dependent, Dependent>:<Dependent, Dependent>
[RangeCheck::GetRange] BB07N002 ( 0, 0) [000149] ------------ * PHI_ARG int V03 loc2 u:2 $40
{
Computed Range [000149] => <0, 0>
}
Merging assertions from pred edges of BB07 for op [000149] $40
Merge assertions from pred BB05 JTrue edge: 0000000000000001
Merging ranges <Dependent, Dependent> <0, 0>:<0, Dependent>
Computed Range [000144] => <0, Dependent>
}
Merge assertions from BB06:0000000000000005 for assignment about [000143]
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
The range after edge merging:<0, $3c1 + -1>
done merging
Merging assertions from pred edges of BB06 for op [000108] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
Computed Range [000108] => <0, $3c1 + -1>
}
Merging assertions from pred edges of BB06 for op [000108] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
[RangeCheck::GetRange] BB06N002 ( 1, 1) [000109] ------------ * CNS_INT int 1 $4b
{
Computed Range [000109] => <1, 1>
}
Merging assertions from pred edges of BB06 for op [000109] $4b
BinOp add ranges <0, $3c1 + -1> <1, 1> = <1, $3c1 + 0>
Computed Range [000110] => <1, $3c1 + 0>
}
Merge assertions from BB07:0000000000000001 for assignment about [000111]
done merging
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Computed Range [000150] => <1, $3c1 + 0>
}
Merging assertions from pred edges of BB07 for op [000150] $ffffffff
Merge assertions from pred BB06 edge: 0000000000000007
Merging ranges <Undef, Undef> <1, $3c1 + 0>:<1, $3c1 + 0>
[RangeCheck::GetRange] BB07N002 ( 0, 0) [000149] ------------ * PHI_ARG int V03 loc2 u:2 $40
{
Cached Range [000149] => <0, 0>
}
Merging assertions from pred edges of BB07 for op [000149] $40
Merge assertions from pred BB05 JTrue edge: 0000000000000001
Merging ranges <1, $3c1 + 0> <0, 0>:<0, $3c1 + 0>
Computed Range [000144] => <0, $3c1 + 0>
}
Merge assertions from BB06:0000000000000005 for assignment about [000143]
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
The range after edge merging:<0, $3c1 + -1>
done merging
Merging assertions from pred edges of BB06 for op [000093] $3c0
Constant Assertion: (717, 64) ($2cd,$40) Loop_Bnd { {PhiDef($3, $3, $2c6)} LT {ByrefExposedLoad($47, $142, $400)}} is not {IntCns 0} index=#03, mask=0000000000000004
Bound limit -1 doesn't tighten current bound -1
Computed Range [000093] => <0, $3c1 + -1>
}
<0, $3c1 + -1> BetweenBounds <0, [000097]>
$3c1 upper bound is: {ByrefExposedLoad($47, $142, $400)}
Array size is: 0
[RangeCheck::OptimizeRangeCheck] Between bounds
Before optRemoveRangeCheck:
N010 ( 16, 18) [000104] ---XG------- * COMMA byref $145
N003 ( 8, 10) [000098] ---XG------- +--* ARR_BOUNDS_CHECK_Rng void $1ce
N001 ( 1, 1) [000093] ------------ | +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000097] ----G------- | \--* LCL_VAR int (AX) V13 tmp9 $3c1
N009 ( 8, 8) [000103] ----G------- \--* ADD byref $144
N004 ( 3, 2) [000102] ----G------- +--* LCL_VAR byref (AX) V12 tmp8 $480
N008 ( 4, 5) [000101] ------------ \--* LSH long $250
N006 ( 2, 3) [000099] ------------ +--* CAST long <- int $24f
N005 ( 1, 1) [000094] ------------ | \--* LCL_VAR int V03 loc2 u:3 $3c0
N007 ( 1, 1) [000100] ------------ \--* CNS_INT int 3 $44
After optRemoveRangeCheck:
N008 ( 8, 8) [000104] ----G--N---- * COMMA byref $145
N001 ( 0, 0) [000164] ------------ +--* NOP void
N007 ( 8, 8) [000103] ----G------- \--* ADD byref $144
N002 ( 3, 2) [000102] ----G------- +--* LCL_VAR byref (AX) V12 tmp8 $480
N006 ( 4, 5) [000101] ------------ \--* LSH long $250
N004 ( 2, 3) [000099] ------------ +--* CAST long <- int $24f
N003 ( 1, 1) [000094] ------------ | \--* LCL_VAR int V03 loc2 u:3 $3c0
N005 ( 1, 1) [000100] ------------ \--* CNS_INT int 3 $44
*************** Finishing PHASE Optimize index checks
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd
BB12 [0003] 1 BB11 1 [035..037) (return) i
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
***** BB01
STMT00000 (IL 0x000...0x003)
N003 ( 5, 4) [000004] -A------R--- * ASG ref $VN.Null
N002 ( 3, 2) [000000] D------N---- +--* LCL_VAR ref V01 loc0 d:2 $VN.Null
N001 ( 1, 1) [000002] ------------ \--* CNS_INT ref null $VN.Null
***** BB01
STMT00002 (IL 0x008...0x016)
N006 ( 4, 4) [000015] -A-XG---R--- * ASG ref <l:$1c4, c:$1c3>
N005 ( 1, 1) [000014] D------N---- +--* LCL_VAR ref V06 tmp2 d:2 <l:$1c1, c:$101>
N004 ( 4, 4) [000008] ---XG------- \--* IND ref <l:$1c4, c:$1c3>
N003 ( 2, 2) [000135] -------N---- \--* ADD byref $140
N001 ( 1, 1) [000007] ------------ +--* LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ \--* CNS_INT long 16 field offset Fseq[_array] $c1
***** BB01
STMT00001 (IL 0x008... ???)
N004 ( 3, 3) [000013] -A---O--R--- * ASG long $1c5
N003 ( 1, 1) [000012] D------N---- +--* LCL_VAR long V05 tmp1 d:2 $1c5
N002 ( 3, 2) [000011] #----O------ \--* IND long $1c5
N001 ( 1, 1) [000010] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB01
STMT00003 (IL ???... ???)
N011 ( 8, 7) [000024] -A------R--- * ASG long <l:$280, c:$201>
N010 ( 1, 1) [000023] D------N---- +--* LCL_VAR long V07 tmp3 d:2 <l:$280, c:$201>
N009 ( 8, 7) [000022] nA---------- \--* IND long <l:$280, c:$201>
N008 ( 5, 5) [000156] -A---------- \--* COMMA long $1c6
N006 ( 4, 4) [000154] -A------R--- +--* ASG long $VN.Void
N005 ( 1, 1) [000153] D------N---- | +--* LCL_VAR long V14 cse0 d:1 $1c6
N004 ( 4, 4) [000021] #----------- | \--* IND long $1c6
N003 ( 2, 2) [000020] -------N---- | \--* ADD long $240
N001 ( 1, 1) [000018] ------------ | +--* LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ | \--* CNS_INT long 56 $c2
N007 ( 1, 1) [000155] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB01
STMT00015 (IL ???... ???)
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
N006 ( 6, 6) [000042] J--X---N---- \--* LE int <l:$2c3, c:$2c2>
N004 ( 4, 4) [000040] ---X-------- +--* IND long <l:$244, c:$243>
N003 ( 2, 2) [000039] -------N---- | \--* ADD long <l:$242, c:$241>
N001 ( 1, 1) [000026] ------------ | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000041] ------------ \--* CNS_INT long 96 $c4
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
***** BB02
STMT00016 (IL ???... ???)
N011 ( 15, 13) [000116] -A---------- * JTRUE void
N010 ( 13, 11) [000033] JA-----N---- \--* EQ int <l:$2c5, c:$2c4>
N008 ( 11, 9) [000161] -A---------- +--* COMMA long <l:$282, c:$204>
N006 ( 8, 7) [000159] -A------R--- | +--* ASG long $VN.Void
N005 ( 3, 2) [000158] D------N---- | | +--* LCL_VAR long V15 cse1 d:1 <l:$282, c:$204>
N004 ( 4, 4) [000029] n----------- | | \--* IND long <l:$282, c:$204>
N003 ( 2, 2) [000028] -------N---- | | \--* ADD long <l:$246, c:$245>
N001 ( 1, 1) [000025] ------------ | | +--* LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ | | \--* CNS_INT long 96 $c4
N007 ( 3, 2) [000160] ------------ | \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ \--* CNS_INT long 0 $c0
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
***** BB03
STMT00017 (IL ???... ???)
N003 ( 3, 3) [000118] -A------R--- * ASG long <l:$282, c:$208>
N002 ( 1, 1) [000117] D------N---- +--* LCL_VAR long V08 tmp4 d:4 <l:$282, c:$208>
N001 ( 3, 2) [000162] ------------ \--* LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
***** BB04
STMT00018 (IL ???... ???)
N007 ( 17, 18) [000120] -AC-G---R--- * ASG long $247
N006 ( 1, 1) [000119] D------N---- +--* LCL_VAR long V08 tmp4 d:3 $247
N005 ( 17, 18) [000031] --C-G------- \--* CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
N003 ( 1, 1) [000017] ------------ arg0 in rcx +--* LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ arg1 in rdx \--* CNS_INT(h) long 0x7ff9f1337fe8 token $181
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
***** BB05
STMT00025 (IL ???... ???)
N005 ( 0, 0) [000148] -A------R--- * ASG long
N004 ( 0, 0) [000146] D------N---- +--* LCL_VAR long V08 tmp4 d:2
N003 ( 0, 0) [000147] ------------ \--* PHI long
N001 ( 0, 0) [000152] ------------ pred BB03 +--* PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ pred BB04 \--* PHI_ARG long V08 tmp4 u:3 $247
***** BB05
STMT00005 (IL ???... ???)
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
N005 ( 3, 3) [000006] ------------ this in rcx +--* ADDR byref $301
N004 ( 3, 2) [000005] ----G--N---- | \--* LCL_VAR struct<System.Span`1[__Canon], 16>(AX)(P) V02 loc1
| \--* byref V02._pointer (offs=0x00) -> V12 tmp8
| \--* int V02._length (offs=0x08) -> V13 tmp9 $340
N006 ( 1, 1) [000045] ------------ arg1 in rdx +--* LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ arg2 in r8 \--* LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
***** BB05
STMT00006 (IL 0x015... ???)
N003 ( 1, 3) [000049] -A------R--- * ASG int $40
N002 ( 1, 1) [000048] D------N---- +--* LCL_VAR int V03 loc2 d:2 $40
N001 ( 1, 1) [000047] ------------ \--* CNS_INT int 0 $40
------------ BB06 [019..02B), preds={BB11} succs={BB07}
***** BB06
STMT00012 (IL 0x019...0x022)
N011 ( 13, 12) [000107] IA-XG------- * ASG struct (init) $VN.Void
N009 ( 11, 10) [000106] D--XG--N---- +--* BLK struct<8> $1d1
N008 ( 8, 8) [000104] ----G--N---- | \--* COMMA byref $145
N001 ( 0, 0) [000164] ------------ | +--* NOP void
N007 ( 8, 8) [000103] ----G------- | \--* ADD byref $144
N002 ( 3, 2) [000102] ----G------- | +--* LCL_VAR byref (AX) V12 tmp8 $480
N006 ( 4, 5) [000101] ------------ | \--* LSH long $250
N004 ( 2, 3) [000099] ------------ | +--* CAST long <- int $24f
N003 ( 1, 1) [000094] ------------ | | \--* LCL_VAR int V03 loc2 u:3 $3c0
N005 ( 1, 1) [000100] ------------ | \--* CNS_INT int 3 $44
N010 ( 1, 1) [000105] ------------ \--* CNS_INT int 0 $40
***** BB06
STMT00013 (IL 0x027...0x02A)
N005 ( 3, 3) [000112] -A------R--- * ASG int $2ce
N004 ( 1, 1) [000111] D------N---- +--* LCL_VAR int V03 loc2 d:4 $2ce
N003 ( 3, 3) [000110] ------------ \--* ADD int $2ce
N001 ( 1, 1) [000108] ------------ +--* LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ \--* CNS_INT int 1 $4b
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
***** BB07
STMT00024 (IL ???... ???)
N005 ( 0, 0) [000145] -A------R--- * ASG int
N004 ( 0, 0) [000143] D------N---- +--* LCL_VAR int V03 loc2 d:3
N003 ( 0, 0) [000144] ------------ \--* PHI int
N001 ( 0, 0) [000150] ------------ pred BB06 +--* PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ pred BB05 \--* PHI_ARG int V03 loc2 u:2 $40
***** BB07
STMT00007 (IL 0x02B...0x033)
N004 ( 3, 3) [000057] -A---O--R--- * ASG long $1c9
N003 ( 1, 1) [000056] D------N---- +--* LCL_VAR long V09 tmp5 d:2 $1c5
N002 ( 3, 2) [000055] #----O------ \--* IND long $1c9
N001 ( 1, 1) [000054] !----------- \--* LCL_VAR ref V00 this u:1 $80
***** BB07
STMT00008 (IL ???... ???)
N004 ( 3, 3) [000065] -A------R--- * ASG long <l:$284, c:$441>
N003 ( 1, 1) [000064] D------N---- +--* LCL_VAR long V10 tmp6 d:2 <l:$284, c:$441>
N002 ( 3, 2) [000063] n----------- \--* IND long <l:$284, c:$441>
N001 ( 1, 1) [000157] ------------ \--* LCL_VAR long V14 cse0 u:1 $1c6
***** BB07
STMT00019 (IL ???... ???)
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
N006 ( 6, 6) [000083] J--X---N---- \--* LE int <l:$2ca, c:$2c9>
N004 ( 4, 4) [000081] ---X-------- +--* IND long <l:$24c, c:$24b>
N003 ( 2, 2) [000080] -------N---- | \--* ADD long <l:$24a, c:$249>
N001 ( 1, 1) [000067] ------------ | +--* LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ | \--* CNS_INT long 8 $c3
N005 ( 1, 1) [000082] ------------ \--* CNS_INT long 96 $c4
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
***** BB08
STMT00020 (IL ???... ???)
N007 ( 8, 8) [000122] ------------ * JTRUE void
N006 ( 6, 6) [000074] J------N---- \--* EQ int <l:$2cc, c:$2cb>
N004 ( 4, 4) [000070] n----------- +--* IND long <l:$286, c:$444>
N003 ( 2, 2) [000069] -------N---- | \--* ADD long <l:$24e, c:$24d>
N001 ( 1, 1) [000066] ------------ | +--* LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ | \--* CNS_INT long 96 $c4
N005 ( 1, 1) [000073] ------------ \--* CNS_INT long 0 $c0
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
***** BB11
STMT00011 (IL ???... ???)
N004 ( 7, 6) [000090] ----G------- * JTRUE void
N003 ( 5, 4) [000089] J---G--N---- \--* LT int $2cd
N001 ( 1, 1) [000050] ------------ +--* LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ----G------- \--* LCL_VAR int (AX) V13 tmp9 $3c1
------------ BB12 [035..037) (return), preds={BB11} succs={}
***** BB12
STMT00014 (IL 0x035...0x036)
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
N001 ( 1, 1) [000163] ------------ \--* CNS_INT ref null $VN.Null
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N007 ( 17, 18) [000120] DAC-G------- * STORE_LCL_VAR long V08 tmp4 d:3
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
N005 ( 1, 1) [000100] ------------ t100 = CNS_INT int 3 $44
/--* t99 long
+--* t100 int
N006 ( 4, 5) [000101] ------------ t101 = * LSH long $250
/--* t102 byref
+--* t101 long
N007 ( 8, 8) [000103] ----G------- t103 = * ADD byref $144
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) $1d1
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd LIR
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i LIR
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i LIR
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall LIR
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd LIR
BB12 [0003] 1 BB11 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
[000165] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT ref null $VN.Null
/--* t2 ref
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
[000166] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ t134 = CNS_INT long 16 field offset Fseq[_array] $c1
/--* t7 ref
+--* t134 long
N003 ( 2, 2) [000135] -------N---- t135 = * ADD byref $140
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
[000167] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ t19 = CNS_INT long 56 $c2
/--* t18 long
+--* t19 long
N003 ( 2, 2) [000020] -------N---- t20 = * ADD long $240
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
N001 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ t38 = CNS_INT long 8 $c3
/--* t26 long
+--* t38 long
N003 ( 2, 2) [000039] -------N---- t39 = * ADD long <l:$242, c:$241>
/--* t39 long
N004 ( 4, 4) [000040] ---X-------- t40 = * IND long <l:$244, c:$243>
N005 ( 1, 1) [000041] ------------ t41 = CNS_INT long 96 $c4
/--* t40 long
+--* t41 long
N006 ( 6, 6) [000042] J--X---N---- t42 = * LE int <l:$2c3, c:$2c2>
/--* t42 int
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ t27 = CNS_INT long 96 $c4
/--* t25 long
+--* t27 long
N003 ( 2, 2) [000028] -------N---- t28 = * ADD long <l:$246, c:$245>
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
N007 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ t32 = CNS_INT long 0 $c0
/--* t160 long
+--* t32 long
N010 ( 13, 11) [000033] J------N---- t33 = * EQ int <l:$2c5, c:$2c4>
/--* t33 int
N011 ( 15, 13) [000116] ------------ * JTRUE void
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t17 long arg0 in rcx
+--* t30 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t5 byref this in rcx
+--* t45 long arg1 in rdx
+--* t16 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
[000168] ------------ IL_OFFSET void IL offset: 0x15
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
------------ BB06 [019..02B), preds={BB11} succs={BB07}
[000169] ------------ IL_OFFSET void IL offset: 0x19
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
N005 ( 1, 1) [000100] ------------ t100 = CNS_INT int 3 $44
/--* t99 long
+--* t100 int
N006 ( 4, 5) [000101] ------------ t101 = * LSH long $250
/--* t102 byref
+--* t101 long
N007 ( 8, 8) [000103] ----G------- t103 = * ADD byref $144
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) $1d1
[000170] ------------ IL_OFFSET void IL offset: 0x27
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
[000171] ------------ IL_OFFSET void IL offset: 0x2b
N001 ( 1, 1) [000054] !----------- t54 = LCL_VAR ref V00 this u:1 $80
/--* t54 ref
N002 ( 3, 2) [000055] #----O------ t55 = * IND long $1c9
/--* t55 long
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
N001 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ t79 = CNS_INT long 8 $c3
/--* t67 long
+--* t79 long
N003 ( 2, 2) [000080] -------N---- t80 = * ADD long <l:$24a, c:$249>
/--* t80 long
N004 ( 4, 4) [000081] ---X-------- t81 = * IND long <l:$24c, c:$24b>
N005 ( 1, 1) [000082] ------------ t82 = CNS_INT long 96 $c4
/--* t81 long
+--* t82 long
N006 ( 6, 6) [000083] J--X---N---- t83 = * LE int <l:$2ca, c:$2c9>
/--* t83 int
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
N001 ( 1, 1) [000066] ------------ t66 = LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ t68 = CNS_INT long 96 $c4
/--* t66 long
+--* t68 long
N003 ( 2, 2) [000069] -------N---- t69 = * ADD long <l:$24e, c:$24d>
/--* t69 long
N004 ( 4, 4) [000070] n----------- t70 = * IND long <l:$286, c:$444>
N005 ( 1, 1) [000073] ------------ t73 = CNS_INT long 0 $c0
/--* t70 long
+--* t73 long
N006 ( 6, 6) [000074] J------N---- t74 = * EQ int <l:$2cc, c:$2cb>
/--* t74 int
N007 ( 8, 8) [000122] ------------ * JTRUE void
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
N001 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ------------ t132 = LCL_VAR int (AX) V13 tmp9 $3c1
/--* t50 int
+--* t132 int
N003 ( 5, 4) [000089] J---G--N---- t89 = * LT int $2cd
/--* t89 int
N004 ( 7, 6) [000090] ----G------- * JTRUE void
------------ BB12 [035..037) (return), preds={BB11} succs={}
[000172] ------------ IL_OFFSET void IL offset: 0x35
N001 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null $VN.Null
/--* t163 ref
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000031]
outgoingArgSpaceSize 32 sufficient for call [000009], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd LIR
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i LIR
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i LIR
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall LIR
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd LIR
BB12 [0003] 1 BB11 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
[000165] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT ref null $VN.Null
/--* t2 ref
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
[000166] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
N002 ( 1, 1) [000134] ------------ t134 = CNS_INT long 16 field offset Fseq[_array] $c1
/--* t7 ref
+--* t134 long
N003 ( 2, 2) [000135] -------N---- t135 = * ADD byref $140
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
[000167] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
N002 ( 1, 1) [000019] ------------ t19 = CNS_INT long 56 $c2
/--* t18 long
+--* t19 long
N003 ( 2, 2) [000020] -------N---- t20 = * ADD long $240
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
N001 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000038] ------------ t38 = CNS_INT long 8 $c3
/--* t26 long
+--* t38 long
N003 ( 2, 2) [000039] -------N---- t39 = * ADD long <l:$242, c:$241>
/--* t39 long
N004 ( 4, 4) [000040] ---X-------- t40 = * IND long <l:$244, c:$243>
N005 ( 1, 1) [000041] ------------ t41 = CNS_INT long 96 $c4
/--* t40 long
+--* t41 long
N006 ( 6, 6) [000042] J--X---N---- t42 = * LE int <l:$2c3, c:$2c2>
/--* t42 int
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
N002 ( 1, 1) [000027] ------------ t27 = CNS_INT long 96 $c4
/--* t25 long
+--* t27 long
N003 ( 2, 2) [000028] -------N---- t28 = * ADD long <l:$246, c:$245>
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
N007 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] ------------ t32 = CNS_INT long 0 $c0
/--* t160 long
+--* t32 long
N010 ( 13, 11) [000033] J------N---- t33 = * EQ int <l:$2c5, c:$2c4>
/--* t33 int
N011 ( 15, 13) [000116] ------------ * JTRUE void
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t17 long arg0 in rcx
+--* t30 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t5 byref this in rcx
+--* t45 long arg1 in rdx
+--* t16 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
[000168] ------------ IL_OFFSET void IL offset: 0x15
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
------------ BB06 [019..02B), preds={BB11} succs={BB07}
[000169] ------------ IL_OFFSET void IL offset: 0x19
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
N005 ( 1, 1) [000100] ------------ t100 = CNS_INT int 3 $44
/--* t99 long
+--* t100 int
N006 ( 4, 5) [000101] ------------ t101 = * LSH long $250
/--* t102 byref
+--* t101 long
N007 ( 8, 8) [000103] ----G------- t103 = * ADD byref $144
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) $1d1
[000170] ------------ IL_OFFSET void IL offset: 0x27
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] ------------ t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
[000171] ------------ IL_OFFSET void IL offset: 0x2b
N001 ( 1, 1) [000054] !----------- t54 = LCL_VAR ref V00 this u:1 $80
/--* t54 ref
N002 ( 3, 2) [000055] #----O------ t55 = * IND long $1c9
/--* t55 long
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
N001 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
N002 ( 1, 1) [000079] ------------ t79 = CNS_INT long 8 $c3
/--* t67 long
+--* t79 long
N003 ( 2, 2) [000080] -------N---- t80 = * ADD long <l:$24a, c:$249>
/--* t80 long
N004 ( 4, 4) [000081] ---X-------- t81 = * IND long <l:$24c, c:$24b>
N005 ( 1, 1) [000082] ------------ t82 = CNS_INT long 96 $c4
/--* t81 long
+--* t82 long
N006 ( 6, 6) [000083] J--X---N---- t83 = * LE int <l:$2ca, c:$2c9>
/--* t83 int
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
N001 ( 1, 1) [000066] ------------ t66 = LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
N002 ( 1, 1) [000068] ------------ t68 = CNS_INT long 96 $c4
/--* t66 long
+--* t68 long
N003 ( 2, 2) [000069] -------N---- t69 = * ADD long <l:$24e, c:$24d>
/--* t69 long
N004 ( 4, 4) [000070] n----------- t70 = * IND long <l:$286, c:$444>
N005 ( 1, 1) [000073] ------------ t73 = CNS_INT long 0 $c0
/--* t70 long
+--* t73 long
N006 ( 6, 6) [000074] J------N---- t74 = * EQ int <l:$2cc, c:$2cb>
/--* t74 int
N007 ( 8, 8) [000122] ------------ * JTRUE void
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
N001 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] ------------ t132 = LCL_VAR int (AX) V13 tmp9 $3c1
/--* t50 int
+--* t132 int
N003 ( 5, 4) [000089] J---G--N---- t89 = * LT int $2cd
/--* t89 int
N004 ( 7, 6) [000090] ----G------- * JTRUE void
------------ BB12 [035..037) (return), preds={BB11} succs={}
[000172] ------------ IL_OFFSET void IL offset: 0x35
N001 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null $VN.Null
/--* t163 ref
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT ref null $VN.Null
/--* t2 ref
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT ref null $VN.Null
/--* t2 ref
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
Addressing mode:
Base
N001 ( 1, 1) [000007] ------------ * LCL_VAR ref V00 this u:1 $80
+ 16
Removing unused node:
N002 ( 1, 1) [000134] -c---------- * CNS_INT long 16 field offset Fseq[_array] $c1
New addressing mode node:
N003 ( 2, 2) [000135] ------------ * LEA(b+16) byref
lowering store lcl var/field (before):
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
/--* t7 ref
N003 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
/--* t7 ref
N003 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
Addressing mode:
Base
N001 ( 1, 1) [000018] ------------ * LCL_VAR long V05 tmp1 u:2 $1c5
+ 56
Removing unused node:
N002 ( 1, 1) [000019] -c---------- * CNS_INT long 56 $c2
New addressing mode node:
N003 ( 2, 2) [000020] ------------ * LEA(b+56) long
lowering store lcl var/field (before):
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
/--* t18 long
N003 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
lowering store lcl var/field (after):
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
/--* t18 long
N003 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
lowering store lcl var/field (before):
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
lowering store lcl var/field (after):
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
Addressing mode:
Base
N001 ( 1, 1) [000026] ------------ * LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
+ 8
Removing unused node:
N002 ( 1, 1) [000038] -c---------- * CNS_INT long 8 $c3
New addressing mode node:
N003 ( 2, 2) [000039] ------------ * LEA(b+8) long
Addressing mode:
Base
N001 ( 1, 1) [000025] ------------ * LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
+ 96
Removing unused node:
N002 ( 1, 1) [000027] -c---------- * CNS_INT long 96 $c4
New addressing mode node:
N003 ( 2, 2) [000028] ------------ * LEA(b+96) long
lowering store lcl var/field (before):
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t25 long
N003 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
lowering store lcl var/field (after):
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t25 long
N003 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
lowering store lcl var/field (before):
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
lowering store lcl var/field (after):
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
lowering call (before):
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t17 long arg0 in rcx
+--* t30 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000136] ----------L- * ARGPLACE long $1c5
lowering arg : N002 ( 0, 0) [000137] ----------L- * ARGPLACE long $181
late:
======
lowering arg : N003 ( 1, 1) [000017] ------------ * LCL_VAR long V05 tmp1 u:2 (last use) $1c5
new node is : [000173] ------------ * PUTARG_REG long REG rcx
lowering arg : N004 ( 2, 10) [000030] ------------ * CNS_INT(h) long 0x7ff9f1337fe8 token $181
new node is : [000174] ------------ * PUTARG_REG long REG rdx
lowering call (after):
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
lowering store lcl var/field (before):
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
lowering store lcl var/field (after):
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
lowering store lcl var/field (before):
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
lowering store lcl var/field (after):
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
lowering call (before):
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t5 byref this in rcx
+--* t45 long arg1 in rdx
+--* t16 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
objp:
======
lowering arg : N001 ( 0, 0) [000138] ----------L- * ARGPLACE byref $300
args:
======
lowering arg : N002 ( 0, 0) [000139] ----------L- * ARGPLACE long $301
lowering arg : N003 ( 0, 0) [000140] ----------L- * ARGPLACE ref $283
late:
======
lowering arg : N004 ( 3, 2) [000005] -------N---- * LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
new node is : [000175] ------------ * PUTARG_REG byref REG rcx
lowering arg : N006 ( 1, 1) [000045] ------------ * LCL_VAR long V08 tmp4 u:2 (last use) $283
new node is : [000176] ------------ * PUTARG_REG long REG rdx
lowering arg : N007 ( 1, 1) [000016] ------------ * LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
new node is : [000177] ------------ * PUTARG_REG ref REG r8
lowering call (after):
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
/--* t5 byref
[000175] ------------ t175 = * PUTARG_REG byref REG rcx
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
/--* t45 long
[000176] ------------ t176 = * PUTARG_REG long REG rdx
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t16 ref
[000177] ------------ t177 = * PUTARG_REG ref REG r8
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
lowering store lcl var/field (before):
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
Addressing mode:
Base
N002 ( 3, 2) [000102] -c---------- * LCL_VAR byref (AX) V12 tmp8 $480
+ Index * 8 + 0
N004 ( 2, 3) [000099] ------------ * CAST long <- int $24f
Removing unused node:
N006 ( 4, 5) [000101] ------------ * LSH long $250
Removing unused node:
N005 ( 1, 1) [000100] -c---------- * CNS_INT int 3 $44
New addressing mode node:
N007 ( 8, 8) [000103] ------------ * LEA(b+(i*8)+0) byref
lowering store lcl var/field (before):
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
lowering store lcl var/field (after):
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
lowering store lcl var/field (before):
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
lowering store lcl var/field (after):
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
lowering store lcl var/field (before):
N001 ( 1, 1) [000054] !----------- t54 = LCL_VAR ref V00 this u:1 $80
/--* t54 ref
N002 ( 3, 2) [000055] #----O------ t55 = * IND long $1c9
/--* t55 long
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000054] !----------- t54 = LCL_VAR ref V00 this u:1 $80
/--* t54 ref
N002 ( 3, 2) [000055] #----O------ t55 = * IND long $1c9
/--* t55 long
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
lowering store lcl var/field (before):
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
lowering store lcl var/field (after):
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
Addressing mode:
Base
N001 ( 1, 1) [000067] ------------ * LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
+ 8
Removing unused node:
N002 ( 1, 1) [000079] -c---------- * CNS_INT long 8 $c3
New addressing mode node:
N003 ( 2, 2) [000080] ------------ * LEA(b+8) long
Addressing mode:
Base
N001 ( 1, 1) [000066] ------------ * LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
+ 96
Removing unused node:
N002 ( 1, 1) [000068] -c---------- * CNS_INT long 96 $c4
New addressing mode node:
N003 ( 2, 2) [000069] ------------ * LEA(b+96) long
lowering GT_RETURN
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd LIR
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i LIR
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i LIR
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall LIR
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd LIR
BB12 [0003] 1 BB11 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
[000165] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT ref null $VN.Null
/--* t2 ref
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2
[000166] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
/--* t7 ref
N003 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
[000167] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
/--* t18 long
N003 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
N001 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t26 long
N003 ( 2, 2) [000039] -c---------- t39 = * LEA(b+8) long
/--* t39 long
N004 ( 4, 4) [000040] -c-X-------- t40 = * IND long <l:$244, c:$243>
N005 ( 1, 1) [000041] -c---------- t41 = CNS_INT long 96 $c4
/--* t40 long
+--* t41 long
N006 ( 6, 6) [000042] J--X---N---- * LE void <l:$2c3, c:$2c2>
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t25 long
N003 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
N007 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] -c---------- t32 = CNS_INT long 0 $c0
/--* t160 long
+--* t32 long
N010 ( 13, 11) [000033] J------N---- * EQ void <l:$2c5, c:$2c4>
N011 ( 15, 13) [000116] ------------ * JTRUE void
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
/--* t5 byref
[000175] ------------ t175 = * PUTARG_REG byref REG rcx
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
/--* t45 long
[000176] ------------ t176 = * PUTARG_REG long REG rdx
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t16 ref
[000177] ------------ t177 = * PUTARG_REG ref REG r8
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
[000168] ------------ IL_OFFSET void IL offset: 0x15
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
------------ BB06 [019..02B), preds={BB11} succs={BB07}
[000169] ------------ IL_OFFSET void IL offset: 0x19
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
/--* t102 byref
+--* t99 long
N007 ( 8, 8) [000103] -c---------- t103 = * LEA(b+(i*8)+0) byref
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) $1d1
[000170] ------------ IL_OFFSET void IL offset: 0x27
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
------------ BB07 [02B..???) -> BB10 (cond), preds={BB05,BB06} succs={BB08,BB10}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
[000171] ------------ IL_OFFSET void IL offset: 0x2b
N001 ( 1, 1) [000054] !----------- t54 = LCL_VAR ref V00 this u:1 $80
/--* t54 ref
N002 ( 3, 2) [000055] #----O------ t55 = * IND long $1c9
/--* t55 long
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
N001 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 <l:$284, c:$441>
/--* t67 long
N003 ( 2, 2) [000080] -c---------- t80 = * LEA(b+8) long
/--* t80 long
N004 ( 4, 4) [000081] -c-X-------- t81 = * IND long <l:$24c, c:$24b>
N005 ( 1, 1) [000082] -c---------- t82 = CNS_INT long 96 $c4
/--* t81 long
+--* t82 long
N006 ( 6, 6) [000083] J--X---N---- * LE void <l:$2ca, c:$2c9>
N007 ( 8, 8) [000121] ---X-------- * JTRUE void
------------ BB08 [???..???) -> BB10 (cond), preds={BB07} succs={BB09,BB10}
N001 ( 1, 1) [000066] ------------ t66 = LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
/--* t66 long
N003 ( 2, 2) [000069] -c---------- t69 = * LEA(b+96) long
/--* t69 long
N004 ( 4, 4) [000070] nc---------- t70 = * IND long <l:$286, c:$444>
N005 ( 1, 1) [000073] -c---------- t73 = CNS_INT long 0 $c0
/--* t70 long
+--* t73 long
N006 ( 6, 6) [000074] J------N---- * EQ void <l:$2cc, c:$2cb>
N007 ( 8, 8) [000122] ------------ * JTRUE void
------------ BB09 [???..???) -> BB11 (always), preds={BB08} succs={BB11}
------------ BB10 [???..???), preds={BB07,BB08} succs={BB11}
------------ BB11 [???..035) -> BB06 (cond), preds={BB09,BB10} succs={BB12,BB06}
N001 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] -c---------- t132 = LCL_VAR int (AX) V13 tmp9 $3c1
/--* t50 int
+--* t132 int
N003 ( 5, 4) [000089] J---G--N---- * LT void $2cd
N004 ( 7, 6) [000090] ----G------- * JTRUE void
------------ BB12 [035..037) (return), preds={BB11} succs={}
[000172] ------------ IL_OFFSET void IL offset: 0x35
N001 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null $VN.Null
/--* t163 ref
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
-------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
New refCnts for V01: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V06: refCnt = 1, refCntWtd = 2
New refCnts for V00: refCnt = 2, refCntWtd = 2
New refCnts for V05: refCnt = 1, refCntWtd = 2
New refCnts for V05: refCnt = 2, refCntWtd = 4
New refCnts for V14: refCnt = 1, refCntWtd = 1
New refCnts for V14: refCnt = 2, refCntWtd = 2
New refCnts for V07: refCnt = 1, refCntWtd = 2
New refCnts for V07: refCnt = 2, refCntWtd = 4
New refCnts for V07: refCnt = 3, refCntWtd = 4.80
New refCnts for V15: refCnt = 1, refCntWtd = 0.40
New refCnts for V15: refCnt = 2, refCntWtd = 0.80
New refCnts for V15: refCnt = 3, refCntWtd = 1.20
New refCnts for V08: refCnt = 1, refCntWtd = 0.80
New refCnts for V05: refCnt = 3, refCntWtd = 4.20
New refCnts for V08: refCnt = 2, refCntWtd = 1
New refCnts for V12: refCnt = 1, refCntWtd = 1
New refCnts for V13: refCnt = 1, refCntWtd = 1
New refCnts for V02: refCnt = 1, refCntWtd = 1
New refCnts for V08: refCnt = 3, refCntWtd = 3
New refCnts for V06: refCnt = 2, refCntWtd = 4
New refCnts for V03: refCnt = 1, refCntWtd = 1
New refCnts for V02: refCnt = 2, refCntWtd = 3
New refCnts for V12: refCnt = 2, refCntWtd = 3
New refCnts for V03: refCnt = 2, refCntWtd = 3
New refCnts for V03: refCnt = 3, refCntWtd = 5
New refCnts for V03: refCnt = 4, refCntWtd = 7
New refCnts for V00: refCnt = 3, refCntWtd = 10
New refCnts for V09: refCnt = 1, refCntWtd = 16
New refCnts for V14: refCnt = 3, refCntWtd = 10
New refCnts for V10: refCnt = 1, refCntWtd = 16
New refCnts for V10: refCnt = 2, refCntWtd = 32
New refCnts for V10: refCnt = 3, refCntWtd = 35.20
New refCnts for V03: refCnt = 5, refCntWtd = 15
New refCnts for V02: refCnt = 3, refCntWtd = 11
New refCnts for V13: refCnt = 2, refCntWtd = 9
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 4, refCntWtd = 11
New refCnts for V00: refCnt = 5, refCntWtd = 12
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 this ref this class-hnd
; V01 loc0 ref ld-addr-op class-hnd
; V02 loc1 struct <System.Span`1[__Canon], 16> do-not-enreg[XS] addr-exposed ld-addr-op
; V03 loc2 int
; V04 OutArgs lclBlk <32> "OutgoingArgSpace"
; V05 tmp1 long "impRuntimeLookup slot"
; V06 tmp2 ref class-hnd "impAppendStmt"
; V07 tmp3 long "impRuntimeLookup indirectOffset"
; V08 tmp4 long "spilling Runtime Lookup tree"
; V09 tmp5 long "impRuntimeLookup slot"
; V10 tmp6 long "impRuntimeLookup indirectOffset"
; V11 tmp7 long "spilling Runtime Lookup tree"
; V12 tmp8 byref do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)"
; V13 tmp9 int do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)"
; V14 cse0 long "CSE - aggressive"
; V15 cse1 long "CSE - conservative"
In fgLocalVarLivenessInit
Tracked variable (11 out of 16) table:
V10 tmp6 [ long]: refCnt = 3, refCntWtd = 35.20
V09 tmp5 [ long]: refCnt = 1, refCntWtd = 16
V03 loc2 [ int]: refCnt = 5, refCntWtd = 15
V00 this [ ref]: refCnt = 5, refCntWtd = 12
V14 cse0 [ long]: refCnt = 3, refCntWtd = 10
V07 tmp3 [ long]: refCnt = 3, refCntWtd = 4.80
V05 tmp1 [ long]: refCnt = 3, refCntWtd = 4.20
V06 tmp2 [ ref]: refCnt = 2, refCntWtd = 4
V08 tmp4 [ long]: refCnt = 3, refCntWtd = 3
V15 cse1 [ long]: refCnt = 3, refCntWtd = 1.20
V01 loc0 [ ref]: refCnt = 1, refCntWtd = 1
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(5)={ V14 V07 V05 V06 V01}
BB02 USE(1)={V07 } + ByrefExposed + GcHeap
DEF(1)={ V15}
BB03 USE(1)={ V15}
DEF(1)={V08 }
BB04 USE(1)={V05 }
DEF(1)={ V08}
BB05 USE(2)={ V06 V08} + ByrefExposed + GcHeap
DEF(1)={V03 } + ByrefExposed* + GcHeap*
BB06 USE(1)={V03} + ByrefExposed
DEF(1)={V03} + ByrefExposed + GcHeap
BB07 USE(2)={ V00 V14} + ByrefExposed + GcHeap
DEF(2)={V10 V09 }
BB08 USE(1)={V10} + ByrefExposed + GcHeap
DEF(0)={ }
BB09 USE(0)={}
DEF(0)={}
BB10 USE(0)={}
DEF(0)={}
BB11 USE(1)={V03} + ByrefExposed
DEF(0)={ }
BB12 USE(0)={}
DEF(0)={}
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
Reporting this as generic context: referenced
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V07 V05 V06} + ByrefExposed + GcHeap
BB02 IN (5)={V00 V14 V07 V05 V06 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V05 V06 V15} + ByrefExposed + GcHeap
BB03 IN (4)={V00 V14 V06 V15} + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08 } + ByrefExposed + GcHeap
BB04 IN (4)={V00 V14 V05 V06 } + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08} + ByrefExposed + GcHeap
BB05 IN (4)={ V00 V14 V06 V08} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14 } + ByrefExposed + GcHeap
BB06 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB07 IN (3)={ V03 V00 V14} + ByrefExposed + GcHeap
OUT(4)={V10 V03 V00 V14} + ByrefExposed + GcHeap
BB08 IN (4)={V10 V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={ V03 V00 V14} + ByrefExposed + GcHeap
BB09 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB10 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB11 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB12 IN (1)={V00}
OUT(1)={V00}
Removing dead store:
N003 ( 5, 4) [000004] DA---------- * STORE_LCL_VAR ref V01 loc0 d:2 (last use)
Removing dead node:
N001 ( 1, 1) [000002] ------------ * CNS_INT ref null $VN.Null
Removing dead store:
N004 ( 3, 3) [000057] DA---O------ * STORE_LCL_VAR long V09 tmp5 d:2 (last use)
Removing dead node:
N002 ( 3, 2) [000055] #----O------ * IND long $1c9
Removing dead LclVar use:
N001 ( 1, 1) [000054] !----------- * LCL_VAR ref V00 this u:1 $80
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd LIR
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB10 ( cond ) i LIR
BB09 [0012] 1 BB08 1.60 0 [???..???)-> BB11 (always) i LIR
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall LIR
BB11 [0009] 2 BB09,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd LIR
BB12 [0003] 1 BB11 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
Reversing a conditional jump around an unconditional jump (BB08 -> BB10 -> BB11)
After reversing the jump:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB11 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???)-> BB10 ( cond ) i label target bwd LIR
BB08 [0011] 1 BB07 1.60 0 [???..???)-> BB11 ( cond ) i LIR
BB10 [0013] 2 BB07,BB08 0.40 0 [???..???) i label target hascall LIR
BB11 [0009] 2 BB08,BB10 8 0 [???..035)-> BB06 ( cond ) i label target bwd LIR
BB12 [0003] 1 BB11 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
Compacting blocks BB10 and BB11:
Second block has multiple incoming edges
*************** In fgDebugCheckBBlist
Removing conditional jump to next block (BB08 -> BB10)
Compacting blocks BB08 and BB10:
Second block has multiple incoming edges
*************** In fgDebugCheckBBlist
Removing conditional jump to next block (BB07 -> BB08)
After updating the flow graph:
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB08 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???) i label target bwd LIR
BB08 [0011] 1 BB07 8 0 [???..035)-> BB06 ( cond ) i target bwd LIR
BB12 [0003] 1 BB08 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
had to run another liveness pass:
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 this ref this class-hnd
; V01 loc0 ref ld-addr-op class-hnd
; V02 loc1 struct <System.Span`1[__Canon], 16> do-not-enreg[XS] addr-exposed ld-addr-op
; V03 loc2 int
; V04 OutArgs lclBlk <32> "OutgoingArgSpace"
; V05 tmp1 long "impRuntimeLookup slot"
; V06 tmp2 ref class-hnd "impAppendStmt"
; V07 tmp3 long "impRuntimeLookup indirectOffset"
; V08 tmp4 long "spilling Runtime Lookup tree"
; V09 tmp5 long "impRuntimeLookup slot"
; V10 tmp6 long "impRuntimeLookup indirectOffset"
; V11 tmp7 long "spilling Runtime Lookup tree"
; V12 tmp8 byref do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)"
; V13 tmp9 int do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)"
; V14 cse0 long "CSE - aggressive"
; V15 cse1 long "CSE - conservative"
In fgLocalVarLivenessInit
Tracked variable (11 out of 16) table:
V10 tmp6 [ long]: refCnt = 3, refCntWtd = 35.20
V09 tmp5 [ long]: refCnt = 1, refCntWtd = 16
V03 loc2 [ int]: refCnt = 5, refCntWtd = 15
V00 this [ ref]: refCnt = 5, refCntWtd = 12
V14 cse0 [ long]: refCnt = 3, refCntWtd = 10
V07 tmp3 [ long]: refCnt = 3, refCntWtd = 4.80
V05 tmp1 [ long]: refCnt = 3, refCntWtd = 4.20
V06 tmp2 [ ref]: refCnt = 2, refCntWtd = 4
V08 tmp4 [ long]: refCnt = 3, refCntWtd = 3
V15 cse1 [ long]: refCnt = 3, refCntWtd = 1.20
V01 loc0 [ ref]: refCnt = 1, refCntWtd = 1
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(4)={ V14 V07 V05 V06}
BB02 USE(1)={V07 } + ByrefExposed + GcHeap
DEF(1)={ V15}
BB03 USE(1)={ V15}
DEF(1)={V08 }
BB04 USE(1)={V05 }
DEF(1)={ V08}
BB05 USE(2)={ V06 V08} + ByrefExposed + GcHeap
DEF(1)={V03 } + ByrefExposed* + GcHeap*
BB06 USE(1)={V03} + ByrefExposed
DEF(1)={V03} + ByrefExposed + GcHeap
BB07 USE(1)={ V14} + ByrefExposed + GcHeap
DEF(1)={V10 }
BB08 USE(1)={V03} + ByrefExposed
DEF(0)={ }
BB12 USE(0)={}
DEF(0)={}
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
Reporting this as generic context: referenced
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V07 V05 V06} + ByrefExposed + GcHeap
BB02 IN (5)={V00 V14 V07 V05 V06 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V05 V06 V15} + ByrefExposed + GcHeap
BB03 IN (4)={V00 V14 V06 V15} + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08 } + ByrefExposed + GcHeap
BB04 IN (4)={V00 V14 V05 V06 } + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08} + ByrefExposed + GcHeap
BB05 IN (4)={ V00 V14 V06 V08} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14 } + ByrefExposed + GcHeap
BB06 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB07 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB08 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
BB12 IN (1)={V00}
OUT(1)={V00}
Removing dead node:
N006 ( 6, 6) [000083] J--X---N---- * LE void <l:$2ca, c:$2c9>
Removing dead node:
N005 ( 1, 1) [000082] ------------ * CNS_INT long 96 $c4
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V06: refCnt = 1, refCntWtd = 2
New refCnts for V00: refCnt = 2, refCntWtd = 2
New refCnts for V05: refCnt = 1, refCntWtd = 2
New refCnts for V05: refCnt = 2, refCntWtd = 4
New refCnts for V14: refCnt = 1, refCntWtd = 1
New refCnts for V14: refCnt = 2, refCntWtd = 2
New refCnts for V07: refCnt = 1, refCntWtd = 2
New refCnts for V07: refCnt = 2, refCntWtd = 4
New refCnts for V07: refCnt = 3, refCntWtd = 4.80
New refCnts for V15: refCnt = 1, refCntWtd = 0.40
New refCnts for V15: refCnt = 2, refCntWtd = 0.80
New refCnts for V15: refCnt = 3, refCntWtd = 1.20
New refCnts for V08: refCnt = 1, refCntWtd = 0.80
New refCnts for V05: refCnt = 3, refCntWtd = 4.20
New refCnts for V08: refCnt = 2, refCntWtd = 1
New refCnts for V12: refCnt = 1, refCntWtd = 1
New refCnts for V13: refCnt = 1, refCntWtd = 1
New refCnts for V02: refCnt = 1, refCntWtd = 1
New refCnts for V08: refCnt = 3, refCntWtd = 3
New refCnts for V06: refCnt = 2, refCntWtd = 4
New refCnts for V03: refCnt = 1, refCntWtd = 1
New refCnts for V02: refCnt = 2, refCntWtd = 3
New refCnts for V12: refCnt = 2, refCntWtd = 3
New refCnts for V03: refCnt = 2, refCntWtd = 3
New refCnts for V03: refCnt = 3, refCntWtd = 5
New refCnts for V03: refCnt = 4, refCntWtd = 7
New refCnts for V14: refCnt = 3, refCntWtd = 10
New refCnts for V10: refCnt = 1, refCntWtd = 16
New refCnts for V10: refCnt = 2, refCntWtd = 32
New refCnts for V03: refCnt = 5, refCntWtd = 15
New refCnts for V02: refCnt = 3, refCntWtd = 11
New refCnts for V13: refCnt = 2, refCntWtd = 9
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 3, refCntWtd = 3
New refCnts for V00: refCnt = 4, refCntWtd = 4
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB08 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???) i label target bwd LIR
BB08 [0011] 1 BB07 8 0 [???..035)-> BB06 ( cond ) i target bwd LIR
BB12 [0003] 1 BB08 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
[000165] ------------ IL_OFFSET void IL offset: 0x0
[000166] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
/--* t7 ref
N003 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
[000167] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
/--* t18 long
N003 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
N001 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t26 long
N003 ( 2, 2) [000039] -c---------- t39 = * LEA(b+8) long
/--* t39 long
N004 ( 4, 4) [000040] -c-X-------- t40 = * IND long <l:$244, c:$243>
N005 ( 1, 1) [000041] -c---------- t41 = CNS_INT long 96 $c4
/--* t40 long
+--* t41 long
N006 ( 6, 6) [000042] J--X---N---- * LE void <l:$2c3, c:$2c2>
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
/--* t25 long
N003 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
N007 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] -c---------- t32 = CNS_INT long 0 $c0
/--* t160 long
+--* t32 long
N010 ( 13, 11) [000033] J------N---- * EQ void <l:$2c5, c:$2c4>
N011 ( 15, 13) [000116] ------------ * JTRUE void
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 (last use) <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
/--* t5 byref
[000175] ------------ t175 = * PUTARG_REG byref REG rcx
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
/--* t45 long
[000176] ------------ t176 = * PUTARG_REG long REG rdx
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t16 ref
[000177] ------------ t177 = * PUTARG_REG ref REG r8
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
[000168] ------------ IL_OFFSET void IL offset: 0x15
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
------------ BB06 [019..02B), preds={BB08} succs={BB07}
[000169] ------------ IL_OFFSET void IL offset: 0x19
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
/--* t102 byref
+--* t99 long
N007 ( 8, 8) [000103] -c---------- t103 = * LEA(b+(i*8)+0) byref
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) $1d1
[000170] ------------ IL_OFFSET void IL offset: 0x27
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
------------ BB07 [02B..???), preds={BB05,BB06} succs={BB08}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
[000171] ------------ IL_OFFSET void IL offset: 0x2b
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
N001 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
/--* t67 long
N003 ( 2, 2) [000080] -c---------- t80 = * LEA(b+8) long
/--* t80 long
N004 ( 4, 4) [000081] ---X-------- t81 = * IND long <l:$24c, c:$24b>
------------ BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
N001 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] -c---------- t132 = LCL_VAR int (AX) V13 tmp9 $3c1
/--* t50 int
+--* t132 int
N003 ( 5, 4) [000089] J---G--N---- * LT void $2cd
N004 ( 7, 6) [000090] ----G------- * JTRUE void
------------ BB12 [035..037) (return), preds={BB08} succs={}
[000172] ------------ IL_OFFSET void IL offset: 0x35
N001 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null $VN.Null
/--* t163 ref
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB08 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???) i label target bwd LIR
BB08 [0011] 1 BB07 8 0 [???..035)-> BB06 ( cond ) i target bwd LIR
BB12 [0003] 1 BB08 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
[000165] ------------ IL_OFFSET void IL offset: 0x0
[000166] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 $80
/--* t7 ref
N003 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref
/--* t135 byref
N004 ( 4, 4) [000008] ---XG------- t8 = * IND ref <l:$1c4, c:$1c3>
/--* t8 ref
N006 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2
[000167] ------------ IL_OFFSET void IL offset: 0x8
N001 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 $80
/--* t10 ref
N002 ( 3, 2) [000011] #----O------ t11 = * IND long $1c5
/--* t11 long
N004 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2
N001 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 $1c5
/--* t18 long
N003 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long
/--* t20 long
N004 ( 4, 4) [000021] #----------- t21 = * IND long $1c6
/--* t21 long
N006 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1
N007 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t155 long
N009 ( 8, 7) [000022] n----------- t22 = * IND long <l:$280, c:$201>
/--* t22 long
N011 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2
N001 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 <l:$280, c:$201>
/--* t26 long
N003 ( 2, 2) [000039] -c---------- t39 = * LEA(b+8) long
/--* t39 long
N004 ( 4, 4) [000040] -c-X-------- t40 = * IND long <l:$244, c:$243>
N005 ( 1, 1) [000041] -c---------- t41 = CNS_INT long 96 $c4
/--* t40 long
+--* t41 long
N006 ( 6, 6) [000042] J--X---N---- * LE void <l:$2c3, c:$2c2>
N007 ( 8, 8) [000115] ---X-------- * JTRUE void
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N001 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 (last use) <l:$280, c:$201>
/--* t25 long
N003 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long
/--* t28 long
N004 ( 4, 4) [000029] n----------- t29 = * IND long <l:$282, c:$204>
/--* t29 long
N006 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1
N007 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 <l:$282, c:$204>
N009 ( 1, 1) [000032] -c---------- t32 = CNS_INT long 0 $c0
/--* t160 long
+--* t32 long
N010 ( 13, 11) [000033] J------N---- * EQ void <l:$2c5, c:$2c4>
N011 ( 15, 13) [000116] ------------ * JTRUE void
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N001 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 (last use) <l:$282, c:$204>
/--* t162 long
N003 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N003 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 (last use) $1c5
/--* t17 long
[000173] ------------ t173 = * PUTARG_REG long REG rcx
N004 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token $181
/--* t30 long
[000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N005 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS $247
/--* t31 long
N007 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2
N004 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9
/--* t5 byref
[000175] ------------ t175 = * PUTARG_REG byref REG rcx
N006 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 (last use) $283
/--* t45 long
[000176] ------------ t176 = * PUTARG_REG long REG rdx
N007 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 (last use) <l:$1c1, c:$101>
/--* t16 ref
[000177] ------------ t177 = * PUTARG_REG ref REG r8
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
N008 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor $VN.Void
[000168] ------------ IL_OFFSET void IL offset: 0x15
N001 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 $40
/--* t47 int
N003 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2
------------ BB06 [019..02B), preds={BB08} succs={BB07}
[000169] ------------ IL_OFFSET void IL offset: 0x19
N002 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 $480
N003 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 $3c0
/--* t94 int
N004 ( 2, 3) [000099] ------------ t99 = * CAST long <- int $24f
/--* t102 byref
+--* t99 long
N007 ( 8, 8) [000103] -c---------- t103 = * LEA(b+(i*8)+0) byref
N010 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 $40
/--* t103 byref
+--* t105 int
N009 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) $1d1
[000170] ------------ IL_OFFSET void IL offset: 0x27
N001 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 (last use) $3c0
N002 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 $4b
/--* t108 int
+--* t109 int
N003 ( 3, 3) [000110] ------------ t110 = * ADD int $2ce
/--* t110 int
N005 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4
------------ BB07 [02B..???), preds={BB05,BB06} succs={BB08}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3
[000171] ------------ IL_OFFSET void IL offset: 0x2b
N001 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 $1c6
/--* t157 long
N002 ( 3, 2) [000063] n----------- t63 = * IND long <l:$284, c:$441>
/--* t63 long
N004 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2
N001 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 (last use) <l:$284, c:$441>
/--* t67 long
N003 ( 2, 2) [000080] -c---------- t80 = * LEA(b+8) long
/--* t80 long
N004 ( 4, 4) [000081] ---X-------- t81 = * IND long <l:$24c, c:$24b>
------------ BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
N001 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 $3c0
N002 ( 3, 2) [000132] -c---------- t132 = LCL_VAR int (AX) V13 tmp9 $3c1
/--* t50 int
+--* t132 int
N003 ( 5, 4) [000089] J---G--N---- * LT void $2cd
N004 ( 7, 6) [000090] ----G------- * JTRUE void
------------ BB12 [035..037) (return), preds={BB08} succs={}
[000172] ------------ IL_OFFSET void IL offset: 0x35
N001 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null $VN.Null
/--* t163 ref
N002 ( 2, 2) [000114] ------------ * RETURN ref $105
-------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{V00}
{V05 V06 V07 V14}
{V00}
{V00 V05 V06 V07 V14}
BB02 use def in out
{V07}
{V15}
{V00 V05 V06 V07 V14}
{V00 V05 V06 V14 V15}
BB03 use def in out
{V15}
{V08}
{V00 V06 V14 V15}
{V00 V06 V08 V14}
BB04 use def in out
{V05}
{V08}
{V00 V05 V06 V14}
{V00 V06 V08 V14}
BB05 use def in out
{V06 V08}
{V03}
{V00 V06 V08 V14}
{V00 V03 V14}
BB06 use def in out
{V03}
{V03}
{V00 V03 V14}
{V00 V03 V14}
BB07 use def in out
{V14}
{V10}
{V00 V03 V14}
{V00 V03 V14}
BB08 use def in out
{V03}
{}
{V00 V03 V14}
{V00 V03 V14}
BB12 use def in out
{}
{}
{V00}
{V00}
Interval 0: ref RefPositions {} physReg:NA Preferences=[allInt]
Interval 0: (V00) ref RefPositions {} physReg:NA Preferences=[allInt]
Interval 1: int RefPositions {} physReg:NA Preferences=[allInt]
Interval 1: (V03) int RefPositions {} physReg:NA Preferences=[allInt]
Interval 2: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 2: (V05) long RefPositions {} physReg:NA Preferences=[allInt]
Interval 3: ref RefPositions {} physReg:NA Preferences=[allInt]
Interval 3: (V06) ref RefPositions {} physReg:NA Preferences=[allInt]
Interval 4: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 4: (V07) long RefPositions {} physReg:NA Preferences=[allInt]
Interval 5: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 5: (V08) long RefPositions {} physReg:NA Preferences=[allInt]
Interval 6: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 6: (V10) long RefPositions {} physReg:NA Preferences=[allInt]
Interval 7: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 7: (V14) long RefPositions {} physReg:NA Preferences=[allInt]
Interval 8: long RefPositions {} physReg:NA Preferences=[allInt]
Interval 8: (V15) long RefPositions {} physReg:NA Preferences=[allInt]
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 1, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
LSRA Block Sequence: BB01( 1 )
BB02( 0.40)
BB03( 0.40)
BB04( 0.10)
BB05( 1 )
BB07( 8 )
BB08( 8 )
BB06( 2 )
BB12( 1 )
BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
=====
N000. IL_OFFSET IL offset: 0x0
N000. IL_OFFSET IL offset: 0x8
N001. V00(t7)
N003. t135 = LEA(b+16); t7
N004. t8 = IND ; t135
N006. V06(t15); t8
N000. IL_OFFSET IL offset: 0x8
N001. V00(t10)
N002. t11 = IND ; t10
N004. V05(t13); t11
N001. V05(t18)
N003. t20 = LEA(b+56); t18
N004. t21 = IND ; t20
N006. V14(t154); t21
N007. V14(t155)
N009. t22 = IND ; t155
N011. V07(t24); t22
N001. V07(t26)
N003. t39 = LEA(b+8) ; t26
N004. t40 = IND ; t39
N005. CNS_INT 96
N006. LE ; t40
N007. JTRUE
BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
=====
N001. V07(t25*)
N003. t28 = LEA(b+96); t25*
N004. t29 = IND ; t28
N006. V15(t159); t29
N007. V15(t160)
N009. CNS_INT 0
N010. EQ ; t160
N011. JTRUE
BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
=====
N001. V15(t162*)
N003. V08(t118); t162*
BB04 [???..???), preds={BB01,BB02} succs={BB05}
=====
N003. V05(t17*)
N000. t173 = PUTARG_REG; t17*
N004. t30 = CNS_INT(h) 0x7ff9f1337fe8 token
N000. t174 = PUTARG_REG; t30
N005. t31 = CALL help; t173,t174
N007. V08(t120); t31
BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
=====
N004. t5 = LCL_VAR_ADDR V02 loc1
byref V02._pointer (offs=0x00) -> V12 tmp8
int V02._length (offs=0x08) -> V13 tmp9
N000. t175 = PUTARG_REG; t5
N006. V08(t45*)
N000. t176 = PUTARG_REG; t45*
N007. V06(t16*)
N000. t177 = PUTARG_REG; t16*
N008. CALL ; t175,t176,t177
N000. IL_OFFSET IL offset: 0x15
N001. t47 = CNS_INT 0
N003. V03(t49); t47
BB07 [02B..???), preds={BB05,BB06} succs={BB08}
=====
N000. IL_OFFSET IL offset: 0x2b
N001. V14(t157)
N002. t63 = IND ; t157
N004. V10(t65); t63
N001. V10(t67*)
N003. t80 = LEA(b+8) ; t67*
N004. IND ; t80
BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
=====
N001. V03(t50)
N002. V13 MEM
N003. LT ; t50
N004. JTRUE
BB06 [019..02B), preds={BB08} succs={BB07}
=====
N000. IL_OFFSET IL offset: 0x19
N002. t102 = V12 MEM
N003. V03(t94)
N004. t99 = CAST ; t94
N007. t103 = LEA(b+(i*8)+0); t102,t99
N010. t105 = CNS_INT 0
N009. STORE_BLK; t103,t105
N000. IL_OFFSET IL offset: 0x27
N001. V03(t108*)
N002. CNS_INT 1
N003. t110 = ADD ; t108*
N005. V03(t112); t110
BB12 [035..037) (return), preds={BB08} succs={}
=====
N000. IL_OFFSET IL offset: 0x35
N001. t163 = CNS_INT null
N002. RETURN ; t163
buildIntervals second part ========
Int arg V00 in reg rcx
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed>
NEW BLOCK BB01
<RefPosition #1 @1 RefTypeBB BB01 regmask=[] minReg=1>
DefList: { }
N003 (???,???) [000165] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N005 (???,???) [000166] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N007 ( 1, 1) [000007] ------------ * LCL_VAR ref V00 this u:1 NA REG NA $80
DefList: { }
N009 ( 2, 2) [000135] -c---------- * LEA(b+16) byref REG NA
Contained
DefList: { }
N011 ( 4, 4) [000008] ---XG------- * IND ref REG NA <l:$1c4, c:$1c3>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last>
Interval 9: ref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #3 @12 RefTypeDef <Ivl:9> IND BB01 regmask=[allInt] minReg=1>
DefList: { N011.t8. IND }
N013 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2 NA REG NA
<RefPosition #4 @13 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last>
Assigning related <V06/L3> to <I9>
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last>
DefList: { }
N015 (???,???) [000167] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N017 ( 1, 1) [000010] !----------- * LCL_VAR ref V00 this u:1 NA REG NA $80
DefList: { }
N019 ( 3, 2) [000011] #----O------ * IND long REG NA $1c5
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last>
Interval 10: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #7 @20 RefTypeDef <Ivl:10> IND BB01 regmask=[allInt] minReg=1>
DefList: { N019.t11. IND }
N021 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2 NA REG NA
<RefPosition #8 @21 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last>
Assigning related <V05/L2> to <I10>
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last>
DefList: { }
N023 ( 1, 1) [000018] ------------ * LCL_VAR long V05 tmp1 u:2 NA REG NA $1c5
DefList: { }
N025 ( 2, 2) [000020] -c---------- * LEA(b+56) long REG NA
Contained
DefList: { }
N027 ( 4, 4) [000021] #----------- * IND long REG NA $1c6
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last>
Interval 11: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #11 @28 RefTypeDef <Ivl:11> IND BB01 regmask=[allInt] minReg=1>
DefList: { N027.t21. IND }
N029 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1 NA REG NA
<RefPosition #12 @29 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last>
Assigning related <V14/L7> to <I11>
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last>
DefList: { }
N031 ( 1, 1) [000155] ------------ * LCL_VAR long V14 cse0 u:1 NA REG NA $1c6
DefList: { }
N033 ( 8, 7) [000022] n----------- * IND long REG NA <l:$280, c:$201>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[allInt] minReg=1 last>
Interval 12: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #15 @34 RefTypeDef <Ivl:12> IND BB01 regmask=[allInt] minReg=1>
DefList: { N033.t22. IND }
N035 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2 NA REG NA
<RefPosition #16 @35 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last>
Assigning related <V07/L4> to <I12>
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last>
DefList: { }
N037 ( 1, 1) [000026] ------------ * LCL_VAR long V07 tmp3 u:2 NA REG NA <l:$280, c:$201>
DefList: { }
N039 ( 2, 2) [000039] -c---------- * LEA(b+8) long REG NA
Contained
DefList: { }
N041 ( 4, 4) [000040] -c-X-------- * IND long REG NA <l:$244, c:$243>
Contained
DefList: { }
N043 ( 1, 1) [000041] -c---------- * CNS_INT long 96 REG NA $c4
Contained
DefList: { }
N045 ( 6, 6) [000042] J--X---N---- * LE void REG NA <l:$2c3, c:$2c2>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[allInt] minReg=1 last>
DefList: { }
N047 ( 8, 8) [000115] ---X-------- * JTRUE void REG NA
CHECKING LAST USES for BB01, liveout={V00 V05 V06 V07 V14}
==============================
Reporting this as generic context: referenced
use: {V00}
def: {V05 V06 V07 V14}
NEW BLOCK BB02
Setting BB01 as the predecessor for determining incoming variable registers of BB02
<RefPosition #19 @49 RefTypeBB BB02 regmask=[] minReg=1>
DefList: { }
N051 ( 1, 1) [000025] ------------ * LCL_VAR long V07 tmp3 u:2 NA (last use) REG NA <l:$280, c:$201>
DefList: { }
N053 ( 2, 2) [000028] -c---------- * LEA(b+96) long REG NA
Contained
DefList: { }
N055 ( 4, 4) [000029] n----------- * IND long REG NA <l:$282, c:$204>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
Interval 13: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #21 @56 RefTypeDef <Ivl:13> IND BB02 regmask=[allInt] minReg=1>
DefList: { N055.t29. IND }
N057 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1 NA REG NA
<RefPosition #22 @57 RefTypeUse <Ivl:13> BB02 regmask=[allInt] minReg=1 last>
Assigning related <V15/L8> to <I13>
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[allInt] minReg=1 last>
DefList: { }
N059 ( 3, 2) [000160] ------------ * LCL_VAR long V15 cse1 u:1 NA REG NA <l:$282, c:$204>
DefList: { }
N061 ( 1, 1) [000032] -c---------- * CNS_INT long 0 REG NA $c0
Contained
DefList: { }
N063 ( 13, 11) [000033] J------N---- * EQ void REG NA <l:$2c5, c:$2c4>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
DefList: { }
N065 ( 15, 13) [000116] ------------ * JTRUE void REG NA
CHECKING LAST USES for BB02, liveout={V00 V05 V06 V14 V15}
==============================
Reporting this as generic context: referenced
use: {V07}
def: {V15}
NEW BLOCK BB03
Setting BB02 as the predecessor for determining incoming variable registers of BB03
<RefPosition #25 @67 RefTypeBB BB03 regmask=[] minReg=1>
DefList: { }
N069 ( 3, 2) [000162] ------------ * LCL_VAR long V15 cse1 u:1 NA (last use) REG NA <l:$282, c:$204>
DefList: { }
N071 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4 NA REG NA
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[allInt] minReg=1 last>
Assigning related <V08/L5> to <V15/L8>
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last>
CHECKING LAST USES for BB03, liveout={V00 V06 V08 V14}
==============================
Reporting this as generic context: referenced
use: {V15}
def: {V08}
NEW BLOCK BB04
Setting BB01 as the predecessor for determining incoming variable registers of BB04
<RefPosition #28 @73 RefTypeBB BB04 regmask=[] minReg=1>
DefList: { }
N075 ( 1, 1) [000017] ------------ * LCL_VAR long V05 tmp1 u:2 NA (last use) REG NA $1c5
DefList: { }
N077 (???,???) [000173] ------------ * PUTARG_REG long REG rcx
<RefPosition #29 @77 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
Interval 14: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #31 @78 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #32 @78 RefTypeDef <Ivl:14> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed>
DefList: { N077.t173. PUTARG_REG }
N079 ( 2, 10) [000030] ------------ * CNS_INT(h) long 0x7ff9f1337fe8 token REG NA $181
Interval 15: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #33 @80 RefTypeDef <Ivl:15> CNS_INT BB04 regmask=[allInt] minReg=1>
DefList: { N077.t173. PUTARG_REG; N079.t30. CNS_INT }
N081 (???,???) [000174] ------------ * PUTARG_REG long REG rdx
<RefPosition #34 @81 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #35 @81 RefTypeUse <Ivl:15> BB04 regmask=[rdx] minReg=1 last fixed>
Interval 16: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #36 @82 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #37 @82 RefTypeDef <Ivl:16> PUTARG_REG BB04 regmask=[rdx] minReg=1 fixed>
DefList: { N077.t173. PUTARG_REG; N081.t174. PUTARG_REG }
N083 ( 17, 18) [000031] --C-G------- * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS REG NA $247
<RefPosition #38 @83 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #39 @83 RefTypeUse <Ivl:14> BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #40 @83 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #41 @83 RefTypeUse <Ivl:16> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #42 @84 RefTypeKill <Reg:rax> BB04 regmask=[rax] minReg=1>
<RefPosition #43 @84 RefTypeKill <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #44 @84 RefTypeKill <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #45 @84 RefTypeKill <Reg:r8 > BB04 regmask=[r8] minReg=1>
<RefPosition #46 @84 RefTypeKill <Reg:r9 > BB04 regmask=[r9] minReg=1>
<RefPosition #47 @84 RefTypeKill <Reg:r10> BB04 regmask=[r10] minReg=1>
<RefPosition #48 @84 RefTypeKill <Reg:r11> BB04 regmask=[r11] minReg=1>
Interval 17: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #49 @84 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1>
<RefPosition #50 @84 RefTypeDef <Ivl:17> CALL BB04 regmask=[rax] minReg=1 fixed>
DefList: { N083.t31. CALL }
N085 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3 NA REG NA
<RefPosition #51 @85 RefTypeUse <Ivl:17> BB04 regmask=[allInt] minReg=1 last>
Assigning related <V08/L5> to <I17>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 last>
CHECKING LAST USES for BB04, liveout={V00 V06 V08 V14}
==============================
Reporting this as generic context: referenced
use: {V05}
def: {V08}
NEW BLOCK BB05
Setting BB03 as the predecessor for determining incoming variable registers of BB05
<RefPosition #53 @87 RefTypeBB BB05 regmask=[] minReg=1>
DefList: { }
N089 ( 3, 2) [000005] -------N---- * LCL_VAR_ADDR byref V02 loc1 NA
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9 REG NA
Interval 18: byref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #54 @90 RefTypeDef <Ivl:18> LCL_VAR_ADDR BB05 regmask=[allInt] minReg=1>
DefList: { N089.t5. LCL_VAR_ADDR }
N091 (???,???) [000175] ------------ * PUTARG_REG byref REG rcx
<RefPosition #55 @91 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #56 @91 RefTypeUse <Ivl:18> BB05 regmask=[rcx] minReg=1 last fixed>
Interval 19: byref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #57 @92 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #58 @92 RefTypeDef <Ivl:19> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed>
DefList: { N091.t175. PUTARG_REG }
N093 ( 1, 1) [000045] ------------ * LCL_VAR long V08 tmp4 u:2 NA (last use) REG NA $283
DefList: { N091.t175. PUTARG_REG }
N095 (???,???) [000176] ------------ * PUTARG_REG long REG rdx
<RefPosition #59 @95 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
Interval 20: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #61 @96 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #62 @96 RefTypeDef <Ivl:20> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed>
DefList: { N091.t175. PUTARG_REG; N095.t176. PUTARG_REG }
N097 ( 1, 1) [000016] ------------ * LCL_VAR ref V06 tmp2 u:2 NA (last use) REG NA <l:$1c1, c:$101>
DefList: { N091.t175. PUTARG_REG; N095.t176. PUTARG_REG }
N099 (???,???) [000177] ------------ * PUTARG_REG ref REG r8
<RefPosition #63 @99 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last fixed>
Interval 21: ref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #65 @100 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #66 @100 RefTypeDef <Ivl:21> PUTARG_REG BB05 regmask=[r8] minReg=1 fixed>
DefList: { N091.t175. PUTARG_REG; N095.t176. PUTARG_REG; N099.t177. PUTARG_REG }
N101 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor REG NA $VN.Void
<RefPosition #67 @101 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #68 @101 RefTypeUse <Ivl:19> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #69 @101 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #70 @101 RefTypeUse <Ivl:20> BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #71 @101 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #72 @101 RefTypeUse <Ivl:21> BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #73 @102 RefTypeKill <Reg:rax> BB05 regmask=[rax] minReg=1>
<RefPosition #74 @102 RefTypeKill <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #75 @102 RefTypeKill <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #76 @102 RefTypeKill <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #77 @102 RefTypeKill <Reg:r9 > BB05 regmask=[r9] minReg=1>
<RefPosition #78 @102 RefTypeKill <Reg:r10> BB05 regmask=[r10] minReg=1>
<RefPosition #79 @102 RefTypeKill <Reg:r11> BB05 regmask=[r11] minReg=1>
DefList: { }
N103 (???,???) [000168] ------------ * IL_OFFSET void IL offset: 0x15 REG NA
DefList: { }
N105 ( 1, 1) [000047] ------------ * CNS_INT int 0 REG NA $40
Interval 22: int RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #80 @106 RefTypeDef <Ivl:22> CNS_INT BB05 regmask=[allInt] minReg=1>
DefList: { N105.t47. CNS_INT }
N107 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2 NA REG NA
<RefPosition #81 @107 RefTypeUse <Ivl:22> BB05 regmask=[allInt] minReg=1 last>
Assigning related <V03/L1> to <I22>
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 last>
CHECKING LAST USES for BB05, liveout={V00 V03 V14}
==============================
Reporting this as generic context: referenced
use: {V06 V08}
def: {V03}
NEW BLOCK BB07
Setting BB05 as the predecessor for determining incoming variable registers of BB07
<RefPosition #83 @109 RefTypeBB BB07 regmask=[] minReg=1>
DefList: { }
N111 (???,???) [000171] ------------ * IL_OFFSET void IL offset: 0x2b REG NA
DefList: { }
N113 ( 1, 1) [000157] ------------ * LCL_VAR long V14 cse0 u:1 NA REG NA $1c6
DefList: { }
N115 ( 3, 2) [000063] n----------- * IND long REG NA <l:$284, c:$441>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
Interval 23: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #85 @116 RefTypeDef <Ivl:23> IND BB07 regmask=[allInt] minReg=1>
DefList: { N115.t63. IND }
N117 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2 NA REG NA
<RefPosition #86 @117 RefTypeUse <Ivl:23> BB07 regmask=[allInt] minReg=1 last>
Assigning related <V10/L6> to <I23>
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 last>
DefList: { }
N119 ( 1, 1) [000067] ------------ * LCL_VAR long V10 tmp6 u:2 NA (last use) REG NA <l:$284, c:$441>
DefList: { }
N121 ( 2, 2) [000080] -c---------- * LEA(b+8) long REG NA
Contained
DefList: { }
N123 ( 4, 4) [000081] ---X-------- * IND long REG NA <l:$24c, c:$24b>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
Interval 24: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #89 @124 RefTypeDef <Ivl:24> IND BB07 regmask=[allInt] minReg=1>
CHECKING LAST USES for BB07, liveout={V00 V03 V14}
==============================
Reporting this as generic context: referenced
use: {V14}
def: {V10}
NEW BLOCK BB08
Setting BB07 as the predecessor for determining incoming variable registers of BB08
<RefPosition #90 @125 RefTypeBB BB08 regmask=[] minReg=1>
DefList: { }
N127 ( 1, 1) [000050] ------------ * LCL_VAR int V03 loc2 u:3 NA REG NA $3c0
DefList: { }
N129 ( 3, 2) [000132] -c---------- * LCL_VAR int (AX) V13 tmp9 NA REG NA $3c1
Contained
DefList: { }
N131 ( 5, 4) [000089] J---G--N---- * LT void REG NA $2cd
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[allInt] minReg=1 last>
DefList: { }
N133 ( 7, 6) [000090] ----G------- * JTRUE void REG NA
CHECKING LAST USES for BB08, liveout={V00 V03 V14}
==============================
Reporting this as generic context: referenced
use: {V03}
def: {}
NEW BLOCK BB06
Setting BB08 as the predecessor for determining incoming variable registers of BB06
<RefPosition #92 @135 RefTypeBB BB06 regmask=[] minReg=1>
DefList: { }
N137 (???,???) [000169] ------------ * IL_OFFSET void IL offset: 0x19 REG NA
DefList: { }
N139 ( 3, 2) [000102] ------------ * LCL_VAR byref (AX) V12 tmp8 NA REG NA $480
Interval 25: byref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #93 @140 RefTypeDef <Ivl:25> LCL_VAR BB06 regmask=[allInt] minReg=1>
DefList: { N139.t102. LCL_VAR }
N141 ( 1, 1) [000094] ------------ * LCL_VAR int V03 loc2 u:3 NA REG NA $3c0
DefList: { N139.t102. LCL_VAR }
N143 ( 2, 3) [000099] ------------ * CAST long <- int REG NA $24f
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
Interval 26: long RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #95 @144 RefTypeDef <Ivl:26> CAST BB06 regmask=[allInt] minReg=1>
DefList: { N139.t102. LCL_VAR; N143.t99. CAST }
N145 ( 8, 8) [000103] -c---------- * LEA(b+(i*8)+0) byref REG NA
Contained
DefList: { N139.t102. LCL_VAR; N143.t99. CAST }
N147 ( 1, 1) [000105] ------------ * CNS_INT int 0 REG NA $40
Interval 27: int RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #96 @148 RefTypeDef <Ivl:27> CNS_INT BB06 regmask=[allInt] minReg=1>
DefList: { N139.t102. LCL_VAR; N143.t99. CAST; N147.t105. CNS_INT }
N149 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) REG NA $1d1
<RefPosition #97 @149 RefTypeUse <Ivl:25> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #98 @149 RefTypeUse <Ivl:26> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #99 @149 RefTypeUse <Ivl:27> BB06 regmask=[allInt] minReg=1 last>
DefList: { }
N151 (???,???) [000170] ------------ * IL_OFFSET void IL offset: 0x27 REG NA
DefList: { }
N153 ( 1, 1) [000108] ------------ * LCL_VAR int V03 loc2 u:3 NA (last use) REG NA $3c0
DefList: { }
N155 ( 1, 1) [000109] -c---------- * CNS_INT int 1 REG NA $4b
Contained
DefList: { }
N157 ( 3, 3) [000110] ------------ * ADD int REG NA $2ce
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
Interval 28: int RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #101 @158 RefTypeDef <Ivl:28> ADD BB06 regmask=[allInt] minReg=1>
Assigning related <I28> to <V03/L1>
DefList: { N157.t110. ADD }
N159 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4 NA REG NA
<RefPosition #102 @159 RefTypeUse <Ivl:28> BB06 regmask=[allInt] minReg=1 last>
Assigning related <V03/L1> to <I28>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[allInt] minReg=1 last>
Exposed uses:<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1>
V03<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1>
V14
CHECKING LAST USES for BB06, liveout={V00 V03 V14}
==============================
Reporting this as generic context: referenced
use: {V03}
def: {V03}
NEW BLOCK BB12
Setting BB08 as the predecessor for determining incoming variable registers of BB12
<RefPosition #106 @161 RefTypeBB BB12 regmask=[] minReg=1>
DefList: { }
N163 (???,???) [000172] ------------ * IL_OFFSET void IL offset: 0x35 REG NA
DefList: { }
N165 ( 1, 1) [000163] ------------ * CNS_INT ref null REG NA $VN.Null
Interval 29: ref RefPositions {} physReg:NA Preferences=[allInt]
<RefPosition #107 @166 RefTypeDef <Ivl:29> CNS_INT BB12 regmask=[allInt] minReg=1>
DefList: { N165.t163. CNS_INT }
N167 ( 2, 2) [000114] ------------ * RETURN ref REG NA $105
<RefPosition #108 @167 RefTypeFixedReg <Reg:rax> BB12 regmask=[rax] minReg=1>
<RefPosition #109 @167 RefTypeUse <Ivl:29> BB12 regmask=[rax] minReg=1 last fixed>
Exposed uses:<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1>
V00
CHECKING LAST USES for BB12, liveout={V00}
==============================
Reporting this as generic context: referenced
use: {}
def: {}
Reporting this as generic context: referenced
Adding exposed use of this, for lvaKeepAliveAndReportThis
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1>
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: (V00) ref RefPositions {#0@0 #2@11 #6@19 #110@169 #111@169} physReg:rcx Preferences=[rbx rbp rsi rdi r12-r15]
Interval 1: (V03) int RefPositions {#82@108 #91@131 #94@143 #100@157 #103@160 #104@161} physReg:NA Preferences=[allInt] RelatedInterval <I28>
Interval 2: (V05) long RefPositions {#9@22 #10@27 #30@77} physReg:NA Preferences=[rcx]
Interval 3: (V06) ref RefPositions {#5@14 #64@99} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 4: (V07) long RefPositions {#17@36 #18@45 #20@55} physReg:NA Preferences=[allInt]
Interval 5: (V08) long RefPositions {#27@72 #52@86 #60@95} physReg:NA Preferences=[rdx]
Interval 6: (V10) long RefPositions {#87@118 #88@123} physReg:NA Preferences=[allInt]
Interval 7: (V14) long RefPositions {#13@30 #14@33 #84@115 #105@161} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 8: (V15) long RefPositions {#23@58 #24@63 #26@71} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5>
Interval 9: ref RefPositions {#3@12 #4@13} physReg:NA Preferences=[allInt] RelatedInterval <V06/L3>
Interval 10: long RefPositions {#7@20 #8@21} physReg:NA Preferences=[allInt] RelatedInterval <V05/L2>
Interval 11: long RefPositions {#11@28 #12@29} physReg:NA Preferences=[allInt] RelatedInterval <V14/L7>
Interval 12: long RefPositions {#15@34 #16@35} physReg:NA Preferences=[allInt] RelatedInterval <V07/L4>
Interval 13: long RefPositions {#21@56 #22@57} physReg:NA Preferences=[allInt] RelatedInterval <V15/L8>
Interval 14: long RefPositions {#32@78 #39@83} physReg:NA Preferences=[rcx]
Interval 15: long (constant) RefPositions {#33@80 #35@81} physReg:NA Preferences=[rdx]
Interval 16: long RefPositions {#37@82 #41@83} physReg:NA Preferences=[rdx]
Interval 17: long RefPositions {#50@84 #51@85} physReg:NA Preferences=[rax] RelatedInterval <V08/L5>
Interval 18: byref RefPositions {#54@90 #56@91} physReg:NA Preferences=[rcx]
Interval 19: byref RefPositions {#58@92 #68@101} physReg:NA Preferences=[rcx]
Interval 20: long RefPositions {#62@96 #70@101} physReg:NA Preferences=[rdx]
Interval 21: ref RefPositions {#66@100 #72@101} physReg:NA Preferences=[r8]
Interval 22: int (constant) RefPositions {#80@106 #81@107} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 23: long RefPositions {#85@116 #86@117} physReg:NA Preferences=[allInt] RelatedInterval <V10/L6>
Interval 24: long RefPositions {#89@124} physReg:NA Preferences=[allInt]
Interval 25: byref RefPositions {#93@140 #97@149} physReg:NA Preferences=[allInt]
Interval 26: long RefPositions {#95@144 #98@149} physReg:NA Preferences=[allInt]
Interval 27: int (constant) RefPositions {#96@148 #99@149} physReg:NA Preferences=[allInt]
Interval 28: int RefPositions {#101@158 #102@159} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 29: ref (constant) RefPositions {#107@166 #109@167} physReg:NA Preferences=[rax]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[] minReg=1>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #3 @12 RefTypeDef <Ivl:9> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #4 @13 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #7 @20 RefTypeDef <Ivl:10> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #8 @21 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #11 @28 RefTypeDef <Ivl:11> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #12 @29 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #15 @34 RefTypeDef <Ivl:12> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #16 @35 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #19 @49 RefTypeBB BB02 regmask=[] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
<RefPosition #21 @56 RefTypeDef <Ivl:13> IND BB02 regmask=[allInt] minReg=1>
<RefPosition #22 @57 RefTypeUse <Ivl:13> BB02 regmask=[allInt] minReg=1 last>
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[allInt] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[allInt] minReg=1 regOptional>
<RefPosition #25 @67 RefTypeBB BB03 regmask=[] minReg=1>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[allInt] minReg=1 last>
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1>
<RefPosition #28 @73 RefTypeBB BB04 regmask=[] minReg=1>
<RefPosition #29 @77 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #31 @78 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #32 @78 RefTypeDef <Ivl:14> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed>
<RefPosition #33 @80 RefTypeDef <Ivl:15> CNS_INT BB04 regmask=[rdx] minReg=1>
<RefPosition #34 @81 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #35 @81 RefTypeUse <Ivl:15> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #36 @82 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #37 @82 RefTypeDef <Ivl:16> PUTARG_REG BB04 regmask=[rdx] minReg=1 fixed>
<RefPosition #38 @83 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #39 @83 RefTypeUse <Ivl:14> BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #40 @83 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #41 @83 RefTypeUse <Ivl:16> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #42 @84 RefTypeKill <Reg:rax> BB04 regmask=[rax] minReg=1 last>
<RefPosition #43 @84 RefTypeKill <Reg:rcx> BB04 regmask=[rcx] minReg=1 last>
<RefPosition #44 @84 RefTypeKill <Reg:rdx> BB04 regmask=[rdx] minReg=1 last>
<RefPosition #45 @84 RefTypeKill <Reg:r8 > BB04 regmask=[r8] minReg=1 last>
<RefPosition #46 @84 RefTypeKill <Reg:r9 > BB04 regmask=[r9] minReg=1 last>
<RefPosition #47 @84 RefTypeKill <Reg:r10> BB04 regmask=[r10] minReg=1 last>
<RefPosition #48 @84 RefTypeKill <Reg:r11> BB04 regmask=[r11] minReg=1 last>
<RefPosition #49 @84 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1>
<RefPosition #50 @84 RefTypeDef <Ivl:17> CALL BB04 regmask=[rax] minReg=1 fixed>
<RefPosition #51 @85 RefTypeUse <Ivl:17> BB04 regmask=[allInt] minReg=1 last>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1>
<RefPosition #53 @87 RefTypeBB BB05 regmask=[] minReg=1>
<RefPosition #54 @90 RefTypeDef <Ivl:18> LCL_VAR_ADDR BB05 regmask=[rcx] minReg=1>
<RefPosition #55 @91 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #56 @91 RefTypeUse <Ivl:18> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #57 @92 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #58 @92 RefTypeDef <Ivl:19> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed>
<RefPosition #59 @95 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #61 @96 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #62 @96 RefTypeDef <Ivl:20> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed>
<RefPosition #63 @99 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #65 @100 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #66 @100 RefTypeDef <Ivl:21> PUTARG_REG BB05 regmask=[r8] minReg=1 fixed>
<RefPosition #67 @101 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #68 @101 RefTypeUse <Ivl:19> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #69 @101 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #70 @101 RefTypeUse <Ivl:20> BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #71 @101 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #72 @101 RefTypeUse <Ivl:21> BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #73 @102 RefTypeKill <Reg:rax> BB05 regmask=[rax] minReg=1 last>
<RefPosition #74 @102 RefTypeKill <Reg:rcx> BB05 regmask=[rcx] minReg=1 last>
<RefPosition #75 @102 RefTypeKill <Reg:rdx> BB05 regmask=[rdx] minReg=1 last>
<RefPosition #76 @102 RefTypeKill <Reg:r8 > BB05 regmask=[r8] minReg=1 last>
<RefPosition #77 @102 RefTypeKill <Reg:r9 > BB05 regmask=[r9] minReg=1 last>
<RefPosition #78 @102 RefTypeKill <Reg:r10> BB05 regmask=[r10] minReg=1 last>
<RefPosition #79 @102 RefTypeKill <Reg:r11> BB05 regmask=[r11] minReg=1 last>
<RefPosition #80 @106 RefTypeDef <Ivl:22> CNS_INT BB05 regmask=[allInt] minReg=1>
<RefPosition #81 @107 RefTypeUse <Ivl:22> BB05 regmask=[allInt] minReg=1 last>
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1>
<RefPosition #83 @109 RefTypeBB BB07 regmask=[] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #85 @116 RefTypeDef <Ivl:23> IND BB07 regmask=[allInt] minReg=1>
<RefPosition #86 @117 RefTypeUse <Ivl:23> BB07 regmask=[allInt] minReg=1 last>
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
<RefPosition #89 @124 RefTypeDef <Ivl:24> IND BB07 regmask=[allInt] minReg=1 last local>
<RefPosition #90 @125 RefTypeBB BB08 regmask=[] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[allInt] minReg=1>
<RefPosition #92 @135 RefTypeBB BB06 regmask=[] minReg=1>
<RefPosition #93 @140 RefTypeDef <Ivl:25> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #95 @144 RefTypeDef <Ivl:26> CAST BB06 regmask=[allInt] minReg=1>
<RefPosition #96 @148 RefTypeDef <Ivl:27> CNS_INT BB06 regmask=[allInt] minReg=1>
<RefPosition #97 @149 RefTypeUse <Ivl:25> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #98 @149 RefTypeUse <Ivl:26> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #99 @149 RefTypeUse <Ivl:27> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
<RefPosition #101 @158 RefTypeDef <Ivl:28> ADD BB06 regmask=[allInt] minReg=1>
<RefPosition #102 @159 RefTypeUse <Ivl:28> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #106 @161 RefTypeBB BB12 regmask=[] minReg=1>
<RefPosition #107 @166 RefTypeDef <Ivl:29> CNS_INT BB12 regmask=[rax] minReg=1>
<RefPosition #108 @167 RefTypeFixedReg <Reg:rax> BB12 regmask=[rax] minReg=1>
<RefPosition #109 @167 RefTypeUse <Ivl:29> BB12 regmask=[rax] minReg=1 last fixed>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
-----------------
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
-----------------
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[allInt] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
-----------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
-----------------
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
-----------------
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
-----------------
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
-----------------
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last fixed>
-----------------
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
-----------------
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[allInt] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[allInt] minReg=1 regOptional>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[allInt] minReg=1 last>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: V00
BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
=====
N003. IL_OFFSET IL offset: 0x0
N005. IL_OFFSET IL offset: 0x8
N007. V00(L0)
N009. LEA(b+16)
N011. IND
Use:<V00/L0>(#2)
Def:<I9>(#3) Pref:<V06/L3>
N013. V06(L3)
Use:<I9>(#4) *
Def:<V06/L3>(#5)
N015. IL_OFFSET IL offset: 0x8
N017. V00(L0)
N019. IND
Use:<V00/L0>(#6)
Def:<I10>(#7) Pref:<V05/L2>
N021. V05(L2)
Use:<I10>(#8) *
Def:<V05/L2>(#9)
N023. V05(L2)
N025. LEA(b+56)
N027. IND
Use:<V05/L2>(#10)
Def:<I11>(#11) Pref:<V14/L7>
N029. V14(L7)
Use:<I11>(#12) *
Def:<V14/L7>(#13)
N031. V14(L7)
N033. IND
Use:<V14/L7>(#14)
Def:<I12>(#15) Pref:<V07/L4>
N035. V07(L4)
Use:<I12>(#16) *
Def:<V07/L4>(#17)
N037. V07(L4)
N039. LEA(b+8)
N041. IND
N043. CNS_INT 96
N045. LE
Use:<V07/L4>(#18)
N047. JTRUE
BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
=====
N051. V07(L4)
N053. LEA(b+96)
N055. IND
Use:<V07/L4>(#20) *
Def:<I13>(#21) Pref:<V15/L8>
N057. V15(L8)
Use:<I13>(#22) *
Def:<V15/L8>(#23) Pref:<V08/L5>
N059. V15(L8)
N061. CNS_INT 0
N063. EQ
Use:<V15/L8>(#24)
N065. JTRUE
BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
=====
N069. V15(L8)
N071. V08(L5)
Use:<V15/L8>(#26) *
Def:<V08/L5>(#27)
BB04 [???..???), preds={BB01,BB02} succs={BB05}
=====
N075. V05(L2)
N077. PUTARG_REG
Use:<V05/L2>(#30) Fixed:rcx(#29) *
Def:<I14>(#32) rcx
N079. CNS_INT(h) 0x7ff9f1337fe8 token
Def:<I15>(#33)
N081. PUTARG_REG
Use:<I15>(#35) Fixed:rdx(#34) *
Def:<I16>(#37) rdx
N083. CALL help
Use:<I14>(#39) Fixed:rcx(#38) *
Use:<I16>(#41) Fixed:rdx(#40) *
Kill: rax rcx rdx r8 r9 r10 r11
Def:<I17>(#50) rax Pref:<V08/L5>
N085. V08(L5)
Use:<I17>(#51) *
Def:<V08/L5>(#52)
BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
=====
N089. LCL_VAR_ADDR V02 loc1 NA
byref V02._pointer (offs=0x00) -> V12 tmp8
int V02._length (offs=0x08) -> V13 tmp9
Def:<I18>(#54)
N091. PUTARG_REG
Use:<I18>(#56) Fixed:rcx(#55) *
Def:<I19>(#58) rcx
N093. V08(L5)
N095. PUTARG_REG
Use:<V08/L5>(#60) Fixed:rdx(#59) *
Def:<I20>(#62) rdx
N097. V06(L3)
N099. PUTARG_REG
Use:<V06/L3>(#64) Fixed:r8(#63) *
Def:<I21>(#66) r8
N101. CALL
Use:<I19>(#68) Fixed:rcx(#67) *
Use:<I20>(#70) Fixed:rdx(#69) *
Use:<I21>(#72) Fixed:r8(#71) *
Kill: rax rcx rdx r8 r9 r10 r11
N103. IL_OFFSET IL offset: 0x15
N105. CNS_INT 0
Def:<I22>(#80) Pref:<V03/L1>
N107. V03(L1)
Use:<I22>(#81) *
Def:<V03/L1>(#82) Pref:<I28>
BB07 [02B..???), preds={BB05,BB06} succs={BB08}
=====
N111. IL_OFFSET IL offset: 0x2b
N113. V14(L7)
N115. IND
Use:<V14/L7>(#84)
Def:<I23>(#85) Pref:<V10/L6>
N117. V10(L6)
Use:<I23>(#86) *
Def:<V10/L6>(#87)
N119. V10(L6)
N121. LEA(b+8)
N123. IND
Use:<V10/L6>(#88) *
Def:<I24>(#89) LocalDefUse *
BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
=====
N127. V03(L1)
N129. V13 MEM
N131. LT
Use:<V03/L1>(#91)
N133. JTRUE
BB06 [019..02B), preds={BB08} succs={BB07}
=====
N137. IL_OFFSET IL offset: 0x19
N139. V12 MEM
Def:<I25>(#93)
N141. V03(L1)
N143. CAST
Use:<V03/L1>(#94)
Def:<I26>(#95)
N145. LEA(b+(i*8)+0)
N147. CNS_INT 0
Def:<I27>(#96)
N149. STORE_BLK
Use:<I25>(#97) *
Use:<I26>(#98) *
Use:<I27>(#99) *
N151. IL_OFFSET IL offset: 0x27
N153. V03(L1)
N155. CNS_INT 1
N157. ADD
Use:<V03/L1>(#100) *
Def:<I28>(#101) Pref:<V03/L1>
N159. V03(L1)
Use:<I28>(#102) *
Def:<V03/L1>(#103) Pref:<I28>
Exposed use of V03 at #104
Exposed use of V14 at #105
BB12 [035..037) (return), preds={BB08} succs={}
=====
N163. IL_OFFSET IL offset: 0x35
N165. CNS_INT null
Def:<I29>(#107)
N167. RETURN
Use:<I29>(#109) Fixed:rax(#108) *
Linear scan intervals after buildIntervals:
Interval 0: (V00) ref RefPositions {#0@0 #2@11 #6@19 #110@169 #111@169} physReg:rcx Preferences=[rbx rbp rsi rdi r12-r15]
Interval 1: (V03) int RefPositions {#82@108 #91@131 #94@143 #100@157 #103@160 #104@161} physReg:NA Preferences=[allInt] RelatedInterval <I28>
Interval 2: (V05) long RefPositions {#9@22 #10@27 #30@77} physReg:NA Preferences=[rcx]
Interval 3: (V06) ref RefPositions {#5@14 #64@99} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 4: (V07) long RefPositions {#17@36 #18@45 #20@55} physReg:NA Preferences=[allInt]
Interval 5: (V08) long RefPositions {#27@72 #52@86 #60@95} physReg:NA Preferences=[rdx]
Interval 6: (V10) long RefPositions {#87@118 #88@123} physReg:NA Preferences=[allInt]
Interval 7: (V14) long RefPositions {#13@30 #14@33 #84@115 #105@161} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 8: (V15) long RefPositions {#23@58 #24@63 #26@71} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5>
Interval 9: ref RefPositions {#3@12 #4@13} physReg:NA Preferences=[allInt] RelatedInterval <V06/L3>
Interval 10: long RefPositions {#7@20 #8@21} physReg:NA Preferences=[allInt] RelatedInterval <V05/L2>
Interval 11: long RefPositions {#11@28 #12@29} physReg:NA Preferences=[allInt] RelatedInterval <V14/L7>
Interval 12: long RefPositions {#15@34 #16@35} physReg:NA Preferences=[allInt] RelatedInterval <V07/L4>
Interval 13: long RefPositions {#21@56 #22@57} physReg:NA Preferences=[allInt] RelatedInterval <V15/L8>
Interval 14: long RefPositions {#32@78 #39@83} physReg:NA Preferences=[rcx]
Interval 15: long (constant) RefPositions {#33@80 #35@81} physReg:NA Preferences=[rdx]
Interval 16: long RefPositions {#37@82 #41@83} physReg:NA Preferences=[rdx]
Interval 17: long RefPositions {#50@84 #51@85} physReg:NA Preferences=[rax] RelatedInterval <V08/L5>
Interval 18: byref RefPositions {#54@90 #56@91} physReg:NA Preferences=[rcx]
Interval 19: byref RefPositions {#58@92 #68@101} physReg:NA Preferences=[rcx]
Interval 20: long RefPositions {#62@96 #70@101} physReg:NA Preferences=[rdx]
Interval 21: ref RefPositions {#66@100 #72@101} physReg:NA Preferences=[r8]
Interval 22: int (constant) RefPositions {#80@106 #81@107} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 23: long RefPositions {#85@116 #86@117} physReg:NA Preferences=[allInt] RelatedInterval <V10/L6>
Interval 24: long RefPositions {#89@124} physReg:NA Preferences=[allInt]
Interval 25: byref RefPositions {#93@140 #97@149} physReg:NA Preferences=[allInt]
Interval 26: long RefPositions {#95@144 #98@149} physReg:NA Preferences=[allInt]
Interval 27: int (constant) RefPositions {#96@148 #99@149} physReg:NA Preferences=[allInt]
Interval 28: int RefPositions {#101@158 #102@159} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 29: ref (constant) RefPositions {#107@166 #109@167} physReg:NA Preferences=[rax]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: (V00) ref RefPositions {#0@0 #2@11 #6@19 #110@169 #111@169} physReg:rcx Preferences=[rbx rbp rsi rdi r12-r15]
Interval 1: (V03) int RefPositions {#82@108 #91@131 #94@143 #100@157 #103@160 #104@161} physReg:NA Preferences=[allInt] RelatedInterval <I28>
Interval 2: (V05) long RefPositions {#9@22 #10@27 #30@77} physReg:NA Preferences=[rcx]
Interval 3: (V06) ref RefPositions {#5@14 #64@99} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 4: (V07) long RefPositions {#17@36 #18@45 #20@55} physReg:NA Preferences=[allInt]
Interval 5: (V08) long RefPositions {#27@72 #52@86 #60@95} physReg:NA Preferences=[rdx]
Interval 6: (V10) long RefPositions {#87@118 #88@123} physReg:NA Preferences=[allInt]
Interval 7: (V14) long RefPositions {#13@30 #14@33 #84@115 #105@161} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15]
Interval 8: (V15) long RefPositions {#23@58 #24@63 #26@71} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5>
Interval 9: ref RefPositions {#3@12 #4@13} physReg:NA Preferences=[allInt] RelatedInterval <V06/L3>
Interval 10: long RefPositions {#7@20 #8@21} physReg:NA Preferences=[allInt] RelatedInterval <V05/L2>
Interval 11: long RefPositions {#11@28 #12@29} physReg:NA Preferences=[allInt] RelatedInterval <V14/L7>
Interval 12: long RefPositions {#15@34 #16@35} physReg:NA Preferences=[allInt] RelatedInterval <V07/L4>
Interval 13: long RefPositions {#21@56 #22@57} physReg:NA Preferences=[allInt] RelatedInterval <V15/L8>
Interval 14: long RefPositions {#32@78 #39@83} physReg:NA Preferences=[rcx]
Interval 15: long (constant) RefPositions {#33@80 #35@81} physReg:NA Preferences=[rdx]
Interval 16: long RefPositions {#37@82 #41@83} physReg:NA Preferences=[rdx]
Interval 17: long RefPositions {#50@84 #51@85} physReg:NA Preferences=[rax] RelatedInterval <V08/L5>
Interval 18: byref RefPositions {#54@90 #56@91} physReg:NA Preferences=[rcx]
Interval 19: byref RefPositions {#58@92 #68@101} physReg:NA Preferences=[rcx]
Interval 20: long RefPositions {#62@96 #70@101} physReg:NA Preferences=[rdx]
Interval 21: ref RefPositions {#66@100 #72@101} physReg:NA Preferences=[r8]
Interval 22: int (constant) RefPositions {#80@106 #81@107} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 23: long RefPositions {#85@116 #86@117} physReg:NA Preferences=[allInt] RelatedInterval <V10/L6>
Interval 24: long RefPositions {#89@124} physReg:NA Preferences=[allInt]
Interval 25: byref RefPositions {#93@140 #97@149} physReg:NA Preferences=[allInt]
Interval 26: long RefPositions {#95@144 #98@149} physReg:NA Preferences=[allInt]
Interval 27: int (constant) RefPositions {#96@148 #99@149} physReg:NA Preferences=[allInt]
Interval 28: int RefPositions {#101@158 #102@159} physReg:NA Preferences=[allInt] RelatedInterval <V03/L1>
Interval 29: ref (constant) RefPositions {#107@166 #109@167} physReg:NA Preferences=[rax]
------------
REFPOSITIONS BEFORE ALLOCATION:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[] minReg=1>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #3 @12 RefTypeDef <Ivl:9> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #4 @13 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #7 @20 RefTypeDef <Ivl:10> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #8 @21 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #11 @28 RefTypeDef <Ivl:11> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #12 @29 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #15 @34 RefTypeDef <Ivl:12> IND BB01 regmask=[allInt] minReg=1>
<RefPosition #16 @35 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last>
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #19 @49 RefTypeBB BB02 regmask=[] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
<RefPosition #21 @56 RefTypeDef <Ivl:13> IND BB02 regmask=[allInt] minReg=1>
<RefPosition #22 @57 RefTypeUse <Ivl:13> BB02 regmask=[allInt] minReg=1 last>
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[allInt] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[allInt] minReg=1 regOptional>
<RefPosition #25 @67 RefTypeBB BB03 regmask=[] minReg=1>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[allInt] minReg=1 last>
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1>
<RefPosition #28 @73 RefTypeBB BB04 regmask=[] minReg=1>
<RefPosition #29 @77 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #31 @78 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #32 @78 RefTypeDef <Ivl:14> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed>
<RefPosition #33 @80 RefTypeDef <Ivl:15> CNS_INT BB04 regmask=[rdx] minReg=1>
<RefPosition #34 @81 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #35 @81 RefTypeUse <Ivl:15> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #36 @82 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #37 @82 RefTypeDef <Ivl:16> PUTARG_REG BB04 regmask=[rdx] minReg=1 fixed>
<RefPosition #38 @83 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #39 @83 RefTypeUse <Ivl:14> BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #40 @83 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #41 @83 RefTypeUse <Ivl:16> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #42 @84 RefTypeKill <Reg:rax> BB04 regmask=[rax] minReg=1 last>
<RefPosition #43 @84 RefTypeKill <Reg:rcx> BB04 regmask=[rcx] minReg=1 last>
<RefPosition #44 @84 RefTypeKill <Reg:rdx> BB04 regmask=[rdx] minReg=1 last>
<RefPosition #45 @84 RefTypeKill <Reg:r8 > BB04 regmask=[r8] minReg=1 last>
<RefPosition #46 @84 RefTypeKill <Reg:r9 > BB04 regmask=[r9] minReg=1 last>
<RefPosition #47 @84 RefTypeKill <Reg:r10> BB04 regmask=[r10] minReg=1 last>
<RefPosition #48 @84 RefTypeKill <Reg:r11> BB04 regmask=[r11] minReg=1 last>
<RefPosition #49 @84 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1>
<RefPosition #50 @84 RefTypeDef <Ivl:17> CALL BB04 regmask=[rax] minReg=1 fixed>
<RefPosition #51 @85 RefTypeUse <Ivl:17> BB04 regmask=[allInt] minReg=1 last>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1>
<RefPosition #53 @87 RefTypeBB BB05 regmask=[] minReg=1>
<RefPosition #54 @90 RefTypeDef <Ivl:18> LCL_VAR_ADDR BB05 regmask=[rcx] minReg=1>
<RefPosition #55 @91 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #56 @91 RefTypeUse <Ivl:18> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #57 @92 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #58 @92 RefTypeDef <Ivl:19> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed>
<RefPosition #59 @95 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #61 @96 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #62 @96 RefTypeDef <Ivl:20> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed>
<RefPosition #63 @99 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #65 @100 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #66 @100 RefTypeDef <Ivl:21> PUTARG_REG BB05 regmask=[r8] minReg=1 fixed>
<RefPosition #67 @101 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #68 @101 RefTypeUse <Ivl:19> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #69 @101 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #70 @101 RefTypeUse <Ivl:20> BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #71 @101 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #72 @101 RefTypeUse <Ivl:21> BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #73 @102 RefTypeKill <Reg:rax> BB05 regmask=[rax] minReg=1 last>
<RefPosition #74 @102 RefTypeKill <Reg:rcx> BB05 regmask=[rcx] minReg=1 last>
<RefPosition #75 @102 RefTypeKill <Reg:rdx> BB05 regmask=[rdx] minReg=1 last>
<RefPosition #76 @102 RefTypeKill <Reg:r8 > BB05 regmask=[r8] minReg=1 last>
<RefPosition #77 @102 RefTypeKill <Reg:r9 > BB05 regmask=[r9] minReg=1 last>
<RefPosition #78 @102 RefTypeKill <Reg:r10> BB05 regmask=[r10] minReg=1 last>
<RefPosition #79 @102 RefTypeKill <Reg:r11> BB05 regmask=[r11] minReg=1 last>
<RefPosition #80 @106 RefTypeDef <Ivl:22> CNS_INT BB05 regmask=[allInt] minReg=1>
<RefPosition #81 @107 RefTypeUse <Ivl:22> BB05 regmask=[allInt] minReg=1 last>
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1>
<RefPosition #83 @109 RefTypeBB BB07 regmask=[] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #85 @116 RefTypeDef <Ivl:23> IND BB07 regmask=[allInt] minReg=1>
<RefPosition #86 @117 RefTypeUse <Ivl:23> BB07 regmask=[allInt] minReg=1 last>
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
<RefPosition #89 @124 RefTypeDef <Ivl:24> IND BB07 regmask=[allInt] minReg=1 last local>
<RefPosition #90 @125 RefTypeBB BB08 regmask=[] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[allInt] minReg=1>
<RefPosition #92 @135 RefTypeBB BB06 regmask=[] minReg=1>
<RefPosition #93 @140 RefTypeDef <Ivl:25> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #95 @144 RefTypeDef <Ivl:26> CAST BB06 regmask=[allInt] minReg=1>
<RefPosition #96 @148 RefTypeDef <Ivl:27> CNS_INT BB06 regmask=[allInt] minReg=1>
<RefPosition #97 @149 RefTypeUse <Ivl:25> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #98 @149 RefTypeUse <Ivl:26> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #99 @149 RefTypeUse <Ivl:27> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
<RefPosition #101 @158 RefTypeDef <Ivl:28> ADD BB06 regmask=[allInt] minReg=1>
<RefPosition #102 @159 RefTypeUse <Ivl:28> BB06 regmask=[allInt] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #106 @161 RefTypeBB BB12 regmask=[] minReg=1>
<RefPosition #107 @166 RefTypeDef <Ivl:29> CNS_INT BB12 regmask=[rax] minReg=1>
<RefPosition #108 @167 RefTypeFixedReg <Reg:rax> BB12 regmask=[rax] minReg=1>
<RefPosition #109 @167 RefTypeUse <Ivl:29> BB12 regmask=[rax] minReg=1 last fixed>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
VAR REFPOSITIONS BEFORE ALLOCATION
--- V00 (Interval 0)
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
--- V01
--- V02
--- V03 (Interval 1)
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[allInt] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[allInt] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[allInt] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
--- V04
--- V05 (Interval 2)
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
--- V06 (Interval 3)
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last fixed>
--- V07 (Interval 4)
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[allInt] minReg=1 last>
--- V08 (Interval 5)
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
--- V09
--- V10 (Interval 6)
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[allInt] minReg=1 last>
--- V11
--- V12
--- V13
--- V14 (Interval 7)
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[allInt] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[allInt] minReg=1>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
--- V15 (Interval 8)
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[allInt] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[allInt] minReg=1 regOptional>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[allInt] minReg=1 last>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear.
Registers which are not marked modified have ---- in their column.
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
| |V0 a| | | | | | | |
0.#0 V0 Parm Alloc rsi | | | | | |V0 a| | | |
1.#1 BB1 PredBB0 | | | | | |V0 a| | | |
11.#2 V0 Use Keep rsi | | | | | |V0 a| | | |
12.#3 I9 Def Alloc rdi | | | | | |V0 a|I9 a| | |
13.#4 I9 Use * Keep rdi | | | | | |V0 a|I9 a| | |
14.#5 V6 Def Alloc rdi | | | | | |V0 a|V6 a| | |
19.#6 V0 Use Keep rsi | | | | | |V0 a|V6 a| | |
20.#7 I10 Def Alloc rcx | |I10a| | | |V0 a|V6 a| | |
21.#8 I10 Use * Keep rcx | |I10a| | | |V0 a|V6 a| | |
22.#9 V5 Def Alloc rcx | |V5 a| | | |V0 a|V6 a| | |
27.#10 V5 Use Keep rcx | |V5 a| | | |V0 a|V6 a| | |
28.#11 I11 Def Alloc rbx | |V5 a| |I11a| |V0 a|V6 a| | |
29.#12 I11 Use * Keep rbx | |V5 a| |I11a| |V0 a|V6 a| | |
30.#13 V14 Def Alloc rbx | |V5 a| |V14a| |V0 a|V6 a| | |
33.#14 V14 Use Keep rbx | |V5 a| |V14a| |V0 a|V6 a| | |
34.#15 I12 Def Alloc rdx | |V5 a|I12a|V14a| |V0 a|V6 a| | |
35.#16 I12 Use * Keep rdx | |V5 a|I12a|V14a| |V0 a|V6 a| | |
36.#17 V7 Def Alloc rdx | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
45.#18 V7 Use Keep rdx | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
49.#19 BB2 PredBB1 | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
55.#20 V7 Use * Keep rdx | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
56.#21 I13 Def Alloc rdx | |V5 a|I13a|V14a| |V0 a|V6 a| | |
57.#22 I13 Use * Keep rdx | |V5 a|I13a|V14a| |V0 a|V6 a| | |
58.#23 V15 Def Alloc rdx | |V5 a|V15a|V14a| |V0 a|V6 a| | |
63.#24 V15 Use Keep rdx | |V5 a|V15a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
67.#25 BB3 PredBB2 | |V5 i|V15a|V14a| |V0 a|V6 a| | |
71.#26 V15 Use * Keep rdx | |V5 i|V15a|V14a| |V0 a|V6 a| | |
72.#27 V8 Def Alloc rdx | |V5 i|V8 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
73.#28 BB4 PredBB1 | |V5 a|V8 i|V14a| |V0 a|V6 a| | |
77.#29 rcx Fixd Keep rcx | |V5 a|V8 i|V14a| |V0 a|V6 a| | |
77.#30 V5 Use * Keep rcx | |V5 a|V8 i|V14a| |V0 a|V6 a| | |
78.#31 rcx Fixd Keep rcx | | |V8 i|V14a| |V0 a|V6 a| | |
78.#32 I14 Def Alloc rcx | |I14a|V8 i|V14a| |V0 a|V6 a| | |
80.#33 C15 Def Alloc rdx | |I14a|C15a|V14a| |V0 a|V6 a| | |
81.#34 rdx Fixd Keep rdx | |I14a|C15a|V14a| |V0 a|V6 a| | |
81.#35 C15 Use * Keep rdx | |I14a|C15a|V14a| |V0 a|V6 a| | |
82.#36 rdx Fixd Keep rdx | |I14a| |V14a| |V0 a|V6 a| | |
82.#37 I16 Def Alloc rdx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#38 rcx Fixd Keep rcx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#39 I14 Use * Keep rcx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#40 rdx Fixd Keep rdx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#41 I16 Use * Keep rdx | |I14a|I16a|V14a| |V0 a|V6 a| | |
Restr rdx | | |V8 i|V14a| |V0 a|V6 a| | |
84.#42 rax Kill Keep rax | | |V8 i|V14a| |V0 a|V6 a| | |
84.#43 rcx Kill Keep rcx | | |V8 i|V14a| |V0 a|V6 a| | |
84.#44 rdx Kill Keep rdx | | | |V14a| |V0 a|V6 a| | |
84.#45 r8 Kill Keep r8 | | | |V14a| |V0 a|V6 a| | |
84.#46 r9 Kill Keep r9 | | | |V14a| |V0 a|V6 a| | |
84.#47 r10 Kill Keep r10 | | | |V14a| |V0 a|V6 a| | |
84.#48 r11 Kill Keep r11 | | | |V14a| |V0 a|V6 a| | |
84.#49 rax Fixd Keep rax | | | |V14a| |V0 a|V6 a| | |
84.#50 I17 Def Alloc rax |I17a| | |V14a| |V0 a|V6 a| | |
85.#51 I17 Use * Keep rax |I17a| | |V14a| |V0 a|V6 a| | |
86.#52 V8 Def Alloc rdx | | |V8 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
87.#53 BB5 PredBB3 | | |V8 a|V14a| |V0 a|V6 a| | |
90.#54 I18 Def Alloc rcx | |I18a|V8 a|V14a| |V0 a|V6 a| | |
91.#55 rcx Fixd Keep rcx | |I18a|V8 a|V14a| |V0 a|V6 a| | |
91.#56 I18 Use * Keep rcx | |I18a|V8 a|V14a| |V0 a|V6 a| | |
92.#57 rcx Fixd Keep rcx | | |V8 a|V14a| |V0 a|V6 a| | |
92.#58 I19 Def Alloc rcx | |I19a|V8 a|V14a| |V0 a|V6 a| | |
95.#59 rdx Fixd Keep rdx | |I19a|V8 a|V14a| |V0 a|V6 a| | |
95.#60 V8 Use * Keep rdx | |I19a|V8 a|V14a| |V0 a|V6 a| | |
96.#61 rdx Fixd Keep rdx | |I19a| |V14a| |V0 a|V6 a| | |
96.#62 I20 Def Alloc rdx | |I19a|I20a|V14a| |V0 a|V6 a| | |
99.#63 r8 Fixd Keep r8 | |I19a|I20a|V14a| |V0 a|V6 a| | |
99.#64 V6 Use * Copy r8 | |I19a|I20a|V14a| |V0 a|V6 a|V6 a| |
100.#65 r8 Fixd Keep r8 | |I19a|I20a|V14a| |V0 a| | | |
100.#66 I21 Def Alloc r8 | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#67 rcx Fixd Keep rcx | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#68 I19 Use * Keep rcx | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#69 rdx Fixd Keep rdx | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#70 I20 Use * Keep rdx | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#71 r8 Fixd Keep r8 | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#72 I21 Use * Keep r8 | |I19a|I20a|V14a| |V0 a| |I21a| |
102.#73 rax Kill Keep rax | | | |V14a| |V0 a| | | |
102.#74 rcx Kill Keep rcx | | | |V14a| |V0 a| | | |
102.#75 rdx Kill Keep rdx | | | |V14a| |V0 a| | | |
102.#76 r8 Kill Keep r8 | | | |V14a| |V0 a| | | |
102.#77 r9 Kill Keep r9 | | | |V14a| |V0 a| | | |
102.#78 r10 Kill Keep r10 | | | |V14a| |V0 a| | | |
102.#79 r11 Kill Keep r11 | | | |V14a| |V0 a| | | |
106.#80 C22 Def Alloc rax |C22a| | |V14a| |V0 a| | | |
107.#81 C22 Use * Keep rax |C22a| | |V14a| |V0 a| | | |
108.#82 V3 Def Alloc rax |V3 a| | |V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
109.#83 BB7 PredBB5 |V3 a| | |V14a| |V0 a| | | |
115.#84 V14 Use Keep rbx |V3 a| | |V14a| |V0 a| | | |
116.#85 I23 Def Alloc rdx |V3 a| |I23a|V14a| |V0 a| | | |
117.#86 I23 Use * Keep rdx |V3 a| |I23a|V14a| |V0 a| | | |
118.#87 V10 Def Alloc rdx |V3 a| |V10a|V14a| |V0 a| | | |
123.#88 V10 Use * Keep rdx |V3 a| |V10a|V14a| |V0 a| | | |
124.#89 I24 Def * Alloc rdx |V3 a| |I24a|V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
125.#90 BB8 PredBB7 |V3 a| | |V14a| |V0 a| | | |
131.#91 V3 Use Keep rax |V3 a| | |V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
135.#92 BB6 PredBB8 |V3 a| | |V14a| |V0 a| | | |
140.#93 I25 Def Alloc rdx |V3 a| |I25a|V14a| |V0 a| | | |
143.#94 V3 Use Keep rax |V3 a| |I25a|V14a| |V0 a| | | |
144.#95 I26 Def Alloc rcx |V3 a|I26a|I25a|V14a| |V0 a| | | |
148.#96 C27 Def Alloc r8 |V3 a|I26a|I25a|V14a| |V0 a| |C27a| |
149.#97 I25 Use * Keep rdx |V3 a|I26a|I25a|V14a| |V0 a| |C27a| |
149.#98 I26 Use * Keep rcx |V3 a|I26a|I25a|V14a| |V0 a| |C27a| |
149.#99 C27 Use * Keep r8 |V3 a|I26a|I25a|V14a| |V0 a| |C27a| |
157.#100 V3 Use * Keep rax |V3 i| | |V14a| |V0 a| |C27i| |
158.#101 I28 Def Alloc rax |I28a| | |V14a| |V0 a| |C27i| |
159.#102 I28 Use * Keep rax |I28a| | |V14a| |V0 a| |C27i| |
Restr rax |V3 i| | |V14a| |V0 a| |C27i| |
160.#103 V3 Def Alloc rax |V3 a| | |V14a| |V0 a| |C27i| |
161.#104 V3 ExpU Keep NA |V3 a| | |V14a| |V0 a| |C27i| |
161.#105 V14 ExpU Keep NA |V3 a| | |V14a| |V0 a| |C27i| |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
161.#106 BB12 PredBB8 | | | | | |V0 a| | | |
166.#107 C29 Def Alloc rax |C29a| | | | |V0 a| | | |
167.#108 rax Fixd Keep rax |C29a| | | | |V0 a| | | |
167.#109 C29 Use * Keep rax |C29a| | | | |V0 a| | | |
169.#110 V0 ExpU Keep NA |C29i| | | | |V0 a| | | |
169.#111 V0 ExpU Keep NA |C29i| | | | |V0 a| | | |
------------
REFPOSITIONS AFTER ALLOCATION:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rsi] minReg=1 fixed regOptional>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[] minReg=1>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rsi] minReg=1>
<RefPosition #3 @12 RefTypeDef <Ivl:9> IND BB01 regmask=[rdi] minReg=1>
<RefPosition #4 @13 RefTypeUse <Ivl:9> BB01 regmask=[rdi] minReg=1 last>
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[rdi] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rsi] minReg=1>
<RefPosition #7 @20 RefTypeDef <Ivl:10> IND BB01 regmask=[rcx] minReg=1>
<RefPosition #8 @21 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last>
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[rcx] minReg=1>
<RefPosition #11 @28 RefTypeDef <Ivl:11> IND BB01 regmask=[rbx] minReg=1>
<RefPosition #12 @29 RefTypeUse <Ivl:11> BB01 regmask=[rbx] minReg=1 last>
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[rbx] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[rbx] minReg=1>
<RefPosition #15 @34 RefTypeDef <Ivl:12> IND BB01 regmask=[rdx] minReg=1>
<RefPosition #16 @35 RefTypeUse <Ivl:12> BB01 regmask=[rdx] minReg=1 last>
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[rdx] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[rdx] minReg=1>
<RefPosition #19 @49 RefTypeBB BB02 regmask=[] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[rdx] minReg=1 last>
<RefPosition #21 @56 RefTypeDef <Ivl:13> IND BB02 regmask=[rdx] minReg=1>
<RefPosition #22 @57 RefTypeUse <Ivl:13> BB02 regmask=[rdx] minReg=1 last>
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[rdx] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[rdx] minReg=1 regOptional>
<RefPosition #25 @67 RefTypeBB BB03 regmask=[] minReg=1>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[rdx] minReg=1 last>
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[rdx] minReg=1>
<RefPosition #28 @73 RefTypeBB BB04 regmask=[] minReg=1>
<RefPosition #29 @77 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #31 @78 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #32 @78 RefTypeDef <Ivl:14> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed>
<RefPosition #33 @80 RefTypeDef <Ivl:15> CNS_INT BB04 regmask=[rdx] minReg=1>
<RefPosition #34 @81 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #35 @81 RefTypeUse <Ivl:15> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #36 @82 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #37 @82 RefTypeDef <Ivl:16> PUTARG_REG BB04 regmask=[rdx] minReg=1 fixed>
<RefPosition #38 @83 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1>
<RefPosition #39 @83 RefTypeUse <Ivl:14> BB04 regmask=[rcx] minReg=1 last fixed>
<RefPosition #40 @83 RefTypeFixedReg <Reg:rdx> BB04 regmask=[rdx] minReg=1>
<RefPosition #41 @83 RefTypeUse <Ivl:16> BB04 regmask=[rdx] minReg=1 last fixed>
<RefPosition #42 @84 RefTypeKill <Reg:rax> BB04 regmask=[rax] minReg=1 last>
<RefPosition #43 @84 RefTypeKill <Reg:rcx> BB04 regmask=[rcx] minReg=1 last>
<RefPosition #44 @84 RefTypeKill <Reg:rdx> BB04 regmask=[rdx] minReg=1 last>
<RefPosition #45 @84 RefTypeKill <Reg:r8 > BB04 regmask=[r8] minReg=1 last>
<RefPosition #46 @84 RefTypeKill <Reg:r9 > BB04 regmask=[r9] minReg=1 last>
<RefPosition #47 @84 RefTypeKill <Reg:r10> BB04 regmask=[r10] minReg=1 last>
<RefPosition #48 @84 RefTypeKill <Reg:r11> BB04 regmask=[r11] minReg=1 last>
<RefPosition #49 @84 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1>
<RefPosition #50 @84 RefTypeDef <Ivl:17> CALL BB04 regmask=[rax] minReg=1 fixed>
<RefPosition #51 @85 RefTypeUse <Ivl:17> BB04 regmask=[rax] minReg=1 last>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[rdx] minReg=1>
<RefPosition #53 @87 RefTypeBB BB05 regmask=[] minReg=1>
<RefPosition #54 @90 RefTypeDef <Ivl:18> LCL_VAR_ADDR BB05 regmask=[rcx] minReg=1>
<RefPosition #55 @91 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #56 @91 RefTypeUse <Ivl:18> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #57 @92 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #58 @92 RefTypeDef <Ivl:19> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed>
<RefPosition #59 @95 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #61 @96 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #62 @96 RefTypeDef <Ivl:20> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed>
<RefPosition #63 @99 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last copy fixed>
<RefPosition #65 @100 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #66 @100 RefTypeDef <Ivl:21> PUTARG_REG BB05 regmask=[r8] minReg=1 fixed>
<RefPosition #67 @101 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1>
<RefPosition #68 @101 RefTypeUse <Ivl:19> BB05 regmask=[rcx] minReg=1 last fixed>
<RefPosition #69 @101 RefTypeFixedReg <Reg:rdx> BB05 regmask=[rdx] minReg=1>
<RefPosition #70 @101 RefTypeUse <Ivl:20> BB05 regmask=[rdx] minReg=1 last fixed>
<RefPosition #71 @101 RefTypeFixedReg <Reg:r8 > BB05 regmask=[r8] minReg=1>
<RefPosition #72 @101 RefTypeUse <Ivl:21> BB05 regmask=[r8] minReg=1 last fixed>
<RefPosition #73 @102 RefTypeKill <Reg:rax> BB05 regmask=[rax] minReg=1 last>
<RefPosition #74 @102 RefTypeKill <Reg:rcx> BB05 regmask=[rcx] minReg=1 last>
<RefPosition #75 @102 RefTypeKill <Reg:rdx> BB05 regmask=[rdx] minReg=1 last>
<RefPosition #76 @102 RefTypeKill <Reg:r8 > BB05 regmask=[r8] minReg=1 last>
<RefPosition #77 @102 RefTypeKill <Reg:r9 > BB05 regmask=[r9] minReg=1 last>
<RefPosition #78 @102 RefTypeKill <Reg:r10> BB05 regmask=[r10] minReg=1 last>
<RefPosition #79 @102 RefTypeKill <Reg:r11> BB05 regmask=[r11] minReg=1 last>
<RefPosition #80 @106 RefTypeDef <Ivl:22> CNS_INT BB05 regmask=[rax] minReg=1>
<RefPosition #81 @107 RefTypeUse <Ivl:22> BB05 regmask=[rax] minReg=1 last>
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[rax] minReg=1>
<RefPosition #83 @109 RefTypeBB BB07 regmask=[] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[rbx] minReg=1>
<RefPosition #85 @116 RefTypeDef <Ivl:23> IND BB07 regmask=[rdx] minReg=1>
<RefPosition #86 @117 RefTypeUse <Ivl:23> BB07 regmask=[rdx] minReg=1 last>
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[rdx] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[rdx] minReg=1 last>
<RefPosition #89 @124 RefTypeDef <Ivl:24> IND BB07 regmask=[rdx] minReg=1 last local>
<RefPosition #90 @125 RefTypeBB BB08 regmask=[] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[rax] minReg=1>
<RefPosition #92 @135 RefTypeBB BB06 regmask=[] minReg=1>
<RefPosition #93 @140 RefTypeDef <Ivl:25> LCL_VAR BB06 regmask=[rdx] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[rax] minReg=1>
<RefPosition #95 @144 RefTypeDef <Ivl:26> CAST BB06 regmask=[rcx] minReg=1>
<RefPosition #96 @148 RefTypeDef <Ivl:27> CNS_INT BB06 regmask=[r8] minReg=1>
<RefPosition #97 @149 RefTypeUse <Ivl:25> BB06 regmask=[rdx] minReg=1 last>
<RefPosition #98 @149 RefTypeUse <Ivl:26> BB06 regmask=[rcx] minReg=1 last>
<RefPosition #99 @149 RefTypeUse <Ivl:27> BB06 regmask=[r8] minReg=1 last>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[rax] minReg=1 last>
<RefPosition #101 @158 RefTypeDef <Ivl:28> ADD BB06 regmask=[rax] minReg=1>
<RefPosition #102 @159 RefTypeUse <Ivl:28> BB06 regmask=[rax] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[rax] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
<RefPosition #106 @161 RefTypeBB BB12 regmask=[] minReg=1>
<RefPosition #107 @166 RefTypeDef <Ivl:29> CNS_INT BB12 regmask=[rax] minReg=1>
<RefPosition #108 @167 RefTypeFixedReg <Reg:rax> BB12 regmask=[rax] minReg=1>
<RefPosition #109 @167 RefTypeUse <Ivl:29> BB12 regmask=[rax] minReg=1 last fixed>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
VAR REFPOSITIONS AFTER ALLOCATION
--- V00 (Interval 0)
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rsi] minReg=1 fixed regOptional>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rsi] minReg=1>
<RefPosition #6 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rsi] minReg=1>
<RefPosition #110 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
<RefPosition #111 @169 RefTypeExpUse <Ivl:0 V00> BB12 regmask=[allInt] minReg=1 regOptional>
--- V01
--- V02
--- V03 (Interval 1)
<RefPosition #82 @108 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB05 regmask=[rax] minReg=1>
<RefPosition #91 @131 RefTypeUse <Ivl:1 V03> LCL_VAR BB08 regmask=[rax] minReg=1>
<RefPosition #94 @143 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[rax] minReg=1>
<RefPosition #100 @157 RefTypeUse <Ivl:1 V03> LCL_VAR BB06 regmask=[rax] minReg=1 last>
<RefPosition #103 @160 RefTypeDef <Ivl:1 V03> STORE_LCL_VAR BB06 regmask=[rax] minReg=1>
<RefPosition #104 @161 RefTypeExpUse <Ivl:1 V03> BB06 regmask=[allInt] minReg=1 regOptional>
--- V04
--- V05 (Interval 2)
<RefPosition #9 @22 RefTypeDef <Ivl:2 V05> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1>
<RefPosition #10 @27 RefTypeUse <Ivl:2 V05> LCL_VAR BB01 regmask=[rcx] minReg=1>
<RefPosition #30 @77 RefTypeUse <Ivl:2 V05> LCL_VAR BB04 regmask=[rcx] minReg=1 last fixed>
--- V06 (Interval 3)
<RefPosition #5 @14 RefTypeDef <Ivl:3 V06> STORE_LCL_VAR BB01 regmask=[rdi] minReg=1>
<RefPosition #64 @99 RefTypeUse <Ivl:3 V06> LCL_VAR BB05 regmask=[r8] minReg=1 last copy fixed>
--- V07 (Interval 4)
<RefPosition #17 @36 RefTypeDef <Ivl:4 V07> STORE_LCL_VAR BB01 regmask=[rdx] minReg=1>
<RefPosition #18 @45 RefTypeUse <Ivl:4 V07> LCL_VAR BB01 regmask=[rdx] minReg=1>
<RefPosition #20 @55 RefTypeUse <Ivl:4 V07> LCL_VAR BB02 regmask=[rdx] minReg=1 last>
--- V08 (Interval 5)
<RefPosition #27 @72 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB03 regmask=[rdx] minReg=1>
<RefPosition #52 @86 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB04 regmask=[rdx] minReg=1>
<RefPosition #60 @95 RefTypeUse <Ivl:5 V08> LCL_VAR BB05 regmask=[rdx] minReg=1 last fixed>
--- V09
--- V10 (Interval 6)
<RefPosition #87 @118 RefTypeDef <Ivl:6 V10> STORE_LCL_VAR BB07 regmask=[rdx] minReg=1>
<RefPosition #88 @123 RefTypeUse <Ivl:6 V10> LCL_VAR BB07 regmask=[rdx] minReg=1 last>
--- V11
--- V12
--- V13
--- V14 (Interval 7)
<RefPosition #13 @30 RefTypeDef <Ivl:7 V14> STORE_LCL_VAR BB01 regmask=[rbx] minReg=1>
<RefPosition #14 @33 RefTypeUse <Ivl:7 V14> LCL_VAR BB01 regmask=[rbx] minReg=1>
<RefPosition #84 @115 RefTypeUse <Ivl:7 V14> LCL_VAR BB07 regmask=[rbx] minReg=1>
<RefPosition #105 @161 RefTypeExpUse <Ivl:7 V14> BB06 regmask=[allInt] minReg=1 regOptional>
--- V15 (Interval 8)
<RefPosition #23 @58 RefTypeDef <Ivl:8 V15> STORE_LCL_VAR BB02 regmask=[rdx] minReg=1>
<RefPosition #24 @63 RefTypeUse <Ivl:8 V15> LCL_VAR BB02 regmask=[rdx] minReg=1 regOptional>
<RefPosition #26 @71 RefTypeUse <Ivl:8 V15> LCL_VAR BB03 regmask=[rdx] minReg=1 last>
Active intervals at end of allocation:
Active Interval 0: (V00) ref RefPositions {#0@0 #2@11 #6@19 #110@169 #111@169} physReg:rsi Preferences=[rsi]
-----------------------
RESOLVING BB BOUNDARIES
-----------------------
Resolution Candidates: {V00 V03 V05 V06 V07 V08 V14 V15}
Has Critical Edges
Prior to Resolution
BB01
use def in out
{V00}
{V05 V06 V07 V14}
{V00}
{V00 V05 V06 V07 V14}
Var=Reg beg of BB01: V00=rsi
Var=Reg end of BB01: V00=rsi V14=rbx V07=rdx V05=rcx V06=rdi
BB02
use def in out
{V07}
{V15}
{V00 V05 V06 V07 V14}
{V00 V05 V06 V14 V15}
Var=Reg beg of BB02: V00=rsi V14=rbx V07=rdx V05=rcx V06=rdi
Var=Reg end of BB02: V00=rsi V14=rbx V05=rcx V06=rdi V15=rdx
BB03
use def in out
{V15}
{V08}
{V00 V06 V14 V15}
{V00 V06 V08 V14}
Var=Reg beg of BB03: V00=rsi V14=rbx V06=rdi V15=rdx
Var=Reg end of BB03: V00=rsi V14=rbx V06=rdi V08=rdx
BB04
use def in out
{V05}
{V08}
{V00 V05 V06 V14}
{V00 V06 V08 V14}
Var=Reg beg of BB04: V00=rsi V14=rbx V05=rcx V06=rdi
Var=Reg end of BB04: V00=rsi V14=rbx V06=rdi V08=rdx
BB05
use def in out
{V06 V08}
{V03}
{V00 V06 V08 V14}
{V00 V03 V14}
Var=Reg beg of BB05: V00=rsi V14=rbx V06=rdi V08=rdx
Var=Reg end of BB05: V03=rax V00=rsi V14=rbx
BB06
use def in out
{V03}
{V03}
{V00 V03 V14}
{V00 V03 V14}
Var=Reg beg of BB06: V03=rax V00=rsi V14=rbx
Var=Reg end of BB06: V03=rax V00=rsi V14=rbx
BB07
use def in out
{V14}
{V10}
{V00 V03 V14}
{V00 V03 V14}
Var=Reg beg of BB07: V03=rax V00=rsi V14=rbx
Var=Reg end of BB07: V03=rax V00=rsi V14=rbx
BB08
use def in out
{V03}
{}
{V00 V03 V14}
{V00 V03 V14}
Var=Reg beg of BB08: V03=rax V00=rsi V14=rbx
Var=Reg end of BB08: V03=rax V00=rsi V14=rbx
BB12
use def in out
{}
{}
{V00}
{V00}
Var=Reg beg of BB12: V00=rsi
Var=Reg end of BB12: V00=rsi
RESOLVING EDGES
Set V00 argument initial register to rsi
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB08 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???) i label target bwd LIR
BB08 [0011] 1 BB07 8 0 [???..035)-> BB06 ( cond ) i target bwd LIR
BB12 [0003] 1 BB08 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
N003 (???,???) [000165] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N005 (???,???) [000166] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N007 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 rsi REG rsi $80
/--* t7 ref
N009 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref REG NA
/--* t135 byref
N011 ( 4, 4) [000008] ---XG------- t8 = * IND ref REG rdi <l:$1c4, c:$1c3>
/--* t8 ref
N013 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2 rdi REG rdi
N015 (???,???) [000167] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N017 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 rsi REG rsi $80
/--* t10 ref
N019 ( 3, 2) [000011] #----O------ t11 = * IND long REG rcx $1c5
/--* t11 long
N021 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2 rcx REG rcx
N023 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 rcx REG rcx $1c5
/--* t18 long
N025 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long REG NA
/--* t20 long
N027 ( 4, 4) [000021] #----------- t21 = * IND long REG rbx $1c6
/--* t21 long
N029 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1 rbx REG rbx
N031 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 rbx REG rbx $1c6
/--* t155 long
N033 ( 8, 7) [000022] n----------- t22 = * IND long REG rdx <l:$280, c:$201>
/--* t22 long
N035 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2 rdx REG rdx
N037 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 rdx REG rdx <l:$280, c:$201>
/--* t26 long
N039 ( 2, 2) [000039] -c---------- t39 = * LEA(b+8) long REG NA
/--* t39 long
N041 ( 4, 4) [000040] -c-X-------- t40 = * IND long REG NA <l:$244, c:$243>
N043 ( 1, 1) [000041] -c---------- t41 = CNS_INT long 96 REG NA $c4
/--* t40 long
+--* t41 long
N045 ( 6, 6) [000042] J--X---N---- * LE void REG NA <l:$2c3, c:$2c2>
N047 ( 8, 8) [000115] ---X-------- * JTRUE void REG NA
------------ BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
N051 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 rdx (last use) REG rdx <l:$280, c:$201>
/--* t25 long
N053 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long REG NA
/--* t28 long
N055 ( 4, 4) [000029] n----------- t29 = * IND long REG rdx <l:$282, c:$204>
/--* t29 long
N057 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1 rdx REG rdx
N059 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 rdx REG rdx <l:$282, c:$204>
N061 ( 1, 1) [000032] -c---------- t32 = CNS_INT long 0 REG NA $c0
/--* t160 long
+--* t32 long
N063 ( 13, 11) [000033] J------N---- * EQ void REG NA <l:$2c5, c:$2c4>
N065 ( 15, 13) [000116] ------------ * JTRUE void REG NA
------------ BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
N069 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 rdx (last use) REG rdx <l:$282, c:$204>
/--* t162 long
N071 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4 rdx REG rdx
------------ BB04 [???..???), preds={BB01,BB02} succs={BB05}
N075 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 rcx (last use) REG rcx $1c5
/--* t17 long
N077 (???,???) [000173] ------------ t173 = * PUTARG_REG long REG rcx
N079 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token REG rdx $181
/--* t30 long
N081 (???,???) [000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
N083 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS REG rax $247
/--* t31 long
N085 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3 rdx REG rdx
------------ BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
N001 ( 0, 0) [000152] ------------ t152 = PHI_ARG long V08 tmp4 u:4 rdx <l:$282, c:$208>
N002 ( 0, 0) [000151] ------------ t151 = PHI_ARG long V08 tmp4 u:3 rdx $247
/--* t152 long
+--* t151 long
N003 ( 0, 0) [000147] ------------ t147 = * PHI long
/--* t147 long
N005 ( 0, 0) [000148] DA---------- * STORE_LCL_VAR long V08 tmp4 d:2 rdx
N089 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1 rcx
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9 REG rcx
/--* t5 byref
N091 (???,???) [000175] ------------ t175 = * PUTARG_REG byref REG rcx
N093 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 rdx (last use) REG rdx $283
/--* t45 long
N095 (???,???) [000176] ------------ t176 = * PUTARG_REG long REG rdx
N097 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 rdi (last use) REG rdi <l:$1c1, c:$101>
/--* t16 ref
N099 (???,???) [000177] ------------ t177 = * PUTARG_REG ref REG r8
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
N101 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor REG NA $VN.Void
N103 (???,???) [000168] ------------ IL_OFFSET void IL offset: 0x15 REG NA
N105 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 REG rax $40
/--* t47 int
N107 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2 rax REG rax
------------ BB06 [019..02B), preds={BB08} succs={BB07}
N137 (???,???) [000169] ------------ IL_OFFSET void IL offset: 0x19 REG NA
N139 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 rdx REG rdx $480
N141 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 rax REG rax $3c0
/--* t94 int
N143 ( 2, 3) [000099] ------------ t99 = * CAST long <- int REG rcx $24f
/--* t102 byref
+--* t99 long
N145 ( 8, 8) [000103] -c---------- t103 = * LEA(b+(i*8)+0) byref REG NA
N147 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 REG r8 $40
/--* t103 byref
+--* t105 int
N149 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) REG NA $1d1
N151 (???,???) [000170] ------------ IL_OFFSET void IL offset: 0x27 REG NA
N153 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 rax (last use) REG rax $3c0
N155 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 REG NA $4b
/--* t108 int
+--* t109 int
N157 ( 3, 3) [000110] ------------ t110 = * ADD int REG rax $2ce
/--* t110 int
N159 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4 rax REG rax
------------ BB07 [02B..???), preds={BB05,BB06} succs={BB08}
N001 ( 0, 0) [000150] ------------ t150 = PHI_ARG int V03 loc2 u:4 rax
N002 ( 0, 0) [000149] ------------ t149 = PHI_ARG int V03 loc2 u:2 rax $40
/--* t150 int
+--* t149 int
N003 ( 0, 0) [000144] ------------ t144 = * PHI int
/--* t144 int
N005 ( 0, 0) [000145] DA---------- * STORE_LCL_VAR int V03 loc2 d:3 rax
N111 (???,???) [000171] ------------ IL_OFFSET void IL offset: 0x2b REG NA
N113 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 rbx REG rbx $1c6
/--* t157 long
N115 ( 3, 2) [000063] n----------- t63 = * IND long REG rdx <l:$284, c:$441>
/--* t63 long
N117 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2 rdx REG rdx
N119 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 rdx (last use) REG rdx <l:$284, c:$441>
/--* t67 long
N121 ( 2, 2) [000080] -c---------- t80 = * LEA(b+8) long REG NA
/--* t80 long
N123 ( 4, 4) [000081] ---X-------- t81 = * IND long REG rdx <l:$24c, c:$24b>
------------ BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
N127 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 rax REG rax $3c0
N129 ( 3, 2) [000132] -c---------- t132 = LCL_VAR int (AX) V13 tmp9 NA REG NA $3c1
/--* t50 int
+--* t132 int
N131 ( 5, 4) [000089] J---G--N---- * LT void REG NA $2cd
N133 ( 7, 6) [000090] ----G------- * JTRUE void REG NA
------------ BB12 [035..037) (return), preds={BB08} succs={}
N163 (???,???) [000172] ------------ IL_OFFSET void IL offset: 0x35 REG NA
N165 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null REG rax $VN.Null
/--* t163 ref
N167 ( 2, 2) [000114] ------------ * RETURN ref REG NA $105
-------------------------------------------------------------------------------------------------------------------
Final allocation
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
0.#0 V0 Parm Alloc rsi | | | | | |V0 a| | | |
1.#1 BB1 PredBB0 | | | | | |V0 a| | | |
11.#2 V0 Use Keep rsi | | | | | |V0 a| | | |
12.#3 I9 Def Alloc rdi | | | | | |V0 a|I9 a| | |
13.#4 I9 Use * Keep rdi | | | | | |V0 a|I9 i| | |
14.#5 V6 Def Alloc rdi | | | | | |V0 a|V6 a| | |
19.#6 V0 Use Keep rsi | | | | | |V0 a|V6 a| | |
20.#7 I10 Def Alloc rcx | |I10a| | | |V0 a|V6 a| | |
21.#8 I10 Use * Keep rcx | |I10i| | | |V0 a|V6 a| | |
22.#9 V5 Def Alloc rcx | |V5 a| | | |V0 a|V6 a| | |
27.#10 V5 Use Keep rcx | |V5 a| | | |V0 a|V6 a| | |
28.#11 I11 Def Alloc rbx | |V5 a| |I11a| |V0 a|V6 a| | |
29.#12 I11 Use * Keep rbx | |V5 a| |I11i| |V0 a|V6 a| | |
30.#13 V14 Def Alloc rbx | |V5 a| |V14a| |V0 a|V6 a| | |
33.#14 V14 Use Keep rbx | |V5 a| |V14a| |V0 a|V6 a| | |
34.#15 I12 Def Alloc rdx | |V5 a|I12a|V14a| |V0 a|V6 a| | |
35.#16 I12 Use * Keep rdx | |V5 a|I12i|V14a| |V0 a|V6 a| | |
36.#17 V7 Def Alloc rdx | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
45.#18 V7 Use Keep rdx | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
49.#19 BB2 PredBB1 | |V5 a|V7 a|V14a| |V0 a|V6 a| | |
55.#20 V7 Use * Keep rdx | |V5 a|V7 i|V14a| |V0 a|V6 a| | |
56.#21 I13 Def Alloc rdx | |V5 a|I13a|V14a| |V0 a|V6 a| | |
57.#22 I13 Use * Keep rdx | |V5 a|I13i|V14a| |V0 a|V6 a| | |
58.#23 V15 Def Alloc rdx | |V5 a|V15a|V14a| |V0 a|V6 a| | |
63.#24 V15 Use Keep rdx | |V5 a|V15a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
67.#25 BB3 PredBB2 | | |V15a|V14a| |V0 a|V6 a| | |
71.#26 V15 Use * Keep rdx | | |V15i|V14a| |V0 a|V6 a| | |
72.#27 V8 Def Alloc rdx | | |V8 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
73.#28 BB4 PredBB1 | |V5 a| |V14a| |V0 a|V6 a| | |
77.#29 rcx Fixd Keep rcx | |V5 a| |V14a| |V0 a|V6 a| | |
77.#30 V5 Use * Keep rcx | |V5 i| |V14a| |V0 a|V6 a| | |
78.#31 rcx Fixd Keep rcx | | | |V14a| |V0 a|V6 a| | |
78.#32 I14 Def Alloc rcx | |I14a| |V14a| |V0 a|V6 a| | |
80.#33 C15 Def Alloc rdx | |I14a|C15a|V14a| |V0 a|V6 a| | |
81.#34 rdx Fixd Keep rdx | |I14a|C15a|V14a| |V0 a|V6 a| | |
81.#35 C15 Use * Keep rdx | |I14a|C15i|V14a| |V0 a|V6 a| | |
82.#36 rdx Fixd Keep rdx | |I14a| |V14a| |V0 a|V6 a| | |
82.#37 I16 Def Alloc rdx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#38 rcx Fixd Keep rcx | |I14a|I16a|V14a| |V0 a|V6 a| | |
83.#39 I14 Use * Keep rcx | |I14i|I16a|V14a| |V0 a|V6 a| | |
83.#40 rdx Fixd Keep rdx | | |I16a|V14a| |V0 a|V6 a| | |
83.#41 I16 Use * Keep rdx | | |I16i|V14a| |V0 a|V6 a| | |
84.#42 rax Kill Keep rax | | | |V14a| |V0 a|V6 a| | |
84.#43 rcx Kill Keep rcx | | | |V14a| |V0 a|V6 a| | |
84.#44 rdx Kill Keep rdx | | | |V14a| |V0 a|V6 a| | |
84.#45 r8 Kill Keep r8 | | | |V14a| |V0 a|V6 a| | |
84.#46 r9 Kill Keep r9 | | | |V14a| |V0 a|V6 a| | |
84.#47 r10 Kill Keep r10 | | | |V14a| |V0 a|V6 a| | |
84.#48 r11 Kill Keep r11 | | | |V14a| |V0 a|V6 a| | |
84.#49 rax Fixd Keep rax | | | |V14a| |V0 a|V6 a| | |
84.#50 I17 Def Alloc rax |I17a| | |V14a| |V0 a|V6 a| | |
85.#51 I17 Use * Keep rax |I17i| | |V14a| |V0 a|V6 a| | |
86.#52 V8 Def Alloc rdx | | |V8 a|V14a| |V0 a|V6 a| | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
87.#53 BB5 PredBB3 | | |V8 a|V14a| |V0 a|V6 a| | |
90.#54 I18 Def Alloc rcx | |I18a|V8 a|V14a| |V0 a|V6 a| | |
91.#55 rcx Fixd Keep rcx | |I18a|V8 a|V14a| |V0 a|V6 a| | |
91.#56 I18 Use * Keep rcx | |I18i|V8 a|V14a| |V0 a|V6 a| | |
92.#57 rcx Fixd Keep rcx | | |V8 a|V14a| |V0 a|V6 a| | |
92.#58 I19 Def Alloc rcx | |I19a|V8 a|V14a| |V0 a|V6 a| | |
95.#59 rdx Fixd Keep rdx | |I19a|V8 a|V14a| |V0 a|V6 a| | |
95.#60 V8 Use * Keep rdx | |I19a|V8 i|V14a| |V0 a|V6 a| | |
96.#61 rdx Fixd Keep rdx | |I19a| |V14a| |V0 a|V6 a| | |
96.#62 I20 Def Alloc rdx | |I19a|I20a|V14a| |V0 a|V6 a| | |
99.#63 r8 Fixd Keep r8 | |I19a|I20a|V14a| |V0 a|V6 a| | |
99.#64 V6 Use * Copy r8 | |I19a|I20a|V14a| |V0 a|V6 i|V6 i| |
100.#65 r8 Fixd Keep r8 | |I19a|I20a|V14a| |V0 a| | | |
100.#66 I21 Def Alloc r8 | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#67 rcx Fixd Keep rcx | |I19a|I20a|V14a| |V0 a| |I21a| |
101.#68 I19 Use * Keep rcx | |I19i|I20a|V14a| |V0 a| |I21a| |
101.#69 rdx Fixd Keep rdx | | |I20a|V14a| |V0 a| |I21a| |
101.#70 I20 Use * Keep rdx | | |I20i|V14a| |V0 a| |I21a| |
101.#71 r8 Fixd Keep r8 | | | |V14a| |V0 a| |I21a| |
101.#72 I21 Use * Keep r8 | | | |V14a| |V0 a| |I21i| |
102.#73 rax Kill Keep rax | | | |V14a| |V0 a| | | |
102.#74 rcx Kill Keep rcx | | | |V14a| |V0 a| | | |
102.#75 rdx Kill Keep rdx | | | |V14a| |V0 a| | | |
102.#76 r8 Kill Keep r8 | | | |V14a| |V0 a| | | |
102.#77 r9 Kill Keep r9 | | | |V14a| |V0 a| | | |
102.#78 r10 Kill Keep r10 | | | |V14a| |V0 a| | | |
102.#79 r11 Kill Keep r11 | | | |V14a| |V0 a| | | |
106.#80 C22 Def Alloc rax |C22a| | |V14a| |V0 a| | | |
107.#81 C22 Use * Keep rax |C22i| | |V14a| |V0 a| | | |
108.#82 V3 Def Alloc rax |V3 a| | |V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
109.#83 BB7 PredBB5 |V3 a| | |V14a| |V0 a| | | |
115.#84 V14 Use Keep rbx |V3 a| | |V14a| |V0 a| | | |
116.#85 I23 Def Alloc rdx |V3 a| |I23a|V14a| |V0 a| | | |
117.#86 I23 Use * Keep rdx |V3 a| |I23i|V14a| |V0 a| | | |
118.#87 V10 Def Alloc rdx |V3 a| |V10a|V14a| |V0 a| | | |
123.#88 V10 Use * Keep rdx |V3 a| |V10i|V14a| |V0 a| | | |
124.#89 I24 Def * Alloc rdx |V3 a| |I24i|V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
125.#90 BB8 PredBB7 |V3 a| | |V14a| |V0 a| | | |
131.#91 V3 Use Keep rax |V3 a| | |V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
135.#92 BB6 PredBB8 |V3 a| | |V14a| |V0 a| | | |
140.#93 I25 Def Alloc rdx |V3 a| |I25a|V14a| |V0 a| | | |
143.#94 V3 Use Keep rax |V3 a| |I25a|V14a| |V0 a| | | |
144.#95 I26 Def Alloc rcx |V3 a|I26a|I25a|V14a| |V0 a| | | |
148.#96 C27 Def Alloc r8 |V3 a|I26a|I25a|V14a| |V0 a| |C27a| |
149.#97 I25 Use * Keep rdx |V3 a|I26a|I25i|V14a| |V0 a| |C27a| |
149.#98 I26 Use * Keep rcx |V3 a|I26i| |V14a| |V0 a| |C27a| |
149.#99 C27 Use * Keep r8 |V3 a| | |V14a| |V0 a| |C27i| |
157.#100 V3 Use * Keep rax |V3 i| | |V14a| |V0 a| | | |
158.#101 I28 Def Alloc rax |I28a| | |V14a| |V0 a| | | |
159.#102 I28 Use * Keep rax |I28i| | |V14a| |V0 a| | | |
160.#103 V3 Def Alloc rax |V3 a| | |V14a| |V0 a| | | |
161.#104 V3 ExpU |V3 a| | |V14a| |V0 a| | | |
161.#105 V14 ExpU |V3 a| | |V14a| |V0 a| | | |
--------------------------------+----+----+----+----+----+----+----+----+----+
Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
--------------------------------+----+----+----+----+----+----+----+----+----+
161.#106 BB12 PredBB8 | | | | | |V0 a| | | |
166.#107 C29 Def Alloc rax |C29a| | | | |V0 a| | | |
167.#108 rax Fixd Keep rax |C29a| | | | |V0 a| | | |
167.#109 C29 Use * Keep rax |C29i| | | | |V0 a| | | |
169.#110 V0 ExpU | | | | | |V0 a| | | |
169.#111 V0 ExpU | | | | | |V0 a| | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Total Tracked Vars: 11
Total Reg Cand Vars: 9
Total number of Intervals: 29
Total number of RefPositions: 111
Total Spill Count: 0 Weighted: 0
Total CopyReg Count: 0 Weighted: 0
Total ResolutionMov Count: 0 Weighted: 0
Total number of split edges: 0
Total Number of spill temps created: 0
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: V00(rcx=>rsi)
BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04}
=====
N003. IL_OFFSET IL offset: 0x0
N005. IL_OFFSET IL offset: 0x8
N007. V00(rsi)
N009. STK = LEA(b+16); rsi
N011. rdi = IND ; STK
* N013. V06(rdi); rdi
N015. IL_OFFSET IL offset: 0x8
N017. V00(rsi)
N019. rcx = IND ; rsi
* N021. V05(rcx); rcx
N023. V05(rcx)
N025. STK = LEA(b+56); rcx
N027. rbx = IND ; STK
* N029. V14(rbx); rbx
N031. V14(rbx)
N033. rdx = IND ; rbx
* N035. V07(rdx); rdx
N037. V07(rdx)
N039. STK = LEA(b+8) ; rdx
N041. STK = IND ; STK
N043. CNS_INT 96
N045. LE ; STK
N047. JTRUE
Var=Reg end of BB01: V00=rsi V14=rbx V07=rdx V05=rcx V06=rdi
BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04}
=====
Predecessor for variable locations: BB01
Var=Reg beg of BB02: V00=rsi V14=rbx V07=rdx V05=rcx V06=rdi
N051. V07(rdx*)
N053. STK = LEA(b+96); rdx*
N055. rdx = IND ; STK
* N057. V15(rdx); rdx
N059. V15(rdx)
N061. CNS_INT 0
N063. EQ ; rdx
N065. JTRUE
Var=Reg end of BB02: V00=rsi V14=rbx V05=rcx V06=rdi V15=rdx
BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05}
=====
Predecessor for variable locations: BB02
Var=Reg beg of BB03: V00=rsi V14=rbx V06=rdi V15=rdx
N069. V15(rdx*)
* N071. V08(rdx); rdx*
Var=Reg end of BB03: V00=rsi V14=rbx V06=rdi V08=rdx
BB04 [???..???), preds={BB01,BB02} succs={BB05}
=====
Predecessor for variable locations: BB01
Var=Reg beg of BB04: V00=rsi V14=rbx V05=rcx V06=rdi
N075. V05(rcx*)
N077. rcx = PUTARG_REG; rcx*
N079. rdx = CNS_INT(h) 0x7ff9f1337fe8 token
N081. rdx = PUTARG_REG; rdx
N083. rax = CALL help; rcx,rdx
* N085. V08(rdx); rax
Var=Reg end of BB04: V00=rsi V14=rbx V06=rdi V08=rdx
BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07}
=====
Predecessor for variable locations: BB03
Var=Reg beg of BB05: V00=rsi V14=rbx V06=rdi V08=rdx
N089. rcx = LCL_VAR_ADDR V02 loc1 rcx
byref V02._pointer (offs=0x00) -> V12 tmp8
int V02._length (offs=0x08) -> V13 tmp9
N091. rcx = PUTARG_REG; rcx
N093. V08(rdx*)
N095. rdx = PUTARG_REG; rdx*
N097. V06(rdi*)
N099. r8 = PUTARG_REG; rdi*
N101. CALL ; rcx,rdx,r8
N103. IL_OFFSET IL offset: 0x15
N105. rax = CNS_INT 0
* N107. V03(rax); rax
Var=Reg end of BB05: V03=rax V00=rsi V14=rbx
BB07 [02B..???), preds={BB05,BB06} succs={BB08}
=====
Predecessor for variable locations: BB05
Var=Reg beg of BB07: V03=rax V00=rsi V14=rbx
N111. IL_OFFSET IL offset: 0x2b
N113. V14(rbx)
N115. rdx = IND ; rbx
* N117. V10(rdx); rdx
N119. V10(rdx*)
N121. STK = LEA(b+8) ; rdx*
* N123. rdx = IND ; STK
Var=Reg end of BB07: V03=rax V00=rsi V14=rbx
BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06}
=====
Predecessor for variable locations: BB07
Var=Reg beg of BB08: V03=rax V00=rsi V14=rbx
N127. V03(rax)
N129. V13 MEM
N131. LT ; rax
N133. JTRUE
Var=Reg end of BB08: V03=rax V00=rsi V14=rbx
BB06 [019..02B), preds={BB08} succs={BB07}
=====
Predecessor for variable locations: BB08
Var=Reg beg of BB06: V03=rax V00=rsi V14=rbx
N137. IL_OFFSET IL offset: 0x19
N139. rdx = V12 MEM
N141. V03(rax)
N143. rcx = CAST ; rax
N145. STK = LEA(b+(i*8)+0); rdx,rcx
N147. r8 = CNS_INT 0
N149. STORE_BLK; STK,r8
N151. IL_OFFSET IL offset: 0x27
N153. V03(rax*)
N155. CNS_INT 1
N157. rax = ADD ; rax*
* N159. V03(rax); rax
Var=Reg end of BB06: V03=rax V00=rsi V14=rbx
BB12 [035..037) (return), preds={BB08} succs={}
=====
Predecessor for variable locations: BB08
Var=Reg beg of BB12: V00=rsi
N163. IL_OFFSET IL offset: 0x35
N165. rax = CNS_INT null
N167. RETURN ; rax
Var=Reg end of BB12: V00=rsi
*************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..015)-> BB04 ( cond ) i label target LIR
BB02 [0006] 1 BB01 0.40 [???..???)-> BB04 ( cond ) i LIR
BB03 [0007] 1 BB02 0.40 [???..???)-> BB05 (always) i LIR
BB04 [0008] 2 BB01,BB02 0.10 [???..???) i label target hascall LIR
BB05 [0004] 2 BB03,BB04 1 [015..019)-> BB07 (always) i label target hascall LIR
BB06 [0001] 1 BB08 2 0 [019..02B) i Loop Loop0 label target bwd bwd-target LIR
BB07 [0002] 2 BB05,BB06 8 0 [02B..???) i label target bwd LIR
BB08 [0011] 1 BB07 8 0 [???..035)-> BB06 ( cond ) i target bwd LIR
BB12 [0003] 1 BB08 1 [035..037) (return) i LIR
-----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
Recording Var Locations at start of BB01
V00(rsi)
Modified regs: [rax rcx rdx rbx rsi rdi r8-r11]
Callee-saved registers pushed: 3 [rbx rsi rdi]
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Reporting this as generic context: referenced
Assign V02 loc1, size=16, stkOffs=-0x38
Assign V04 OutArgs, size=32, stkOffs=-0x58
--- delta bump 8 for RA
--- delta bump 88 for RSP frame
--- virtual stack offset to actual stack offset delta is 96
-- V00 was 0, now 96
-- V02 was -56, now 40
-- V04 was -88, now 8
; Final local variable assignments
;
; V00 this [V00,T03] ( 4, 4 ) ref -> rsi this class-hnd
;* V01 loc0 [V01,T10] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
; V02 loc1 [V02 ] ( 3, 11 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V03 loc2 [V03,T02] ( 5, 15 ) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 3, 4.20) long -> rcx "impRuntimeLookup slot"
; V06 tmp2 [V06,T07] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt"
; V07 tmp3 [V07,T05] ( 3, 4.80) long -> rdx "impRuntimeLookup indirectOffset"
; V08 tmp4 [V08,T08] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree"
;* V09 tmp5 [V09,T01] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot"
; V10 tmp6 [V10,T00] ( 2, 32 ) long -> rdx "impRuntimeLookup indirectOffset"
;* V11 tmp7 [V11 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree"
; V12 tmp8 [V12 ] ( 2, 3 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)"
; V13 tmp9 [V13 ] ( 2, 9 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)"
; V14 cse0 [V14,T04] ( 3, 10 ) long -> rbx "CSE - aggressive"
; V15 cse1 [V15,T09] ( 3, 1.20) long -> rdx "CSE - conservative"
;
; Lcl frame size = 64
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..015) -> BB04 (cond), preds={} succs={BB02,BB04} flags=0x00000000.40030020: i label target LIR
BB01 IN (1)={V00 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V07 V05 V06} + ByrefExposed + GcHeap
Recording Var Locations at start of BB01
V00(rsi)
Change life 0000000000000000 {} -> 0000000000000008 {V00}
V00 in reg rsi is becoming live [------]
Live regs: 00000000 {} => 00000040 {rsi}
Live regs: (unchanged) 00000040 {rsi}
GC regs: (unchanged) 00000040 {rsi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB01:
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..015)
Scope info: open scopes =
0 (V00 this) [000..037)
Added IP mapping: 0x0000 STACK_EMPTY (G_M53660_IG02,ins#0,ofs#0) label
Generating: N003 (???,???) [000165] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Added IP mapping: 0x0008 STACK_EMPTY (G_M53660_IG02,ins#0,ofs#0)
Generating: N005 (???,???) [000166] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N007 ( 1, 1) [000007] ------------ t7 = LCL_VAR ref V00 this u:1 rsi REG rsi $80
/--* t7 ref
Generating: N009 ( 2, 2) [000135] -c---------- t135 = * LEA(b+16) byref REG NA
/--* t135 byref
Generating: N011 ( 4, 4) [000008] ---XG------- t8 = * IND ref REG rdi <l:$1c4, c:$1c3>
IN0001: mov rdi, gword ptr [rsi+16]
GC regs: 00000040 {rsi} => 000000C0 {rsi rdi}
/--* t8 ref
Generating: N013 ( 4, 4) [000015] DA-XG------- * STORE_LCL_VAR ref V06 tmp2 d:2 rdi REG rdi
GC regs: 000000C0 {rsi rdi} => 00000040 {rsi}
V06 in reg rdi is becoming live [000015]
Live regs: 00000040 {rsi} => 000000C0 {rsi rdi}
Live vars: {V00} => {V00 V06}
GC regs: 00000040 {rsi} => 000000C0 {rsi rdi}
genIPmappingAdd: ignoring duplicate IL offset 0x8
Generating: N015 (???,???) [000167] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N017 ( 1, 1) [000010] !----------- t10 = LCL_VAR ref V00 this u:1 rsi REG rsi $80
/--* t10 ref
Generating: N019 ( 3, 2) [000011] #----O------ t11 = * IND long REG rcx $1c5
IN0002: mov rcx, qword ptr [rsi]
/--* t11 long
Generating: N021 ( 3, 3) [000013] DA---O------ * STORE_LCL_VAR long V05 tmp1 d:2 rcx REG rcx
V05 in reg rcx is becoming live [000013]
Live regs: 000000C0 {rsi rdi} => 000000C2 {rcx rsi rdi}
Live vars: {V00 V06} => {V00 V05 V06}
Generating: N023 ( 1, 1) [000018] ------------ t18 = LCL_VAR long V05 tmp1 u:2 rcx REG rcx $1c5
/--* t18 long
Generating: N025 ( 2, 2) [000020] -c---------- t20 = * LEA(b+56) long REG NA
/--* t20 long
Generating: N027 ( 4, 4) [000021] #----------- t21 = * IND long REG rbx $1c6
IN0003: mov rbx, qword ptr [rcx+56]
/--* t21 long
Generating: N029 ( 4, 4) [000154] DA---------- * STORE_LCL_VAR long V14 cse0 d:1 rbx REG rbx
V14 in reg rbx is becoming live [000154]
Live regs: 000000C2 {rcx rsi rdi} => 000000CA {rcx rbx rsi rdi}
Live vars: {V00 V05 V06} => {V00 V05 V06 V14}
Generating: N031 ( 1, 1) [000155] ------------ t155 = LCL_VAR long V14 cse0 u:1 rbx REG rbx $1c6
/--* t155 long
Generating: N033 ( 8, 7) [000022] n----------- t22 = * IND long REG rdx <l:$280, c:$201>
IN0004: mov rdx, qword ptr [rbx]
/--* t22 long
Generating: N035 ( 8, 7) [000024] DA---------- * STORE_LCL_VAR long V07 tmp3 d:2 rdx REG rdx
V07 in reg rdx is becoming live [000024]
Live regs: 000000CA {rcx rbx rsi rdi} => 000000CE {rcx rdx rbx rsi rdi}
Live vars: {V00 V05 V06 V14} => {V00 V05 V06 V07 V14}
Generating: N037 ( 1, 1) [000026] ------------ t26 = LCL_VAR long V07 tmp3 u:2 rdx REG rdx <l:$280, c:$201>
/--* t26 long
Generating: N039 ( 2, 2) [000039] -c---------- t39 = * LEA(b+8) long REG NA
/--* t39 long
Generating: N041 ( 4, 4) [000040] -c-X-------- t40 = * IND long REG NA <l:$244, c:$243>
Generating: N043 ( 1, 1) [000041] -c---------- t41 = CNS_INT long 96 REG NA $c4
/--* t40 long
+--* t41 long
Generating: N045 ( 6, 6) [000042] J--X---N---- * LE void REG NA <l:$2c3, c:$2c2>
IN0005: cmp qword ptr [rdx+8], 96
Generating: N047 ( 8, 8) [000115] ---X-------- * JTRUE void REG NA
IN0006: jle L_M53660_BB04
Scope info: end block BB01, IL range [000..015)
Scope info: open scopes =
0 (V00 this) [000..037)
=============== Generating BB02 [???..???) -> BB04 (cond), preds={BB01} succs={BB03,BB04} flags=0x00000000.40000020: i LIR
BB02 IN (5)={V00 V14 V07 V05 V06 } + ByrefExposed + GcHeap
OUT(5)={V00 V14 V05 V06 V15} + ByrefExposed + GcHeap
Recording Var Locations at start of BB02
V00(rsi) V14(rbx) V07(rdx) V05(rcx) V06(rdi)
Liveness not changing: 00000000000000F8 {V00 V05 V06 V07 V14}
Live regs: 00000000 {} => 000000CE {rcx rdx rbx rsi rdi}
GC regs: 00000000 {} => 000000C0 {rsi rdi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB02:
G_M53660_IG02: ; offs=000000H, funclet=00, bbWeight=1
Label: IG03, GCvars=0000000000000000 {}, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}
Scope info: begin block BB02, IL range [???..???)
Scope info: ignoring block beginning
Generating: N051 ( 1, 1) [000025] ------------ t25 = LCL_VAR long V07 tmp3 u:2 rdx (last use) REG rdx <l:$280, c:$201>
/--* t25 long
Generating: N053 ( 2, 2) [000028] -c---------- t28 = * LEA(b+96) long REG NA
/--* t28 long
Generating: N055 ( 4, 4) [000029] n----------- t29 = * IND long REG rdx <l:$282, c:$204>
V07 in reg rdx is becoming dead [000025]
Live regs: 000000CE {rcx rdx rbx rsi rdi} => 000000CA {rcx rbx rsi rdi}
Live vars: {V00 V05 V06 V07 V14} => {V00 V05 V06 V14}
IN0007: mov rdx, qword ptr [rdx+96]
/--* t29 long
Generating: N057 ( 8, 7) [000159] DA---------- * STORE_LCL_VAR long V15 cse1 d:1 rdx REG rdx
V15 in reg rdx is becoming live [000159]
Live regs: 000000CA {rcx rbx rsi rdi} => 000000CE {rcx rdx rbx rsi rdi}
Live vars: {V00 V05 V06 V14} => {V00 V05 V06 V14 V15}
Generating: N059 ( 3, 2) [000160] ------------ t160 = LCL_VAR long V15 cse1 u:1 rdx REG rdx <l:$282, c:$204>
Generating: N061 ( 1, 1) [000032] -c---------- t32 = CNS_INT long 0 REG NA $c0
/--* t160 long
+--* t32 long
Generating: N063 ( 13, 11) [000033] J------N---- * EQ void REG NA <l:$2c5, c:$2c4>
IN0008: test rdx, rdx
Generating: N065 ( 15, 13) [000116] ------------ * JTRUE void REG NA
IN0009: je L_M53660_BB04
Scope info: end block BB02, IL range [???..???)
Scope info: ignoring block end
=============== Generating BB03 [???..???) -> BB05 (always), preds={BB02} succs={BB05} flags=0x00000000.40000020: i LIR
BB03 IN (4)={V00 V14 V06 V15} + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08 } + ByrefExposed + GcHeap
Recording Var Locations at start of BB03
V00(rsi) V14(rbx) V06(rdi) V15(rdx)
Change life 00000000000002D8 {V00 V05 V06 V14 V15} -> 0000000000000298 {V00 V06 V14 V15}
V05 in reg rcx is becoming dead [------]
Live regs: (unchanged) 00000000 {}
Live regs: 00000000 {} => 000000CC {rdx rbx rsi rdi}
GC regs: 00000000 {} => 000000C0 {rsi rdi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB03:
Scope info: begin block BB03, IL range [???..???)
Scope info: ignoring block beginning
Generating: N069 ( 3, 2) [000162] ------------ t162 = LCL_VAR long V15 cse1 u:1 rdx (last use) REG rdx <l:$282, c:$204>
/--* t162 long
Generating: N071 ( 3, 3) [000118] DA---------- * STORE_LCL_VAR long V08 tmp4 d:4 rdx REG rdx
V15 in reg rdx is becoming dead [000162]
Live regs: 000000CC {rdx rbx rsi rdi} => 000000C8 {rbx rsi rdi}
Live vars: {V00 V06 V14 V15} => {V00 V06 V14}
V08 in reg rdx is becoming live [000118]
Live regs: 000000C8 {rbx rsi rdi} => 000000CC {rdx rbx rsi rdi}
Live vars: {V00 V06 V14} => {V00 V06 V08 V14}
Scope info: end block BB03, IL range [???..???)
Scope info: ignoring block end
IN000a: jmp L_M53660_BB05
=============== Generating BB04 [???..???), preds={BB01,BB02} succs={BB05} flags=0x00000004.40030020: i label target hascall LIR
BB04 IN (4)={V00 V14 V05 V06 } + ByrefExposed + GcHeap
OUT(4)={V00 V14 V06 V08} + ByrefExposed + GcHeap
Recording Var Locations at start of BB04
V00(rsi) V14(rbx) V05(rcx) V06(rdi)
Change life 0000000000000198 {V00 V06 V08 V14} -> 00000000000000D8 {V00 V05 V06 V14}
V08 in reg rdx is becoming dead [------]
Live regs: (unchanged) 00000000 {}
V05 in reg rcx is becoming live [------]
Live regs: 00000000 {} => 00000002 {rcx}
Live regs: 00000002 {rcx} => 000000CA {rcx rbx rsi rdi}
GC regs: 00000000 {} => 000000C0 {rsi rdi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB04:
G_M53660_IG03: ; offs=000019H, funclet=00, bbWeight=0.40
Label: IG04, GCvars=0000000000000000 {}, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}
Scope info: begin block BB04, IL range [???..???)
Scope info: ignoring block beginning
Generating: N075 ( 1, 1) [000017] ------------ t17 = LCL_VAR long V05 tmp1 u:2 rcx (last use) REG rcx $1c5
/--* t17 long
Generating: N077 (???,???) [000173] ------------ t173 = * PUTARG_REG long REG rcx
V05 in reg rcx is becoming dead [000017]
Live regs: 000000CA {rcx rbx rsi rdi} => 000000C8 {rbx rsi rdi}
Live vars: {V00 V05 V06 V14} => {V00 V06 V14}
Generating: N079 ( 2, 10) [000030] ------------ t30 = CNS_INT(h) long 0x7ff9f1337fe8 token REG rdx $181
IN000b: mov rdx, 0x7FF9F1337FE8
/--* t30 long
Generating: N081 (???,???) [000174] ------------ t174 = * PUTARG_REG long REG rdx
/--* t173 long arg0 in rcx
+--* t174 long arg1 in rdx
Generating: N083 ( 17, 18) [000031] --C-G------- t31 = * CALL help long HELPER.CORINFO_HELP_RUNTIMEHANDLE_CLASS REG rax $247
Call: GCvars=0000000000000000 {}, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}
IN000c: call CORINFO_HELP_RUNTIMEHANDLE_CLASS
/--* t31 long
Generating: N085 ( 17, 18) [000120] DA--G------- * STORE_LCL_VAR long V08 tmp4 d:3 rdx REG rdx
IN000d: mov rdx, rax
V08 in reg rdx is becoming live [000120]
Live regs: 000000C8 {rbx rsi rdi} => 000000CC {rdx rbx rsi rdi}
Live vars: {V00 V06 V14} => {V00 V06 V08 V14}
Scope info: end block BB04, IL range [???..???)
Scope info: ignoring block end
=============== Generating BB05 [015..019) -> BB07 (always), preds={BB03,BB04} succs={BB07} flags=0x00000004.40030020: i label target hascall LIR
BB05 IN (4)={ V00 V14 V06 V08} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14 } + ByrefExposed + GcHeap
Recording Var Locations at start of BB05
V00(rsi) V14(rbx) V06(rdi) V08(rdx)
Liveness not changing: 0000000000000198 {V00 V06 V08 V14}
Live regs: 00000000 {} => 000000CC {rdx rbx rsi rdi}
GC regs: 00000000 {} => 000000C0 {rsi rdi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB05:
G_M53660_IG04: ; offs=00002BH, funclet=00, bbWeight=0.10
Label: IG05, GCvars=0000000000000000 {}, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}
Scope info: begin block BB05, IL range [015..019)
Scope info: open scopes =
0 (V00 this) [000..037)
Generating: N089 ( 3, 2) [000005] -------N---- t5 = LCL_VAR_ADDR byref V02 loc1 rcx
* byref V02._pointer (offs=0x00) -> V12 tmp8
* int V02._length (offs=0x08) -> V13 tmp9 REG rcx
IN000e: lea rcx, bword ptr [V02 rsp+28H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref
Generating: N091 (???,???) [000175] ------------ t175 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
Generating: N093 ( 1, 1) [000045] ------------ t45 = LCL_VAR long V08 tmp4 u:2 rdx (last use) REG rdx $283
/--* t45 long
Generating: N095 (???,???) [000176] ------------ t176 = * PUTARG_REG long REG rdx
V08 in reg rdx is becoming dead [000045]
Live regs: 000000CC {rdx rbx rsi rdi} => 000000C8 {rbx rsi rdi}
Live vars: {V00 V06 V08 V14} => {V00 V06 V14}
Generating: N097 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V06 tmp2 u:2 rdi (last use) REG rdi <l:$1c1, c:$101>
/--* t16 ref
Generating: N099 (???,???) [000177] ------------ t177 = * PUTARG_REG ref REG r8
V06 in reg rdi is becoming dead [000016]
Live regs: 000000C8 {rbx rsi rdi} => 00000048 {rbx rsi}
Live vars: {V00 V06 V14} => {V00 V14}
GC regs: 000000C0 {rsi rdi} => 00000040 {rsi}
IN000f: mov r8, rdi
GC regs: 00000040 {rsi} => 00000140 {rsi r8}
/--* t175 byref this in rcx
+--* t176 long arg1 in rdx
+--* t177 ref arg2 in r8
Generating: N101 ( 19, 14) [000009] --CXG------- * CALL void System.Span`1[__Canon][System.__Canon]..ctor REG NA $VN.Void
Byref regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000140 {rsi r8} => 00000040 {rsi}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
IN0010: call System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
Added IP mapping: 0x0015 STACK_EMPTY (G_M53660_IG05,ins#3,ofs#13) label
Generating: N103 (???,???) [000168] ------------ IL_OFFSET void IL offset: 0x15 REG NA
Generating: N105 ( 1, 1) [000047] ------------ t47 = CNS_INT int 0 REG rax $40
IN0011: xor eax, eax
/--* t47 int
Generating: N107 ( 1, 3) [000049] DA---------- * STORE_LCL_VAR int V03 loc2 d:2 rax REG rax
V03 in reg rax is becoming live [000049]
Live regs: 00000048 {rbx rsi} => 00000049 {rax rbx rsi}
Live vars: {V00 V14} => {V00 V03 V14}
Scope info: end block BB05, IL range [015..019)
Scope info: open scopes =
0 (V00 this) [000..037)
IN0012: jmp L_M53660_BB07
=============== Generating BB06 [019..02B), preds={BB08} succs={BB07} flags=0x00000010.42036020: i Loop Loop0 label target bwd bwd-target LIR
BB06 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
Recording Var Locations at start of BB06
V03(rax) V00(rsi) V14(rbx)
Liveness not changing: 000000000000001C {V00 V03 V14}
Live regs: 00000000 {} => 00000049 {rax rbx rsi}
GC regs: 00000000 {} => 00000040 {rsi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB06:
G_M53660_IG05: ; offs=00003DH, funclet=00, bbWeight=1
Label: IG06, GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
Scope info: begin block BB06, IL range [019..02B)
Scope info: open scopes =
0 (V00 this) [000..037)
3 (V03 loc2) [000..037)
Added IP mapping: 0x0019 STACK_EMPTY (G_M53660_IG06,ins#0,ofs#0) label
Generating: N137 (???,???) [000169] ------------ IL_OFFSET void IL offset: 0x19 REG NA
Generating: N139 ( 3, 2) [000102] ------------ t102 = LCL_VAR byref (AX) V12 tmp8 rdx REG rdx $480
IN0013: mov rdx, bword ptr [V12 rsp+28H]
Byref regs: 00000000 {} => 00000004 {rdx}
Generating: N141 ( 1, 1) [000094] ------------ t94 = LCL_VAR int V03 loc2 u:3 rax REG rax $3c0
/--* t94 int
Generating: N143 ( 2, 3) [000099] ------------ t99 = * CAST long <- int REG rcx $24f
IN0014: movsxd rcx, eax
/--* t102 byref
+--* t99 long
Generating: N145 ( 8, 8) [000103] -c---------- t103 = * LEA(b+(i*8)+0) byref REG NA
Generating: N147 ( 1, 1) [000105] ------------ t105 = CNS_INT int 0 REG r8 $40
IN0015: xor r8d, r8d
/--* t103 byref
+--* t105 int
Generating: N149 ( 11, 10) [000106] -A-XG------- * STORE_BLK struct<8> (init) (Unroll) REG NA $1d1
Byref regs: 00000004 {rdx} => 00000000 {}
IN0016: mov qword ptr [rdx+8*rcx], r8
Added IP mapping: 0x0027 STACK_EMPTY (G_M53660_IG06,ins#4,ofs#15)
Generating: N151 (???,???) [000170] ------------ IL_OFFSET void IL offset: 0x27 REG NA
Generating: N153 ( 1, 1) [000108] ------------ t108 = LCL_VAR int V03 loc2 u:3 rax (last use) REG rax $3c0
Generating: N155 ( 1, 1) [000109] -c---------- t109 = CNS_INT int 1 REG NA $4b
/--* t108 int
+--* t109 int
Generating: N157 ( 3, 3) [000110] ------------ t110 = * ADD int REG rax $2ce
V03 in reg rax is becoming dead [000108]
Live regs: 00000049 {rax rbx rsi} => 00000048 {rbx rsi}
Live vars: {V00 V03 V14} => {V00 V14}
IN0017: inc eax
/--* t110 int
Generating: N159 ( 3, 3) [000112] DA---------- * STORE_LCL_VAR int V03 loc2 d:4 rax REG rax
V03 in reg rax is becoming live [000112]
Live regs: 00000048 {rbx rsi} => 00000049 {rax rbx rsi}
Live vars: {V00 V14} => {V00 V03 V14}
Scope info: end block BB06, IL range [019..02B)
Scope info: open scopes =
0 (V00 this) [000..037)
=============== Generating BB07 [02B..???), preds={BB05,BB06} succs={BB08} flags=0x00000000.42030020: i label target bwd LIR
BB07 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
Recording Var Locations at start of BB07
V03(rax) V00(rsi) V14(rbx)
Liveness not changing: 000000000000001C {V00 V03 V14}
Live regs: 00000000 {} => 00000049 {rax rbx rsi}
GC regs: 00000000 {} => 00000040 {rsi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB07:
G_M53660_IG06: ; offs=000051H, funclet=00, bbWeight=2
Label: IG07, GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
Scope info: begin block BB07, IL range [02B..???)
Scope info: open scopes =
0 (V00 this) [000..037)
3 (V03 loc2) [000..037)
Added IP mapping: 0x002B STACK_EMPTY (G_M53660_IG07,ins#0,ofs#0) label
Generating: N111 (???,???) [000171] ------------ IL_OFFSET void IL offset: 0x2b REG NA
Generating: N113 ( 1, 1) [000157] ------------ t157 = LCL_VAR long V14 cse0 u:1 rbx REG rbx $1c6
/--* t157 long
Generating: N115 ( 3, 2) [000063] n----------- t63 = * IND long REG rdx <l:$284, c:$441>
IN0018: mov rdx, qword ptr [rbx]
/--* t63 long
Generating: N117 ( 3, 3) [000065] DA---------- * STORE_LCL_VAR long V10 tmp6 d:2 rdx REG rdx
V10 in reg rdx is becoming live [000065]
Live regs: 00000049 {rax rbx rsi} => 0000004D {rax rdx rbx rsi}
Live vars: {V00 V03 V14} => {V00 V03 V10 V14}
Generating: N119 ( 1, 1) [000067] ------------ t67 = LCL_VAR long V10 tmp6 u:2 rdx (last use) REG rdx <l:$284, c:$441>
/--* t67 long
Generating: N121 ( 2, 2) [000080] -c---------- t80 = * LEA(b+8) long REG NA
/--* t80 long
Generating: N123 ( 4, 4) [000081] ---X-------- t81 = * IND long REG rdx <l:$24c, c:$24b>
V10 in reg rdx is becoming dead [000067]
Live regs: 0000004D {rax rdx rbx rsi} => 00000049 {rax rbx rsi}
Live vars: {V00 V03 V10 V14} => {V00 V03 V14}
IN0019: mov rdx, qword ptr [rdx+8]
Scope info: end block BB07, IL range [02B..???)
Scope info: ignoring block end
=============== Generating BB08 [???..035) -> BB06 (cond), preds={BB07} succs={BB12,BB06} flags=0x00000000.42020020: i target bwd LIR
BB08 IN (3)={V03 V00 V14} + ByrefExposed + GcHeap
OUT(3)={V03 V00 V14} + ByrefExposed + GcHeap
Recording Var Locations at start of BB08
V03(rax) V00(rsi) V14(rbx)
Liveness not changing: 000000000000001C {V00 V03 V14}
Live regs: 00000000 {} => 00000049 {rax rbx rsi}
GC regs: 00000000 {} => 00000040 {rsi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB08:
G_M53660_IG07: ; offs=000062H, funclet=00, bbWeight=8
Label: IG08, GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
Scope info: begin block BB08, IL range [???..035)
Scope info: ignoring block beginning
Generating: N127 ( 1, 1) [000050] ------------ t50 = LCL_VAR int V03 loc2 u:3 rax REG rax $3c0
Generating: N129 ( 3, 2) [000132] -c---------- t132 = LCL_VAR int (AX) V13 tmp9 NA REG NA $3c1
/--* t50 int
+--* t132 int
Generating: N131 ( 5, 4) [000089] J---G--N---- * LT void REG NA $2cd
IN001a: cmp eax, dword ptr [V13 rsp+30H]
Generating: N133 ( 7, 6) [000090] ----G------- * JTRUE void REG NA
IN001b: jl SHORT L_M53660_BB06
Scope info: end block BB08, IL range [???..035)
Scope info: open scopes =
0 (V00 this) [000..037)
3 (V03 loc2) [000..037)
=============== Generating BB12 [035..037) (return), preds={BB08} succs={} flags=0x00000000.40000020: i LIR
BB12 IN (1)={V00}
OUT(1)={V00}
Recording Var Locations at start of BB12
V00(rsi)
Change life 000000000000001C {V00 V03 V14} -> 0000000000000008 {V00}
V03 in reg rax is becoming dead [------]
Live regs: (unchanged) 00000000 {}
V14 in reg rbx is becoming dead [------]
Live regs: (unchanged) 00000000 {}
Live regs: 00000000 {} => 00000040 {rsi}
GC regs: 00000000 {} => 00000040 {rsi}
Byref regs: (unchanged) 00000000 {}
L_M53660_BB12:
G_M53660_IG08: ; offs=000069H, funclet=00, bbWeight=8
Label: IG09, GCvars=0000000000000000 {}, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}
Scope info: begin block BB12, IL range [035..037)
Scope info: open scopes =
0 (V00 this) [000..037)
Added IP mapping: 0x0035 STACK_EMPTY (G_M53660_IG09,ins#0,ofs#0) label
Generating: N163 (???,???) [000172] ------------ IL_OFFSET void IL offset: 0x35 REG NA
Generating: N165 ( 1, 1) [000163] ------------ t163 = CNS_INT ref null REG rax $VN.Null
IN001c: xor rax, rax
GC regs: 00000040 {rsi} => 00000041 {rax rsi}
/--* t163 ref
Generating: N167 ( 2, 2) [000114] ------------ * RETURN ref REG NA $105
GC regs: 00000041 {rax rsi} => 00000040 {rsi}
Scope info: end block BB12, IL range [035..037)
Scope info: ending scope, LVnum=1 [000..037)
Scope info: ending scope, LVnum=2 [000..037)
siEndScope: Failed to end scope for V02
Scope info: ending scope, LVnum=3 [000..037)
Scope info: ending scope, LVnum=0 [000..037)
Scope info: open scopes =
<none>
Added IP mapping: EPILOG STACK_EMPTY (G_M53660_IG09,ins#1,ofs#2) label
GC regs: 00000040 {rsi} => 00000041 {rax rsi}
Extending return value GC liveness to epilog
Reserving epilog IG for block BB12
G_M53660_IG09: ; offs=00006FH, funclet=00, bbWeight=1
*************** After placeholder IG creation
G_M53660_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M53660_IG02: ; offs=000000H, size=0019H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG03: ; offs=000019H, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG04: ; offs=00002BH, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG05: ; offs=00003DH, size=0014H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG06: ; offs=000051H, size=0011H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG07: ; offs=000062H, size=0007H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG08: ; offs=000069H, size=0006H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG09: ; offs=00006FH, size=0002H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG10: ; epilog placeholder, next placeholder=<END>, BB12 [0003], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000040 {rsi}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000040 {rsi}, InitByrefRegs=00000000 {}
Change life 0000000000000008 {V00} -> 0000000000000000 {}
V00 in reg rsi is becoming dead [------]
Live regs: 00000040 {rsi} => 00000000 {}
# compCycleEstimate = 130, compSizeEstimate = 122 System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
; Final local variable assignments
;
; V00 this [V00,T03] ( 4, 4 ) ref -> rsi this class-hnd
;* V01 loc0 [V01,T10] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
; V02 loc1 [V02 ] ( 3, 11 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V03 loc2 [V03,T02] ( 5, 15 ) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 3, 4.20) long -> rcx "impRuntimeLookup slot"
; V06 tmp2 [V06,T07] ( 2, 4 ) ref -> rdi class-hnd "impAppendStmt"
; V07 tmp3 [V07,T05] ( 3, 4.80) long -> rdx "impRuntimeLookup indirectOffset"
; V08 tmp4 [V08,T08] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree"
;* V09 tmp5 [V09,T01] ( 0, 0 ) long -> zero-ref "impRuntimeLookup slot"
; V10 tmp6 [V10,T00] ( 2, 32 ) long -> rdx "impRuntimeLookup indirectOffset"
;* V11 tmp7 [V11 ] ( 0, 0 ) long -> zero-ref "spilling Runtime Lookup tree"
; V12 tmp8 [V12 ] ( 2, 3 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed V02._pointer(offs=0x00) P-DEP "field V02._pointer (fldOffset=0x0)"
; V13 tmp9 [V13 ] ( 2, 9 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V02._length(offs=0x08) P-DEP "field V02._length (fldOffset=0x8)"
; V14 cse0 [V14,T04] ( 3, 10 ) long -> rbx "CSE - aggressive"
; V15 cse1 [V15,T09] ( 3, 1.20) long -> rdx "CSE - conservative"
;
; Lcl frame size = 64
*************** Before prolog / epilog generation
G_M53660_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M53660_IG02: ; offs=000000H, size=0019H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG03: ; offs=000019H, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG04: ; offs=00002BH, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG05: ; offs=00003DH, size=0014H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG06: ; offs=000051H, size=0011H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG07: ; offs=000062H, size=0007H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG08: ; offs=000069H, size=0006H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG09: ; offs=00006FH, size=0002H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG10: ; epilog placeholder, next placeholder=<END>, BB12 [0003], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000040 {rsi}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000040 {rsi}, InitByrefRegs=00000000 {}
Recording Var Locations at start of BB01
V00(rsi)
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M53660_IG01,ins#0,ofs#0) label
__prolog:
Found 4 lvMustInit int-sized stack slots, frame offsets -40 through -56
IN001d: push rdi
IN001e: push rsi
IN001f: push rbx
IN0020: sub rsp, 64
IN0021: xor rax, rax
IN0022: mov qword ptr [V02 rsp+28H], rax
IN0023: mov qword ptr [V02+0x8 rsp+30H], rax
Reporting this as generic context: referenced
IN0024: mov qword ptr [rsp+38H], rcx
*************** In genFnPrologCalleeRegArgs() for int regs
IN0025: mov rsi, rcx
*************** In genEnregisterIncomingStackArgs()
G_M53660_IG01: ; offs=000000H, funclet=00, bbWeight=1
*************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000040 {rsi}, gcRegByrefSetCur=00000000 {}
IN0026: add rsp, 64
IN0027: pop rbx
IN0028: pop rsi
IN0029: pop rdi
IN002a: ret
G_M53660_IG10: ; offs=000071H, funclet=00, bbWeight=1
0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M53660_IG01: ; func=00, offs=000000H, size=001BH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M53660_IG02: ; offs=00001BH, size=0019H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG03: ; offs=000034H, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG04: ; offs=000046H, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG05: ; offs=000058H, size=0014H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
G_M53660_IG06: ; offs=00006CH, size=0011H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG07: ; offs=00007DH, size=0007H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG08: ; offs=000084H, size=0006H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG09: ; offs=00008AH, size=0002H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
G_M53660_IG10: ; offs=00008CH, size=0008H, epilog, nogc, extend
*************** In emitJumpDistBind()
Binding: IN0006: 000000 jle L_M53660_BB04
Binding L_M53660_BB04 to G_M53660_IG04
Estimate of fwd jump [6D38934C/006]: 002E -> 0046 = 0016
Shrinking jump [6D38934C/006]
Adjusted offset of BB03 from 0034 to 0030
Binding: IN0009: 000000 je L_M53660_BB04
Binding L_M53660_BB04 to G_M53660_IG04
Estimate of fwd jump [6D389534/009]: 0037 -> 0042 = 0009
Shrinking jump [6D389534/009]
Binding: IN000a: 000000 jmp L_M53660_BB05
Binding L_M53660_BB05 to G_M53660_IG05
Estimate of fwd jump [6D38956C/010]: 0039 -> 0050 = 0015
Shrinking jump [6D38956C/010]
Adjusted offset of BB04 from 0046 to 003B
Adjusted offset of BB05 from 0058 to 004D
Binding: IN0012: 000000 jmp L_M53660_BB07
Binding L_M53660_BB07 to G_M53660_IG07
Estimate of fwd jump [6D38995C/018]: 005C -> 0072 = 0014
Shrinking jump [6D38995C/018]
Adjusted offset of BB06 from 006C to 005E
Adjusted offset of BB07 from 007D to 006F
Adjusted offset of BB08 from 0084 to 0076
Binding: IN001b: 000000 jl SHORT L_M53660_BB06
Binding L_M53660_BB06 to G_M53660_IG06
Estimate of bwd jump [6D389E64/027]: 007A -> 005E = 001E
Shrinking jump [6D389E64/027]
Adjusted offset of BB09 from 008A to 007C
Adjusted offset of BB10 from 008C to 007E
Total shrinkage = 14, min extra jump size = 4294967295
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x86 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=FALSE, isColdCode=FALSE, unwindSize=0xc)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M53660_IG01: ; func=00, offs=000000H, size=001BH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN001d: 000000 57 push rdi
IN001e: 000001 56 push rsi
IN001f: 000002 53 push rbx
IN0020: 000003 4883EC40 sub rsp, 64
IN0021: 000007 33C0 xor rax, rax
IN0022: 000009 4889442428 mov qword ptr [rsp+28H], rax
IN0023: 00000E 4889442430 mov qword ptr [rsp+30H], rax
IN0024: 000013 48894C2438 mov qword ptr [rsp+38H], rcx
gcrReg +[rsi]
IN0025: 000018 488BF1 mov rsi, rcx
;; bbWeight=1 PerfScore 6.75
G_M53660_IG02: ; func=00, offs=00001BH, size=0015H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref, isz
gcrReg +[rdi]
IN0001: 00001B 488B7E10 mov rdi, gword ptr [rsi+16]
IN0002: 00001F 488B0E mov rcx, qword ptr [rsi]
IN0003: 000022 488B5938 mov rbx, qword ptr [rcx+56]
IN0004: 000026 488B13 mov rdx, qword ptr [rbx]
IN0005: 000029 48837A0860 cmp qword ptr [rdx+8], 96
IN0006: 00002E 7E0B jle SHORT G_M53660_IG04
;; bbWeight=1 PerfScore 11.00
G_M53660_IG03: ; func=00, offs=000030H, size=000BH, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref, isz
IN0007: 000030 488B5260 mov rdx, qword ptr [rdx+96]
IN0008: 000034 4885D2 test rdx, rdx
IN0009: 000037 7402 je SHORT G_M53660_IG04
IN000a: 000039 EB12 jmp SHORT G_M53660_IG05
;; bbWeight=0.40 PerfScore 2.10
G_M53660_IG04: ; func=00, offs=00003BH, size=0012H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
IN000b: 00003B 48BAE87F33F1F97F0000 mov rdx, 0x7FF9F1337FE8
[6D38A500] ptr arg pop 0
IN000c: 000045 E87647065F call CORINFO_HELP_RUNTIMEHANDLE_CLASS
IN000d: 00004A 488BD0 mov rdx, rax
;; bbWeight=0.10 PerfScore 0.15
G_M53660_IG05: ; func=00, offs=00004DH, size=0011H, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref, isz
byrReg +[rcx]
IN000e: 00004D 488D4C2428 lea rcx, bword ptr [rsp+28H]
gcrReg +[r8]
IN000f: 000052 4C8BC7 mov r8, rdi
New gcrReg live regs=00000040 {rsi}
gcrReg -[rdi]
gcrReg -[r8]
New byrReg live regs=00000000 {}
byrReg -[rcx]
[6D38A5C0] ptr arg pop 0
IN0010: 000055 E896F5FEFF call System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
IN0011: 00005A 33C0 xor eax, eax
IN0012: 00005C EB11 jmp SHORT G_M53660_IG07
;; bbWeight=1 PerfScore 4.00
G_M53660_IG06: ; func=00, offs=00005EH, size=0011H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
byrReg +[rdx]
IN0013: 00005E 488B542428 mov rdx, bword ptr [rsp+28H]
IN0014: 000063 4863C8 movsxd rcx, eax
IN0015: 000066 4533C0 xor r8d, r8d
IN0016: 000069 4C8904CA mov qword ptr [rdx+8*rcx], r8
IN0017: 00006D FFC0 inc eax
;; bbWeight=2 PerfScore 5.50
G_M53660_IG07: ; func=00, offs=00006FH, size=0007H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
New byrReg live regs=00000000 {}
byrReg -[rdx]
IN0018: 00006F 488B13 mov rdx, qword ptr [rbx]
IN0019: 000072 488B5208 mov rdx, qword ptr [rdx+8]
;; bbWeight=8 PerfScore 32.00
G_M53660_IG08: ; func=00, offs=000076H, size=0006H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref, isz
IN001a: 000076 3B442430 cmp eax, dword ptr [rsp+30H]
IN001b: 00007A 7CE2 jl SHORT G_M53660_IG06
;; bbWeight=8 PerfScore 16.00
G_M53660_IG09: ; func=00, offs=00007CH, size=0002H, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
gcrReg +[rax]
IN001c: 00007C 33C0 xor rax, rax
;; bbWeight=1 PerfScore 0.25
G_M53660_IG10: ; func=00, offs=00007EH, size=0008H, epilog, nogc, extend
IN0026: 00007E 4883C440 add rsp, 64
IN0027: 000082 5B pop rbx
IN0028: 000083 5E pop rsi
IN0029: 000084 5F pop rdi
IN002a: 000085 C3 ret
;; bbWeight=1 PerfScore 2.75New gcrReg live regs=00000000 {}
gcrReg -[rax]
gcrReg -[rsi]
Allocated method code size = 134 , actual size = 134
; Total bytes of code 134, prolog size 27, PerfScore 93.90, (MethodHash=992e2e63) for method System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
; ============================================================
*************** After end code gen, before unwindEmit()
G_M53660_IG01: ; func=00, offs=000000H, size=001BH, bbWeight=1 PerfScore 6.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN001d: 000000 push rdi
IN001e: 000001 push rsi
IN001f: 000002 push rbx
IN0020: 000003 sub rsp, 64
IN0021: 000007 xor rax, rax
IN0022: 000009 mov qword ptr [V02 rsp+28H], rax
IN0023: 00000E mov qword ptr [V02+0x8 rsp+30H], rax
IN0024: 000013 mov qword ptr [rsp+38H], rcx
IN0025: 000018 mov rsi, rcx
G_M53660_IG02: ; offs=00001BH, size=0015H, bbWeight=1 PerfScore 11.00, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref, isz
IN0001: 00001B mov rdi, gword ptr [rsi+16]
IN0002: 00001F mov rcx, qword ptr [rsi]
IN0003: 000022 mov rbx, qword ptr [rcx+56]
IN0004: 000026 mov rdx, qword ptr [rbx]
IN0005: 000029 cmp qword ptr [rdx+8], 96
IN0006: 00002E jle SHORT G_M53660_IG04
G_M53660_IG03: ; offs=000030H, size=000BH, bbWeight=0.40 PerfScore 2.10, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref, isz
IN0007: 000030 mov rdx, qword ptr [rdx+96]
IN0008: 000034 test rdx, rdx
IN0009: 000037 je SHORT G_M53660_IG04
IN000a: 000039 jmp SHORT G_M53660_IG05
G_M53660_IG04: ; offs=00003BH, size=0012H, bbWeight=0.10 PerfScore 0.15, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref
IN000b: 00003B mov rdx, 0x7FF9F1337FE8
IN000c: 000045 call CORINFO_HELP_RUNTIMEHANDLE_CLASS
IN000d: 00004A mov rdx, rax
G_M53660_IG05: ; offs=00004DH, size=0011H, bbWeight=1 PerfScore 4.00, gcrefRegs=000000C0 {rsi rdi}, byrefRegs=00000000 {}, byref, isz
IN000e: 00004D lea rcx, bword ptr [V02 rsp+28H]
IN000f: 000052 mov r8, rdi
IN0010: 000055 call System.Span`1[__Canon][System.__Canon]:.ctor(System.__Canon[]):this
IN0011: 00005A xor eax, eax
IN0012: 00005C jmp SHORT G_M53660_IG07
G_M53660_IG06: ; offs=00005EH, size=0011H, bbWeight=2 PerfScore 5.50, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
IN0013: 00005E mov rdx, bword ptr [V12 rsp+28H]
IN0014: 000063 movsxd rcx, eax
IN0015: 000066 xor r8d, r8d
IN0016: 000069 mov qword ptr [rdx+8*rcx], r8
IN0017: 00006D inc eax
G_M53660_IG07: ; offs=00006FH, size=0007H, bbWeight=8 PerfScore 32.00, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
IN0018: 00006F mov rdx, qword ptr [rbx]
IN0019: 000072 mov rdx, qword ptr [rdx+8]
G_M53660_IG08: ; offs=000076H, size=0006H, bbWeight=8 PerfScore 16.00, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref, isz
IN001a: 000076 cmp eax, dword ptr [V13 rsp+30H]
IN001b: 00007A jl SHORT G_M53660_IG06
G_M53660_IG09: ; offs=00007CH, size=0002H, bbWeight=1 PerfScore 0.25, gcrefRegs=00000040 {rsi}, byrefRegs=00000000 {}, byref
IN001c: 00007C xor rax, rax
G_M53660_IG10: ; offs=00007EH, size=0008H, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN0026: 00007E add rsp, 64
IN0027: 000082 pop rbx
IN0028: 000083 pop rsi
IN0029: 000084 pop rdi
IN002a: 000085 ret
*************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x000086 (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x07
CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
allocUnwindInfo(pHotCode=0x00007FF9F1139310, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x86, unwindSize=0xc, pUnwindBlock=0x000001626D2EDBA4, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 8
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x0000001B ( STACK_EMPTY )
IL offs 0x0015 : 0x0000005A ( STACK_EMPTY )
IL offs 0x0019 : 0x0000005E ( STACK_EMPTY )
IL offs 0x0027 : 0x0000006D ( STACK_EMPTY )
IL offs 0x002B : 0x0000006F ( STACK_EMPTY )
IL offs 0x0035 : 0x0000007C ( STACK_EMPTY )
IL offs EPILOG : 0x0000007E ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 4
*************** Variable debug info
4 live ranges
0( UNKNOWN) : From 00000000h to 0000001Bh, in rcx
3( UNKNOWN) : From 0000005Eh to 0000006Dh, in rax
3( UNKNOWN) : From 0000006Fh to 0000007Ch, in rax
0( UNKNOWN) : From 0000001Bh to 0000007Eh, in rsi
*************** In gcInfoBlockHdrSave()
Set code length to 134.
Set ReturnKind to Object.
Reporting this as generic context: referenced
Set generic instantiation context stack slot to -40, type is THIS.
Reporting this as generic context: referenced
Set prolog size 0x1b.
Set Outgoing stack arg area size to 32.
Stack slot id for offset 40 (0x28) (sp) (byref, untracked) = 0.
Reporting this as generic context: referenced
Stack slot id for offset 56 (0x38) (sp) (untracked) = 1.
Register slot id for reg rsi = 2.
Register slot id for reg rdi = 3.
Register slot id for reg rcx (byref) = 4.
Register slot id for reg r8 = 5.
Register slot id for reg rdx (byref) = 6.
Register slot id for reg rax = 7.
Set state of slot 2 at instr offset 0x1b to Live.
Set state of slot 3 at instr offset 0x1f to Live.
Set state of slot 4 at instr offset 0x52 to Live.
Set state of slot 5 at instr offset 0x55 to Live.
Set state of slot 3 at instr offset 0x5a to Dead.
Set state of slot 5 at instr offset 0x5a to Dead.
Set state of slot 4 at instr offset 0x5a to Dead.
Set state of slot 6 at instr offset 0x63 to Live.
Set state of slot 6 at instr offset 0x6f to Dead.
Set state of slot 7 at instr offset 0x7e to Live.
Set state of slot 7 at instr offset 0x86 to Dead.
Set state of slot 2 at instr offset 0x86 to Dead.
Defining interruptible range: [0x1b, 0x7e).
*************** Finishing PHASE Emit GC+EH tables
Method code size: 134
Allocations for System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this (MethodHash=992e2e63)
count: 2587, size: 169282, max = 3072
allocateMemory: 196608, nraUsed: 176488
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 6460 | 3.82%
ASTNode | 22688 | 13.40%
InstDesc | 5284 | 3.12%
ImpStack | 384 | 0.23%
BasicBlock | 6368 | 3.76%
fgArgInfo | 392 | 0.23%
fgArgInfoPtrArr | 56 | 0.03%
FlowList | 640 | 0.38%
TreeStatementList | 192 | 0.11%
SiScope | 352 | 0.21%
DominatorMemory | 624 | 0.37%
LSRA | 3888 | 2.30%
LSRA_Interval | 2400 | 1.42%
LSRA_RefPosition | 7168 | 4.23%
Reachability | 16 | 0.01%
SSA | 3056 | 1.81%
ValueNumber | 17397 | 10.28%
LvaTable | 2040 | 1.21%
UnwindInfo | 0 | 0.00%
hashBv | 568 | 0.34%
bitset | 440 | 0.26%
FixedBitVect | 36 | 0.02%
Generic | 3064 | 1.81%
LocalAddressVisitor | 512 | 0.30%
FieldSeqStore | 176 | 0.10%
ZeroOffsetFieldMap | 120 | 0.07%
ArrayInfoMap | 40 | 0.02%
MemoryPhiArg | 32 | 0.02%
CSE | 2752 | 1.63%
GC | 3016 | 1.78%
CorTailCallInfo | 0 | 0.00%
Inlining | 1632 | 0.96%
ArrayStack | 256 | 0.15%
DebugInfo | 448 | 0.26%
DebugOnly | 66909 | 39.53%
Codegen | 1176 | 0.69%
LoopOpt | 2560 | 1.51%
LoopHoist | 0 | 0.00%
Unknown | 604 | 0.36%
RangeCheck | 3648 | 2.15%
CopyProp | 1488 | 0.88%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 0 | 0.00%
ClassLayout | 112 | 0.07%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 288 | 0.17%
****** DONE compiling System.Collections.IndexerSet`1[__Canon][System.__Canon]:Span():System.__Canon:this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment