Skip to content

Instantly share code, notes, and snippets.

@Daniel-Svensson
Created June 14, 2025 16:43
Show Gist options
  • Save Daniel-Svensson/293af63ad844a7e94064fcb643e07a34 to your computer and use it in GitHub Desktop.
Save Daniel-Svensson/293af63ad844a7e94064fcb643e07a34 to your computer and use it in GitHub Desktop.
****** START compiling Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint (MethodHash=5d76c1ec)
Generating code for Windows x64
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
OPTIONS: optimizer should use profile data
IL to import:
IL_0000 02 ldarg.0
IL_0001 7b 67 00 00 04 ldfld 0x4000067
IL_0006 6e conv.u8
IL_0007 1f 20 ldc.i4.s 0x20
IL_0009 62 shl
IL_000a 02 ldarg.0
IL_000b 7b 69 00 00 04 ldfld 0x4000069
IL_0010 6e conv.u8
IL_0011 58 add
IL_0012 25 dup
IL_0013 20 00 ca 9a 3b ldc.i4 0x3B9ACA00
IL_0018 6a conv.i8
IL_0019 5c div.un
IL_001a 0a stloc.0
IL_001b 02 ldarg.0
IL_001c 06 ldloc.0
IL_001d 1f 20 ldc.i4.s 0x20
IL_001f 64 shr.un
IL_0020 6d conv.u4
IL_0021 7d 67 00 00 04 stfld 0x4000067
IL_0026 02 ldarg.0
IL_0027 06 ldloc.0
IL_0028 6d conv.u4
IL_0029 7d 69 00 00 04 stfld 0x4000069
IL_002e 06 ldloc.0
IL_002f 6d conv.u4
IL_0030 20 00 ca 9a 3b ldc.i4 0x3B9ACA00
IL_0035 5a mul
IL_0036 6e conv.u8
IL_0037 59 sub
IL_0038 1f 20 ldc.i4.s 0x20
IL_003a 62 shl
IL_003b 02 ldarg.0
IL_003c 7b 68 00 00 04 ldfld 0x4000068
IL_0041 6e conv.u8
IL_0042 58 add
IL_0043 25 dup
IL_0044 20 00 ca 9a 3b ldc.i4 0x3B9ACA00
IL_0049 6a conv.i8
IL_004a 5c div.un
IL_004b 6d conv.u4
IL_004c 0b stloc.1
IL_004d 02 ldarg.0
IL_004e 07 ldloc.1
IL_004f 7d 68 00 00 04 stfld 0x4000068
IL_0054 6d conv.u4
IL_0055 07 ldloc.1
IL_0056 20 00 ca 9a 3b ldc.i4 0x3B9ACA00
IL_005b 5a mul
IL_005c 59 sub
IL_005d 2a ret
1 return registers for return type int
[00..04) reg rax
Parameter V00 ABI info: [00..08) reg rcx
lvaGrabTemp returning 3 (V03 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
Local V03 should not be enregistered because: it is address exposed
; Initial local variable assignments
;
; V00 arg0 byref
; V01 loc0 long
; V02 loc1 int
; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
*************** In compInitDebuggingInfo() for Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 3
VarNum LVNum Name Beg End
0: 00h 00h V00 arg0 000h 05Eh
1: 01h 01h V01 loc0 000h 05Eh
2: 02h 02h V02 loc1 000h 05Eh
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
Marked V01 as a single def local
Marked V02 as a single def local
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [0000] [000..05E)
IL Code Size,Instr 94, 51, Basic Block count 1, Local Variable Num,Ref count 4, 13 for method Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
OPTIONS: opts.MinOpts() == false
Basic block list for 'Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
Trees after Pre-import
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Profile incorporation
BBOPT set, but no profile data available (hr=80004001)
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Canonicalize entry
*************** Finishing PHASE Canonicalize entry [no changes]
*************** Starting PHASE Importation
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint'
[ 0] 0 (0x000) ldarg.0
[ 1] 1 (0x001) ldfld 04000067
[ 1] 6 (0x006) conv.u8
[ 1] 7 (0x007) ldc.i4.s 32
[ 2] 9 (0x009) shl
[ 1] 10 (0x00a) ldarg.0
[ 2] 11 (0x00b) ldfld 04000069
[ 2] 16 (0x010) conv.u8
[ 2] 17 (0x011) add
[ 1] 18 (0x012) dup
lvaGrabTemp returning 4 (V04 tmp1) called for dup spill.
STMT00000 ( 0x000[E-] ... ??? )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
Marked V04 as a single def local
[ 2] 19 (0x013) ldc.i4 1000000000
[ 3] 24 (0x018) conv.i8
Folding long operator with constant nodes into a constant:
[000015] ----------- * CAST long <- int
[000014] ----------- \--* CNS_INT int 0x3B9ACA00
Bashed to long constant:
[000015] ----------- * CNS_INT long 0x3B9ACA00
[ 3] 25 (0x019) div.un
[ 2] 26 (0x01a) stloc.0
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
[ 1] 27 (0x01b) ldarg.0
[ 2] 28 (0x01c) ldloc.0
[ 3] 29 (0x01d) ldc.i4.s 32
[ 4] 31 (0x01f) shr.un
[ 3] 32 (0x020) conv.u4
[ 3] 33 (0x021) stfld 04000067
STMT00002 ( ??? ... ??? )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
[ 1] 38 (0x026) ldarg.0
[ 2] 39 (0x027) ldloc.0
[ 3] 40 (0x028) conv.u4
[ 3] 41 (0x029) stfld 04000069
STMT00003 ( ??? ... ??? )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
[ 1] 46 (0x02e) ldloc.0
[ 2] 47 (0x02f) conv.u4
[ 2] 48 (0x030) ldc.i4 1000000000
[ 3] 53 (0x035) mul
[ 2] 54 (0x036) conv.u8
[ 2] 55 (0x037) sub
[ 1] 56 (0x038) ldc.i4.s 32
[ 2] 58 (0x03a) shl
[ 1] 59 (0x03b) ldarg.0
[ 2] 60 (0x03c) ldfld 04000068
[ 2] 65 (0x041) conv.u8
[ 2] 66 (0x042) add
[ 1] 67 (0x043) dup
lvaGrabTemp returning 5 (V05 tmp2) called for dup spill.
STMT00004 ( ??? ... ??? )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
Marked V05 as a single def local
[ 2] 68 (0x044) ldc.i4 1000000000
[ 3] 73 (0x049) conv.i8
Folding long operator with constant nodes into a constant:
[000047] ----------- * CAST long <- int
[000046] ----------- \--* CNS_INT int 0x3B9ACA00
Bashed to long constant:
[000047] ----------- * CNS_INT long 0x3B9ACA00
[ 3] 74 (0x04a) div.un
[ 2] 75 (0x04b) conv.u4
[ 2] 76 (0x04c) stloc.1
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
[ 1] 77 (0x04d) ldarg.0
[ 2] 78 (0x04e) ldloc.1
[ 3] 79 (0x04f) stfld 04000068
STMT00006 ( ??? ... ??? )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0
[000052] ----------- \--* LCL_VAR int V02 loc1
[ 1] 84 (0x054) conv.u4
[ 1] 85 (0x055) ldloc.1
[ 2] 86 (0x056) ldc.i4 1000000000
[ 3] 91 (0x05b) mul
[ 2] 92 (0x05c) sub
[ 1] 93 (0x05d) ret
STMT00007 ( ??? ... ??? )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
*************** Finishing PHASE Importation
Trees after Importation
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0
[000052] ----------- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import [no changes]
*************** Starting PHASE Morph - Init
*************** Finishing PHASE Morph - Init [no changes]
*************** Starting PHASE Morph - Inlining
INLINER: no pgo data
**************** Inline Tree
Inlines into 060001C0 [via ExtendedDefaultPolicy] Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint:
Budget: initialTime=342, finalTime=342, initialBudget=6840, currentBudget=6840
Budget: initialSize=2274, finalSize=2274
*************** Finishing PHASE Morph - Inlining
Trees after Morph - Inlining
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0
[000052] ----------- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE DFS blocks and remove dead code 1
*************** Finishing PHASE DFS blocks and remove dead code 1 [no changes]
*************** Starting PHASE Allocate Objects
no newobjs or newarr in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks [no changes]
*************** 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 try/catch/fault
*************** In fgRemoveEmptyTryCatchOrTryFault()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try/catch/fault [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 Head and tail merge
*************** Finishing PHASE Head and tail merge
Trees after Head and tail merge
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0
[000052] ----------- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** 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
*************** Finishing PHASE Update flow graph early pass [no changes]
*************** Starting PHASE Morph - Promote Structs
lvaTable before fgPromoteStructs
; Initial local variable assignments
;
; V00 arg0 byref
; V01 loc0 long
; V02 loc1 int
; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V04 tmp1 long "dup spill"
; V05 tmp2 long "dup spill"
struct promotion of V03 is disabled because it has already been marked DNER
*************** Finishing PHASE Morph - Promote Structs [no changes]
*************** Starting PHASE DFS blocks and remove dead code 2
*************** Finishing PHASE DFS blocks and remove dead code 2 [no changes]
*************** Starting PHASE Morph - Structs/AddrExp
Identifying loops in DFS tree with following reverse post order:
RPO -> BB [pre, post]
00 -> BB01[0, 0]
Flow graph has no cycles; skipping identification of natural loops
LocalAddressVisitor visiting statement:
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
LocalAddressVisitor visiting statement:
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
LocalAddressVisitor visiting statement:
STMT00002 ( ??? ... 0x021 )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
LocalAddressVisitor visiting statement:
STMT00003 ( ??? ... 0x029 )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
LocalAddressVisitor visiting statement:
STMT00004 ( ??? ... 0x04C )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
LocalAddressVisitor visiting statement:
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
LocalAddressVisitor visiting statement:
STMT00006 ( ??? ... 0x04F )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0
[000052] ----------- \--* LCL_VAR int V02 loc1
LocalAddressVisitor visiting statement:
STMT00007 ( ??? ... 0x05D )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
*************** Finishing PHASE Morph - Structs/AddrExp [no changes]
*************** Starting PHASE Optimize mask conversions
Skipping. There are no converts of locals
*************** Finishing PHASE Optimize mask conversions [no changes]
*************** Starting PHASE Early liveness
Local V03 should not be enregistered because: struct size does not match reg size
Tracked variable (5 out of 6) table:
V00 arg0 [ byref]: refCnt = 6, refCntWtd = 0
V01 loc0 [ long]: refCnt = 4, refCntWtd = 0
V02 loc1 [ int]: refCnt = 3, refCntWtd = 0
V04 tmp1 [ long]: refCnt = 3, refCntWtd = 0
V05 tmp2 [ long]: refCnt = 3, refCntWtd = 0
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 }
DEF(4)={ V01 V02 V04 V05}
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00}
OUT(0)={ }
*************** Finishing PHASE Early liveness
Trees after Early liveness
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1 (last use)
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0 (last use)
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0 (last use)
[000052] ----------- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2 (last use)
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1 (last use)
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Forward Substitution
===> BB01
[000011]: next stmt has non-last use
[000017]: next stmt has non-last use
[000043]: next stmt has non-last use
[000050]: next stmt has non-last use
*************** Finishing PHASE Forward Substitution [no changes]
*************** Starting PHASE Physical promotion
*************** Finishing PHASE Physical promotion [no changes]
*************** Starting PHASE Identify candidates for implicit byref copy omission
*************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes]
*************** Starting PHASE Morph - ByRefs
*************** Finishing PHASE Morph - ByRefs [no changes]
*************** Starting PHASE Morph - Global
Cross-block table size 64 (for 5 tracked locals)
Morphing BB01
BB01 ineligible for cross-block
Assertions in: #NA
fgMorphTree BB01, STMT00000 (before)
[000011] DA-XG------ * STORE_LCL_VAR long V04 tmp1
[000010] ---XG------ \--* ADD long
[000005] ---XG------ +--* LSH long
[000003] ---XG----U- | +--* CAST long <- ulong <- uint
[000002] n--XG------ | | \--* IND int
[000001] ---X------- | | \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000000] ----------- | | \--* LCL_VAR byref V00 arg0
[000004] ----------- | \--* CNS_INT int 32
[000009] ---XG----U- \--* CAST long <- ulong <- uint
[000008] n--XG------ \--* IND int
[000007] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000006] ----------- \--* LCL_VAR byref V00 arg0
Final value of Compiler::fgMorphFieldAddr after morphing:
[000062] -----+----- * ADD byref
[000000] -----+----- +--* LCL_VAR byref V00 arg0
[000061] -----+----- \--* CNS_INT long 4
GenTreeNode creates assertion:
[000002] ---XG+----- * IND int
In BB01 New Local Constant Assertion: V00 != 0, index = #01
Final value of Compiler::fgMorphFieldAddr after morphing:
[000064] -----+----- * ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
fgMorphTree BB01, STMT00000 (after)
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
fgMorphTree BB01, STMT00001 (before)
[000017] DA--------- * STORE_LCL_VAR long V01 loc0
[000016] ----------- \--* UDIV long
[000013] ----------- +--* LCL_VAR long V04 tmp1
[000015] ----------- \--* CNS_INT long 0x3B9ACA00
fgMorphTree BB01, STMT00002 (before)
[000024] nA-XG------ * STOREIND int
[000023] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:uhi
[000018] ----------- | \--* LCL_VAR byref V00 arg0
[000022] ----------- \--* CAST int <- uint <- long
[000021] ----------- \--* RSZ long
[000019] ----------- +--* LCL_VAR long V01 loc0
[000020] ----------- \--* CNS_INT int 32
Final value of Compiler::fgMorphFieldAddr after morphing:
[000066] -----+----- * ADD byref
[000018] -----+----- +--* LCL_VAR byref V00 arg0
[000065] -----+----- \--* CNS_INT long 4
Non-null assertion prop for indirection [000024] in BB01:
fgMorphTree BB01, STMT00002 (after)
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
fgMorphTree BB01, STMT00003 (before)
[000029] nA-XG------ * STOREIND int
[000028] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:umid
[000025] ----------- | \--* LCL_VAR byref V00 arg0
[000027] ----------- \--* CAST int <- uint <- long
[000026] ----------- \--* LCL_VAR long V01 loc0
Final value of Compiler::fgMorphFieldAddr after morphing:
[000068] -----+----- * ADD byref
[000025] -----+----- +--* LCL_VAR byref V00 arg0
[000067] -----+----- \--* CNS_INT long 12
Non-null assertion prop for indirection [000029] in BB01:
fgMorphTree BB01, STMT00003 (after)
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
fgMorphTree BB01, STMT00004 (before)
[000043] DA-XG------ * STORE_LCL_VAR long V05 tmp2
[000042] ---XG------ \--* ADD long
[000037] ----------- +--* LSH long
[000035] ----------- | +--* SUB long
[000012] ----------- | | +--* LCL_VAR long V04 tmp1 (last use)
[000034] ---------U- | | \--* CAST long <- ulong <- uint
[000033] ----------- | | \--* MUL int
[000031] ----------- | | +--* CAST int <- uint <- long
[000030] ----------- | | | \--* LCL_VAR long V01 loc0 (last use)
[000032] ----------- | | \--* CNS_INT int 0x3B9ACA00
[000036] ----------- | \--* CNS_INT int 32
[000041] ---XG----U- \--* CAST long <- ulong <- uint
[000040] n--XG------ \--* IND int
[000039] ---X------- \--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000038] ----------- \--* LCL_VAR byref V00 arg0
Final value of Compiler::fgMorphFieldAddr after morphing:
[000070] -----+----- * ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
Non-null assertion prop for indirection [000040] in BB01:
fgMorphTree BB01, STMT00004 (after)
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1 (last use)
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0 (last use)
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
fgMorphTree BB01, STMT00005 (before)
[000050] DA--------- * STORE_LCL_VAR int V02 loc1
[000049] ----------- \--* CAST int <- uint <- long
[000048] ----------- \--* UDIV long
[000045] ----------- +--* LCL_VAR long V05 tmp2
[000047] ----------- \--* CNS_INT long 0x3B9ACA00
fgMorphTree BB01, STMT00006 (before)
[000054] nA-XG------ * STOREIND int
[000053] ---X------- +--* FIELD_ADDR byref Managed.New.Decimal+DecCalc:ulo
[000051] ----------- | \--* LCL_VAR byref V00 arg0 (last use)
[000052] ----------- \--* LCL_VAR int V02 loc1
Final value of Compiler::fgMorphFieldAddr after morphing:
[000072] -----+----- * ADD byref
[000051] -----+----- +--* LCL_VAR byref V00 arg0 (last use)
[000071] -----+----- \--* CNS_INT long 8
Non-null assertion prop for indirection [000054] in BB01:
fgMorphTree BB01, STMT00006 (after)
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0 (last use)
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
fgMorphTree BB01, STMT00007 (before)
[000060] ----------- * RETURN int
[000059] ----------- \--* SUB int
[000055] ----------- +--* CAST int <- uint <- long
[000044] ----------- | \--* LCL_VAR long V05 tmp2 (last use)
[000058] ----------- \--* MUL int
[000056] ----------- +--* LCL_VAR int V02 loc1 (last use)
[000057] ----------- \--* CNS_INT int 0x3B9ACA00
fgMorphTree BB01, STMT00007 (after)
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2 (last use)
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1 (last use)
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
morph assertion stats: 64 table size, 1 assertions, 0 dropped
*************** Finishing PHASE Morph - Global
Trees after Morph - Global
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1 (last use)
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0 (last use)
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0 (last use)
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2 (last use)
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1 (last use)
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Post-Morph
*************** In fgMarkDemotedImplicitByRefArgs()
*************** Finishing PHASE Post-Morph
Trees after Post-Morph
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie [no changes]
*************** Starting PHASE Compute block weights
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute block weights [no changes]
*************** Starting PHASE Remove empty finally 2
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally 2 [no changes]
*************** Starting PHASE Remove empty try 2
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try 2 [no changes]
*************** Starting PHASE Remove empty try-catch-fault 2
*************** In fgRemoveEmptyTryCatchOrTryFault()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try-catch-fault 2 [no changes]
*************** Starting PHASE Invert loops
Identifying loops in DFS tree with following reverse post order:
RPO -> BB [pre, post]
00 -> BB01[0, 0]
Flow graph has no cycles; skipping identification of natural loops
*************** Finishing PHASE Invert loops
Trees after Invert loops
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Optimize control flow
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgExpandRarelyRunBlocks()
*************** Finishing PHASE Optimize control flow [no changes]
*************** Starting PHASE Post-morph head and tail merge
*************** Finishing PHASE Post-morph head and tail merge
Trees after Post-morph head and tail merge
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE DFS blocks and remove dead code 3
*************** Finishing PHASE DFS blocks and remove dead code 3 [no changes]
*************** Starting PHASE Find loops
*************** In optFindLoopsPhase()
Identifying loops in DFS tree with following reverse post order:
RPO -> BB [pre, post]
00 -> BB01[0, 0]
Flow graph has no cycles; skipping identification of natural loops
*************** Finishing PHASE Find loops
Trees after Find loops
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Repair profile post-morph
No PGO data. Skipping profile repair.
*************** Finishing PHASE Repair profile post-morph [no changes]
*************** Starting PHASE Set block weights
After computing the dominance tree:
After computing reachability sets:
------------------------------------------------
BBnum Reachable by
------------------------------------------------
BB01 : BB01
Return blocks: BB01
*************** Finishing PHASE Set block weights [no changes]
*************** Starting PHASE Clone loops
*************** In optCloneLoops()
No loops to clone
*************** Finishing PHASE Clone loops [no changes]
*************** Starting PHASE Unroll loops
*************** Finishing PHASE Unroll loops [no changes]
*************** Starting PHASE Compute dominators
*************** Finishing PHASE Compute dominators [no changes]
*************** Starting PHASE Morph array ops
No multi-dimensional array references in the function
*************** Finishing PHASE Morph array ops [no changes]
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
*** marking local variables in block BB01 (weight=1)
STMT00000 ( 0x000[E-] ... 0x01A )
[000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
[000010] ---XG+----- \--* ADD long
[000005] ---XG+----- +--* LSH long
[000003] ---XG+---U- | +--* CAST long <- ulong <- uint
[000002] ---XG+----- | | \--* IND int
[000062] -----+----- | | \--* ADD byref
[000000] -----+----- | | +--* LCL_VAR byref V00 arg0
[000061] -----+----- | | \--* CNS_INT long 4
[000004] -----+----- | \--* CNS_INT int 32
[000009] ---XG+---U- \--* CAST long <- ulong <- uint
[000008] ---XG+----- \--* IND int
[000064] -----+----- \--* ADD byref
[000006] -----+----- +--* LCL_VAR byref V00 arg0
[000063] -----+----- \--* CNS_INT long 12
New refCnts for V04: refCnt = 1, refCntWtd = 2
V04 needs explicit zero init. Disqualified as a single-def register candidate.
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 2, refCntWtd = 2
STMT00001 ( ??? ... ??? )
[000017] DA---+----- * STORE_LCL_VAR long V01 loc0
[000016] -----+----- \--* UDIV long
[000013] -----+----- +--* LCL_VAR long V04 tmp1
[000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
New refCnts for V01: refCnt = 1, refCntWtd = 1
V01 needs explicit zero init. Disqualified as a single-def register candidate.
New refCnts for V04: refCnt = 2, refCntWtd = 4
STMT00002 ( ??? ... 0x021 )
[000024] nA--G+----- * STOREIND int
[000066] -----+----- +--* ADD byref
[000018] -----+----- | +--* LCL_VAR byref V00 arg0
[000065] -----+----- | \--* CNS_INT long 4
[000022] -----+----- \--* CAST int <- uint <- long
[000021] -----+----- \--* RSZ long
[000019] -----+----- +--* LCL_VAR long V01 loc0
[000020] -----+----- \--* CNS_INT int 32
New refCnts for V00: refCnt = 3, refCntWtd = 3
New refCnts for V01: refCnt = 2, refCntWtd = 2
STMT00003 ( ??? ... 0x029 )
[000029] nA--G+----- * STOREIND int
[000068] -----+----- +--* ADD byref
[000025] -----+----- | +--* LCL_VAR byref V00 arg0
[000067] -----+----- | \--* CNS_INT long 12
[000026] -----+----- \--* LCL_VAR int V01 loc0
New refCnts for V00: refCnt = 4, refCntWtd = 4
New refCnts for V01: refCnt = 3, refCntWtd = 3
STMT00004 ( ??? ... 0x04C )
[000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
[000042] ----G+----- \--* ADD long
[000037] -----+----- +--* LSH long
[000035] -----+----- | +--* SUB long
[000012] -----+----- | | +--* LCL_VAR long V04 tmp1
[000034] -----+---U- | | \--* CAST long <- ulong <- uint
[000033] -----+----- | | \--* MUL int
[000030] -----+----- | | +--* LCL_VAR int V01 loc0
[000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
[000036] -----+----- | \--* CNS_INT int 32
[000041] ----G+---U- \--* CAST long <- ulong <- uint
[000040] n---G+----- \--* IND int
[000070] -----+----- \--* ADD byref
[000038] -----+----- +--* LCL_VAR byref V00 arg0
[000069] -----+----- \--* CNS_INT long 8
New refCnts for V05: refCnt = 1, refCntWtd = 2
V05 needs explicit zero init. Disqualified as a single-def register candidate.
New refCnts for V04: refCnt = 3, refCntWtd = 6
New refCnts for V01: refCnt = 4, refCntWtd = 4
New refCnts for V00: refCnt = 5, refCntWtd = 5
STMT00005 ( ??? ... ??? )
[000050] DA---+----- * STORE_LCL_VAR int V02 loc1
[000049] -----+----- \--* CAST int <- uint <- long
[000048] -----+----- \--* UDIV long
[000045] -----+----- +--* LCL_VAR long V05 tmp2
[000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
New refCnts for V02: refCnt = 1, refCntWtd = 1
V02 needs explicit zero init. Disqualified as a single-def register candidate.
New refCnts for V05: refCnt = 2, refCntWtd = 4
STMT00006 ( ??? ... 0x04F )
[000054] nA--G+----- * STOREIND int
[000072] -----+----- +--* ADD byref
[000051] -----+----- | +--* LCL_VAR byref V00 arg0
[000071] -----+----- | \--* CNS_INT long 8
[000052] -----+----- \--* LCL_VAR int V02 loc1
New refCnts for V00: refCnt = 6, refCntWtd = 6
New refCnts for V02: refCnt = 2, refCntWtd = 2
STMT00007 ( ??? ... 0x05D )
[000060] -----+----- * RETURN int
[000059] -----+----- \--* SUB int
[000044] -----+----- +--* LCL_VAR int V05 tmp2
[000058] -----+----- \--* MUL int
[000056] -----+----- +--* LCL_VAR int V02 loc1
[000057] -----+----- \--* CNS_INT int 0x3B9ACA00
New refCnts for V05: refCnt = 3, refCntWtd = 6
New refCnts for V02: refCnt = 3, refCntWtd = 3
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 7, refCntWtd = 7
New refCnts for V00: refCnt = 8, refCntWtd = 8
*************** Finishing PHASE Mark local vars [no changes]
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
Trees after Find oper order
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
( 13, 15) [000010] ---XG+----- \--* ADD long
( 7, 8) [000005] ---XG+----- +--* LSH long
( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint
( 4, 4) [000002] ---XG+----- | | \--* IND int
( 2, 2) [000062] -----+-N--- | | \--* ADD byref
( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0
( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4
( 1, 1) [000004] -----+----- | \--* CNS_INT int 32
( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint
( 4, 4) [000008] ---XG+----- \--* IND int
( 2, 2) [000064] -----+-N--- \--* ADD byref
( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0
( 1, 1) [000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0
( 22, 8) [000016] -----+----- \--* UDIV long
( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1
( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
( 9, 10) [000024] nA--G+--R-- * STOREIND int
( 2, 2) [000066] -----+-N--- +--* ADD byref
( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0
( 1, 1) [000065] -----+----- | \--* CNS_INT long 4
( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long
( 3, 3) [000021] -----+----- \--* RSZ long
( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0
( 1, 1) [000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
( 6, 6) [000029] nA--G+----- * STOREIND int
( 2, 2) [000068] -----+-N--- +--* ADD byref
( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0
( 1, 1) [000067] -----+----- | \--* CNS_INT long 12
( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
( 17, 21) [000042] ----G+----- \--* ADD long
( 11, 14) [000037] -----+----- +--* LSH long
( 9, 12) [000035] -----+----- | +--* SUB long
( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1
( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint
( 6, 8) [000033] -----+----- | | \--* MUL int
( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0
( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
( 1, 1) [000036] -----+----- | \--* CNS_INT int 32
( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint
( 4, 4) [000040] n---G+----- \--* IND int
( 2, 2) [000070] -----+-N--- \--* ADD byref
( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0
( 1, 1) [000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1
( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long
( 22, 8) [000048] -----+----- \--* UDIV long
( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2
( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
( 6, 6) [000054] nA--G+----- * STOREIND int
( 2, 2) [000072] -----+-N--- +--* ADD byref
( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0
( 1, 1) [000071] -----+----- | \--* CNS_INT long 8
( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
( 9, 11) [000060] -----+----- * RETURN int
( 8, 10) [000059] -----+----- \--* SUB int
( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2
( 6, 8) [000058] -----+----- \--* MUL int
( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1
( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 15 tree nodes
*************** Finishing PHASE Set block order
Trees after Set block order
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint
N011 ( 4, 4) [000008] ---XG+----- \--* IND int
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0
N003 ( 22, 8) [000016] -----+----- \--* UDIV long
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long
N003 ( 3, 3) [000021] -----+----- \--* RSZ long
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2
N014 ( 17, 21) [000042] ----G+----- \--* ADD long
N008 ( 11, 14) [000037] -----+----- +--* LSH long
N006 ( 9, 12) [000035] -----+----- | +--* SUB long
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint
N012 ( 4, 4) [000040] n---G+----- \--* IND int
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long
N003 ( 22, 8) [000048] -----+----- \--* UDIV long
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
N006 ( 9, 11) [000060] -----+----- * RETURN int
N005 ( 8, 10) [000059] -----+----- \--* SUB int
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2
N004 ( 6, 8) [000058] -----+----- \--* MUL int
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Build SSA representation
*************** In SsaBuilder::Build()
*************** In fgLocalVarLiveness()
In fgLocalVarLivenessInit
Local V03 should not be enregistered because: struct size does not match reg size
Tracked variable (5 out of 6) table:
V00 arg0 [ byref]: refCnt = 8, refCntWtd = 8
V04 tmp1 [ long]: refCnt = 3, refCntWtd = 6
V05 tmp2 [ long]: refCnt = 3, refCntWtd = 6
V01 loc0 [ long]: refCnt = 4, refCntWtd = 4
V02 loc1 [ int]: refCnt = 3, refCntWtd = 3
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(4)={ V04 V05 V01 V02} + ByrefExposed + GcHeap
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00} + ByrefExposed + GcHeap
OUT(0)={ }
*************** In optRemoveRedundantZeroInits()
Analyzing BB01
Marking V04 as having an explicit init
Marking V01 as having an explicit init
Marking V05 as having an explicit init
Marking V02 as having an explicit init
*************** In SsaBuilder::InsertPhiFunctions()
Inserting phi functions:
*************** In SsaBuilder::RenameVariables()
V00.1: defined in BB00 6 uses (global)
V01.1: defined in BB01 3 uses (local)
V02.1: defined in BB01 2 uses (local)
V04.1: defined in BB01 2 uses (local)
V05.1: defined in BB01 2 uses (local)
*************** Finishing PHASE Build SSA representation
Trees after Build SSA representation
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
SSA MEM: ByrefExposed, GcHeap = m:1
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint
N011 ( 4, 4) [000008] ---XG+----- \--* IND int
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1
N003 ( 22, 8) [000016] -----+----- \--* UDIV long
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long
N003 ( 3, 3) [000021] -----+----- \--* RSZ long
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1
N014 ( 17, 21) [000042] ----G+----- \--* ADD long
N008 ( 11, 14) [000037] -----+----- +--* LSH long
N006 ( 9, 12) [000035] -----+----- | +--* SUB long
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use)
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use)
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint
N012 ( 4, 4) [000040] n---G+----- \--* IND int
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long
N003 ( 22, 8) [000048] -----+----- \--* UDIV long
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use)
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
N006 ( 9, 11) [000060] -----+----- * RETURN int
N005 ( 8, 10) [000059] -----+----- \--* SUB int
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use)
N004 ( 6, 8) [000058] -----+----- \--* MUL int
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use)
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00
SSA MEM: ByrefExposed, GcHeap = m:2
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[info] HasGlobalUse overestimated for V00.1
SSA checks completed successfully
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Early Value Propagation
no arrays or null checks in the method
*************** Finishing PHASE Early Value Propagation [no changes]
*************** Starting PHASE Do value numbering
*************** In fgValueNumber()
Memory Initial Value in BB01 is: $c0
Visiting BB01
The SSA definition for ByrefExposed (#1) at start of BB01 is $c0 {InitVal($41)}
The SSA definition for GcHeap (#1) at start of BB01 is $c0 {InitVal($41)}
***** BB01, STMT00000(before)
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint
N011 ( 4, 4) [000008] ---XG+----- \--* IND int
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12
N001 [000000] LCL_VAR V00 arg0 u:1 => $80 {InitVal($40)}
N002 [000061] CNS_INT 4 => $100 {LngCns 4}
N003 [000062] ADD => $140 {ADD($80, $100)}
N004 [000002] IND => <l:$281 {norm=$180 {ByrefExposedLoad($42, $140, $c0)}, exc=$240 {NullPtrExc($80)}}, c:$280 {norm=$1c0 {MemOpaque:NotInLoop}, exc=$240 {NullPtrExc($80)}}>
N005 [000003] CAST => <l:$2c1 {norm=$2c0 {$180, long <- ulong <- uint}, exc=$240 {NullPtrExc($80)}}, c:$2c3 {norm=$2c2 {$1c0, long <- ulong <- uint}, exc=$240 {NullPtrExc($80)}}>
N006 [000004] CNS_INT 32 => $44 {IntCns 32}
N007 [000005] LSH => <l:$2c7 {norm=$2c4 {LSH($2c0, $44)}, exc=$240 {NullPtrExc($80)}}, c:$2c6 {norm=$2c5 {LSH($2c2, $44)}, exc=$240 {NullPtrExc($80)}}>
N008 [000006] LCL_VAR V00 arg0 u:1 => $80 {InitVal($40)}
N009 [000063] CNS_INT 12 => $102 {LngCns 12}
N010 [000064] ADD => $141 {ADD($80, $102)}
N011 [000008] IND => <l:$283 {norm=$181 {ByrefExposedLoad($42, $141, $c0)}, exc=$240 {NullPtrExc($80)}}, c:$282 {norm=$1c1 {MemOpaque:NotInLoop}, exc=$240 {NullPtrExc($80)}}>
N012 [000009] CAST => <l:$2c9 {norm=$2c8 {$181, long <- ulong <- uint}, exc=$240 {NullPtrExc($80)}}, c:$2cb {norm=$2ca {$1c1, long <- ulong <- uint}, exc=$240 {NullPtrExc($80)}}>
N013 [000010] ADD => <l:$2cf {norm=$2cc {ADD($2c4, $2c8)}, exc=$240 {NullPtrExc($80)}}, c:$2ce {norm=$2cd {ADD($2c5, $2ca)}, exc=$240 {NullPtrExc($80)}}>
Tree [000011] assigned VN to local var V04/1: <l:$2cc {ADD($2c4, $2c8)}, c:$2cd {ADD($2c5, $2ca)}>
N014 [000011] STORE_LCL_VAR V04 tmp1 d:1 => $241 {norm=$VN.Void, exc=$240 {NullPtrExc($80)}}
***** BB01, STMT00000(after)
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] ---XG+----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref $141
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12 $102
---------
***** BB01, STMT00001(before)
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1
N003 ( 22, 8) [000016] -----+----- \--* UDIV long
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00
N001 [000013] LCL_VAR V04 tmp1 u:1 => <l:$2cc {ADD($2c4, $2c8)}, c:$2cd {ADD($2c5, $2ca)}>
N002 [000015] CNS_INT 0x3B9ACA00 => $103 {LngCns 0x3B9ACA00}
N003 [000016] UDIV => <l:$2d0 {UDIV($2cc, $103)}, c:$2d1 {UDIV($2cd, $103)}>
Tree [000017] assigned VN to local var V01/1: <l:$2d0 {UDIV($2cc, $103)}, c:$2d1 {UDIV($2cd, $103)}>
N004 [000017] STORE_LCL_VAR V01 loc0 d:1 => $VN.Void
***** BB01, STMT00001(after)
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] -----+----- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
---------
***** BB01, STMT00002(before)
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long
N003 ( 3, 3) [000021] -----+----- \--* RSZ long
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32
N001 [000019] LCL_VAR V01 loc0 u:1 => <l:$2d0 {UDIV($2cc, $103)}, c:$2d1 {UDIV($2cd, $103)}>
N002 [000020] CNS_INT 32 => $44 {IntCns 32}
N003 [000021] RSZ => <l:$2d2 {RSZ($2d0, $44)}, c:$2d3 {RSZ($2d1, $44)}>
N004 [000022] CAST => <l:$284 {$2d2, int <- uint <- long}, c:$285 {$2d3, int <- uint <- long}>
N005 [000018] LCL_VAR V00 arg0 u:1 => $80 {InitVal($40)}
N006 [000065] CNS_INT 4 => $100 {LngCns 4}
N007 [000066] ADD => $140 {ADD($80, $100)}
fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000024] to VN: $c1.
N008 [000024] STOREIND => $VN.Void
***** BB01, STMT00002(after)
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int $VN.Void
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref $140
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4 $100
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long <l:$284, c:$285>
N003 ( 3, 3) [000021] -----+----- \--* RSZ long <l:$2d2, c:$2d3>
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32 $44
---------
***** BB01, STMT00003(before)
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1
N001 [000025] LCL_VAR V00 arg0 u:1 => $80 {InitVal($40)}
N002 [000067] CNS_INT 12 => $102 {LngCns 12}
N003 [000068] ADD => $141 {ADD($80, $102)}
N004 [000026] LCL_VAR V01 loc0 u:1 => <l:$286 {$2d0, int <- long}, c:$287 {$2d1, int <- long}>
fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000029] to VN: $c2.
N005 [000029] STOREIND => $VN.Void
***** BB01, STMT00003(after)
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref $141
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12 $102
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
---------
***** BB01, STMT00004(before)
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1
N014 ( 17, 21) [000042] ----G+----- \--* ADD long
N008 ( 11, 14) [000037] -----+----- +--* LSH long
N006 ( 9, 12) [000035] -----+----- | +--* SUB long
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use)
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use)
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint
N012 ( 4, 4) [000040] n---G+----- \--* IND int
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8
N001 [000012] LCL_VAR V04 tmp1 u:1 (last use) => <l:$2cc {ADD($2c4, $2c8)}, c:$2cd {ADD($2c5, $2ca)}>
N002 [000030] LCL_VAR V01 loc0 u:1 (last use) => <l:$286 {$2d0, int <- long}, c:$287 {$2d1, int <- long}>
N003 [000032] CNS_INT 0x3B9ACA00 => $47 {IntCns 0x3B9ACA00}
N004 [000033] MUL => <l:$288 {MUL($47, $286)}, c:$289 {MUL($47, $287)}>
N005 [000034] CAST => <l:$2d4 {$288, long <- ulong <- uint}, c:$2d5 {$289, long <- ulong <- uint}>
N006 [000035] SUB => <l:$2d6 {SUB($2cc, $2d4)}, c:$2d7 {SUB($2cd, $2d5)}>
N007 [000036] CNS_INT 32 => $44 {IntCns 32}
N008 [000037] LSH => <l:$2d8 {LSH($2d6, $44)}, c:$2d9 {LSH($2d7, $44)}>
N009 [000038] LCL_VAR V00 arg0 u:1 => $80 {InitVal($40)}
N010 [000069] CNS_INT 8 => $105 {LngCns 8}
N011 [000070] ADD => $142 {ADD($80, $105)}
N012 [000040] IND => <l:$182 {ByrefExposedLoad($42, $142, $c2)}, c:$1c2 {MemOpaque:NotInLoop}>
N013 [000041] CAST => <l:$2da {$182, long <- ulong <- uint}, c:$2db {$1c2, long <- ulong <- uint}>
N014 [000042] ADD => <l:$2dc {ADD($2d8, $2da)}, c:$2dd {ADD($2d9, $2db)}>
Tree [000043] assigned VN to local var V05/1: <l:$2dc {ADD($2d8, $2da)}, c:$2dd {ADD($2d9, $2db)}>
N015 [000043] STORE_LCL_VAR V05 tmp2 d:1 => $VN.Void
***** BB01, STMT00004(after)
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N014 ( 17, 21) [000042] ----G+----- \--* ADD long <l:$2dc, c:$2dd>
N008 ( 11, 14) [000037] -----+----- +--* LSH long <l:$2d8, c:$2d9>
N006 ( 9, 12) [000035] -----+----- | +--* SUB long <l:$2d6, c:$2d7>
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint <l:$2d4, c:$2d5>
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int <l:$288, c:$289>
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00 $47
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32 $44
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint <l:$2da, c:$2db>
N012 ( 4, 4) [000040] n---G+----- \--* IND int <l:$182, c:$1c2>
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref $142
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8 $105
---------
***** BB01, STMT00005(before)
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long
N003 ( 22, 8) [000048] -----+----- \--* UDIV long
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00
N001 [000045] LCL_VAR V05 tmp2 u:1 => <l:$2dc {ADD($2d8, $2da)}, c:$2dd {ADD($2d9, $2db)}>
N002 [000047] CNS_INT 0x3B9ACA00 => $103 {LngCns 0x3B9ACA00}
N003 [000048] UDIV => <l:$2de {UDIV($2dc, $103)}, c:$2df {UDIV($2dd, $103)}>
N004 [000049] CAST => <l:$28a {$2de, int <- uint <- long}, c:$28b {$2df, int <- uint <- long}>
Tree [000050] assigned VN to local var V02/1: <l:$28a {$2de, int <- uint <- long}, c:$28b {$2df, int <- uint <- long}>
N005 [000050] STORE_LCL_VAR V02 loc1 d:1 => $VN.Void
***** BB01, STMT00005(after)
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] -----+----- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
---------
***** BB01, STMT00006(before)
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use)
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1
N001 [000051] LCL_VAR V00 arg0 u:1 (last use) => $80 {InitVal($40)}
N002 [000071] CNS_INT 8 => $105 {LngCns 8}
N003 [000072] ADD => $142 {ADD($80, $105)}
N004 [000052] LCL_VAR V02 loc1 u:1 => <l:$28a {$2de, int <- uint <- long}, c:$28b {$2df, int <- uint <- long}>
fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000054] to VN: $c3.
N005 [000054] STOREIND => $VN.Void
***** BB01, STMT00006(after)
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref $142
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use) $80
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8 $105
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
---------
***** BB01, STMT00007(before)
N006 ( 9, 11) [000060] -----+----- * RETURN int
N005 ( 8, 10) [000059] -----+----- \--* SUB int
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use)
N004 ( 6, 8) [000058] -----+----- \--* MUL int
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use)
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00
N001 [000044] LCL_VAR V05 tmp2 u:1 (last use) => <l:$28c {$2dc, int <- long}, c:$28d {$2dd, int <- long}>
N002 [000056] LCL_VAR V02 loc1 u:1 (last use) => <l:$28a {$2de, int <- uint <- long}, c:$28b {$2df, int <- uint <- long}>
N003 [000057] CNS_INT 0x3B9ACA00 => $47 {IntCns 0x3B9ACA00}
N004 [000058] MUL => <l:$28e {MUL($47, $28a)}, c:$28f {MUL($47, $28b)}>
N005 [000059] SUB => <l:$290 {SUB($28c, $28e)}, c:$291 {SUB($28d, $28f)}>
N006 [000060] RETURN => $VN.Void
***** BB01, STMT00007(after)
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
N005 ( 8, 10) [000059] -----+----- \--* SUB int <l:$290, c:$291>
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N004 ( 6, 8) [000058] -----+----- \--* MUL int <l:$28e, c:$28f>
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00 $47
*************** Finishing PHASE Do value numbering
Trees after Do value numbering
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
SSA MEM: ByrefExposed, GcHeap = m:1
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] ---XG+----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref $141
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12 $102
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] -----+----- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int $VN.Void
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref $140
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4 $100
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long <l:$284, c:$285>
N003 ( 3, 3) [000021] -----+----- \--* RSZ long <l:$2d2, c:$2d3>
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32 $44
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref $141
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12 $102
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N014 ( 17, 21) [000042] ----G+----- \--* ADD long <l:$2dc, c:$2dd>
N008 ( 11, 14) [000037] -----+----- +--* LSH long <l:$2d8, c:$2d9>
N006 ( 9, 12) [000035] -----+----- | +--* SUB long <l:$2d6, c:$2d7>
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint <l:$2d4, c:$2d5>
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int <l:$288, c:$289>
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00 $47
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32 $44
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint <l:$2da, c:$2db>
N012 ( 4, 4) [000040] n---G+----- \--* IND int <l:$182, c:$1c2>
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref $142
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8 $105
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] -----+----- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref $142
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use) $80
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8 $105
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
N005 ( 8, 10) [000059] -----+----- \--* SUB int <l:$290, c:$291>
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N004 ( 6, 8) [000058] -----+----- \--* MUL int <l:$28e, c:$28f>
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00 $47
SSA MEM: ByrefExposed, GcHeap = m:2
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[info] HasGlobalUse overestimated for V00.1
SSA checks completed successfully
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Hoist loop code
No loops; no hoisting
*************** Finishing PHASE Hoist loop code [no changes]
*************** Starting PHASE VN based copy prop
Copy Assertion for BB01
curSsaName stack: { }
Live vars after [000011]: {V00} +{V04} => {V00 V04}
orig [000013] copy [000000] VNs proved equivalent
Live vars after [000017]: {V00 V04} +{V01} => {V00 V01 V04}
orig [000019] copy [000000] VNs proved equivalent
orig [000019] copy [000011] VNs proved equivalent
orig [000018] copy [000017] VNs proved equivalent
orig [000018] copy [000011] VNs proved equivalent
orig [000025] copy [000017] VNs proved equivalent
orig [000025] copy [000011] VNs proved equivalent
orig [000026] copy [000000] VNs proved equivalent
orig [000026] copy [000011] VNs proved equivalent
Live vars after [000012]: {V00 V01 V04} -{V04} => {V00 V01}
orig [000012] copy [000000] VNs proved equivalent
orig [000012] copy [000017] VNs proved equivalent
Live vars after [000030]: {V00 V01} -{V01} => {V00}
orig [000030] copy [000000] VNs proved equivalent
orig [000030] copy [000011] VNs proved equivalent
orig [000038] copy [000017] VNs proved equivalent
orig [000038] copy [000011] VNs proved equivalent
Live vars after [000043]: {V00} +{V05} => {V00 V05}
orig [000045] copy [000000] VNs proved equivalent
orig [000045] copy [000017] VNs proved equivalent
orig [000045] copy [000011] VNs proved equivalent
Live vars after [000050]: {V00 V05} +{V02} => {V00 V02 V05}
Live vars after [000051]: {V00 V02 V05} -{V00} => {V02 V05}
orig [000051] copy [000017] VNs proved equivalent
orig [000051] copy [000050] VNs proved equivalent
orig [000051] copy [000011] VNs proved equivalent
orig [000051] copy [000043] VNs proved equivalent
orig [000052] copy [000000] VNs proved equivalent
orig [000052] copy [000017] VNs proved equivalent
orig [000052] copy [000011] VNs proved equivalent
orig [000052] copy [000043] VNs proved equivalent
Live vars after [000044]: {V02 V05} -{V05} => {V02}
orig [000044] copy [000000] VNs proved equivalent
orig [000044] copy [000017] VNs proved equivalent
orig [000044] copy [000050] VNs proved equivalent
orig [000044] copy [000011] VNs proved equivalent
Live vars after [000056]: {V02} -{V02} => {}
orig [000056] copy [000000] VNs proved equivalent
orig [000056] copy [000017] VNs proved equivalent
orig [000056] copy [000011] VNs proved equivalent
orig [000056] copy [000043] VNs proved equivalent
*************** Finishing PHASE VN based copy prop [no changes]
*************** Starting PHASE Redundant branch opts
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Redundant branch opts [no changes]
*************** Starting PHASE Optimize Valnum CSEs
CONST CSE is disabled
Standard CSE Heuristic
Standard CSE Heuristic
*************** Finishing PHASE Optimize Valnum CSEs
Trees after Optimize Valnum CSEs
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] ---XG+----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref $141
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12 $102
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] -----+----- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int $VN.Void
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref $140
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4 $100
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long <l:$284, c:$285>
N003 ( 3, 3) [000021] -----+----- \--* RSZ long <l:$2d2, c:$2d3>
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32 $44
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref $141
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12 $102
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N014 ( 17, 21) [000042] ----G+----- \--* ADD long <l:$2dc, c:$2dd>
N008 ( 11, 14) [000037] -----+----- +--* LSH long <l:$2d8, c:$2d9>
N006 ( 9, 12) [000035] -----+----- | +--* SUB long <l:$2d6, c:$2d7>
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint <l:$2d4, c:$2d5>
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int <l:$288, c:$289>
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00 $47
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32 $44
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint <l:$2da, c:$2db>
N012 ( 4, 4) [000040] n---G+----- \--* IND int <l:$182, c:$1c2>
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref $142
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8 $105
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] -----+----- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref $142
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use) $80
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8 $105
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
N005 ( 8, 10) [000059] -----+----- \--* SUB int <l:$290, c:$291>
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N004 ( 6, 8) [000058] -----+----- \--* MUL int <l:$28e, c:$28f>
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00 $47
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Assertion prop
GenTreeNode creates assertion:
N004 ( 4, 4) [000002] ---XG+----- * IND int <l:$281, c:$280>
In BB01 New Global Constant Assertion: ($80,$0) LCLVAR {InitVal($40)} != 0, index = #01
BB01 valueGen = #01
BB01:
in = #NA
out = #01
Propagating #NA for BB01, stmt STMT00000, tree [000000], tree -> #NA
Propagating #NA for BB01, stmt STMT00000, tree [000061], tree -> #NA
Propagating #NA for BB01, stmt STMT00000, tree [000062], tree -> #NA
Propagating #NA for BB01, stmt STMT00000, tree [000002], tree -> #01
Propagating #01 for BB01, stmt STMT00000, tree [000003], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000004], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000005], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000006], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000063], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000064], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000008], tree -> #01
Non-null assertion prop for indirection [000008] in BB01:
Propagating #01 for BB01, stmt STMT00000, tree [000009], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000010], tree -> #NA
Propagating #01 for BB01, stmt STMT00000, tree [000011], tree -> #NA
Re-morphing this stmt:
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XG+----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XG+----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG+----- +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG+---U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG+----- | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -----+-N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] -----+----- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] -----+----- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] -----+----- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ---XG+---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] n---G+----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -----+-N--- \--* ADD byref $141
N008 ( 1, 1) [000006] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] -----+----- \--* CNS_INT long 12 $102
optAssertionPropMain morphed tree:
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XGO----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG------ +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG----U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG------ | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -------N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] ----------- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] ----------- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] ----------- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ----GO---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] n---GO----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -------N--- \--* ADD byref $141
N008 ( 1, 1) [000006] ----------- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] ----------- \--* CNS_INT long 12 $102
Propagating #01 for BB01, stmt STMT00001, tree [000013], tree -> #NA
Propagating #01 for BB01, stmt STMT00001, tree [000015], tree -> #NA
Propagating #01 for BB01, stmt STMT00001, tree [000016], tree -> #NA
Divisor for DIV/MOD is proven to be never negative...
DIV/MOD is proven to never overflow...
Propagating #01 for BB01, stmt STMT00001, tree [000017], tree -> #NA
Re-morphing this stmt:
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA---+----- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] -----+----- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] -----+----- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
optAssertionPropMain morphed tree:
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] ----------- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] ----------- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- \--* CNS_INT long 0x3B9ACA00 $103
Propagating #01 for BB01, stmt STMT00002, tree [000019], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000020], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000021], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000022], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000018], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000065], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000066], tree -> #NA
Propagating #01 for BB01, stmt STMT00002, tree [000024], tree -> #NA
Propagating #01 for BB01, stmt STMT00003, tree [000025], tree -> #NA
Propagating #01 for BB01, stmt STMT00003, tree [000067], tree -> #NA
Propagating #01 for BB01, stmt STMT00003, tree [000068], tree -> #NA
Propagating #01 for BB01, stmt STMT00003, tree [000026], tree -> #NA
Propagating #01 for BB01, stmt STMT00003, tree [000029], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000012], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000030], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000032], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000033], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000034], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000035], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000036], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000037], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000038], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000069], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000070], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000040], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000041], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000042], tree -> #NA
Propagating #01 for BB01, stmt STMT00004, tree [000043], tree -> #NA
Propagating #01 for BB01, stmt STMT00005, tree [000045], tree -> #NA
Propagating #01 for BB01, stmt STMT00005, tree [000047], tree -> #NA
Propagating #01 for BB01, stmt STMT00005, tree [000048], tree -> #NA
Divisor for DIV/MOD is proven to be never negative...
DIV/MOD is proven to never overflow...
Propagating #01 for BB01, stmt STMT00005, tree [000049], tree -> #NA
Propagating #01 for BB01, stmt STMT00005, tree [000050], tree -> #NA
Re-morphing this stmt:
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA---+----- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] -----+----- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] -----+----- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] -----+----- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -----+-N--- \--* CNS_INT long 0x3B9ACA00 $103
optAssertionPropMain morphed tree:
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] ----------- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] ----------- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] ----------- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- \--* CNS_INT long 0x3B9ACA00 $103
Propagating #01 for BB01, stmt STMT00006, tree [000051], tree -> #NA
Propagating #01 for BB01, stmt STMT00006, tree [000071], tree -> #NA
Propagating #01 for BB01, stmt STMT00006, tree [000072], tree -> #NA
Propagating #01 for BB01, stmt STMT00006, tree [000052], tree -> #NA
Propagating #01 for BB01, stmt STMT00006, tree [000054], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000044], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000056], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000057], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000058], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000059], tree -> #NA
Propagating #01 for BB01, stmt STMT00007, tree [000060], tree -> #NA
*************** Finishing PHASE Assertion prop
Trees after Assertion prop
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
***** BB01 [0000]
STMT00000 ( 0x000[E-] ... 0x01A )
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N013 ( 13, 15) [000010] ---XGO----- \--* ADD long <l:$2cf, c:$2ce>
N007 ( 7, 8) [000005] ---XG------ +--* LSH long <l:$2c7, c:$2c6>
N005 ( 5, 6) [000003] ---XG----U- | +--* CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N004 ( 4, 4) [000002] ---XG------ | | \--* IND int <l:$281, c:$280>
N003 ( 2, 2) [000062] -------N--- | | \--* ADD byref $140
N001 ( 1, 1) [000000] ----------- | | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] ----------- | | \--* CNS_INT long 4 $100
N006 ( 1, 1) [000004] ----------- | \--* CNS_INT int 32 $44
N012 ( 5, 6) [000009] ----GO---U- \--* CAST long <- ulong <- uint <l:$2c9, c:$2cb>
N011 ( 4, 4) [000008] n---GO----- \--* IND int <l:$283, c:$282>
N010 ( 2, 2) [000064] -------N--- \--* ADD byref $141
N008 ( 1, 1) [000006] ----------- +--* LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] ----------- \--* CNS_INT long 12 $102
***** BB01 [0000]
STMT00001 ( ??? ... ??? )
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N003 ( 22, 8) [000016] ----------- \--* UDIV long <l:$2d0, c:$2d1>
N001 ( 1, 1) [000013] ----------- +--* LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00002 ( ??? ... 0x021 )
N008 ( 9, 10) [000024] nA--G+--R-- * STOREIND int $VN.Void
N007 ( 2, 2) [000066] -----+-N--- +--* ADD byref $140
N005 ( 1, 1) [000018] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N006 ( 1, 1) [000065] -----+----- | \--* CNS_INT long 4 $100
N004 ( 4, 5) [000022] -----+----- \--* CAST int <- uint <- long <l:$284, c:$285>
N003 ( 3, 3) [000021] -----+----- \--* RSZ long <l:$2d2, c:$2d3>
N001 ( 1, 1) [000019] -----+----- +--* LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -----+----- \--* CNS_INT int 32 $44
***** BB01 [0000]
STMT00003 ( ??? ... 0x029 )
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000068] -----+-N--- +--* ADD byref $141
N001 ( 1, 1) [000025] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000067] -----+----- | \--* CNS_INT long 12 $102
N004 ( 1, 1) [000026] -----+----- \--* LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
***** BB01 [0000]
STMT00004 ( ??? ... 0x04C )
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N014 ( 17, 21) [000042] ----G+----- \--* ADD long <l:$2dc, c:$2dd>
N008 ( 11, 14) [000037] -----+----- +--* LSH long <l:$2d8, c:$2d9>
N006 ( 9, 12) [000035] -----+----- | +--* SUB long <l:$2d6, c:$2d7>
N001 ( 1, 1) [000012] -----+----- | | +--* LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N005 ( 7, 10) [000034] -----+---U- | | \--* CAST long <- ulong <- uint <l:$2d4, c:$2d5>
N004 ( 6, 8) [000033] -----+----- | | \--* MUL int <l:$288, c:$289>
N002 ( 1, 1) [000030] -----+----- | | +--* LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -----+----- | | \--* CNS_INT int 0x3B9ACA00 $47
N007 ( 1, 1) [000036] -----+----- | \--* CNS_INT int 32 $44
N013 ( 5, 6) [000041] ----G+---U- \--* CAST long <- ulong <- uint <l:$2da, c:$2db>
N012 ( 4, 4) [000040] n---G+----- \--* IND int <l:$182, c:$1c2>
N011 ( 2, 2) [000070] -----+-N--- \--* ADD byref $142
N009 ( 1, 1) [000038] -----+----- +--* LCL_VAR byref V00 arg0 u:1 $80
N010 ( 1, 1) [000069] -----+----- \--* CNS_INT long 8 $105
***** BB01 [0000]
STMT00005 ( ??? ... ??? )
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N004 ( 23, 10) [000049] ----------- \--* CAST int <- uint <- long <l:$28a, c:$28b>
N003 ( 22, 8) [000048] ----------- \--* UDIV long <l:$2de, c:$2df>
N001 ( 1, 1) [000045] ----------- +--* LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- \--* CNS_INT long 0x3B9ACA00 $103
***** BB01 [0000]
STMT00006 ( ??? ... 0x04F )
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N003 ( 2, 2) [000072] -----+-N--- +--* ADD byref $142
N001 ( 1, 1) [000051] -----+----- | +--* LCL_VAR byref V00 arg0 u:1 (last use) $80
N002 ( 1, 1) [000071] -----+----- | \--* CNS_INT long 8 $105
N004 ( 1, 1) [000052] -----+----- \--* LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
***** BB01 [0000]
STMT00007 ( ??? ... 0x05D )
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
N005 ( 8, 10) [000059] -----+----- \--* SUB int <l:$290, c:$291>
N001 ( 1, 1) [000044] -----+----- +--* LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N004 ( 6, 8) [000058] -----+----- \--* MUL int <l:$28e, c:$28f>
N002 ( 1, 1) [000056] -----+----- +--* LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -----+----- \--* CNS_INT int 0x3B9ACA00 $47
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Optimize index checks
*************** Finishing PHASE Optimize index checks [no changes]
*************** Starting PHASE Optimize Induction Variables
*************** In optInductionVariables()
Skipping since this method has no natural loops
*************** Finishing PHASE Optimize Induction Variables [no changes]
*************** Starting PHASE VN-based dead store removal
*************** Finishing PHASE VN-based dead store removal [no changes]
*************** Starting PHASE Clone blocks with range checks
Current method has no bounds checks
*************** Finishing PHASE Clone blocks with range checks [no changes]
*************** Starting PHASE VN based intrinsic expansion
*************** Finishing PHASE VN based intrinsic expansion [no changes]
Removing PHI functions
*************** Starting PHASE Stress gtSplitTree
*************** Finishing PHASE Stress gtSplitTree [no changes]
*************** Starting PHASE Remove empty finally 3
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally 3 [no changes]
*************** Starting PHASE Remove empty try 3
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try 3 [no changes]
*************** Starting PHASE Remove empty try-catch-fault 3
*************** In fgRemoveEmptyTryCatchOrTryFault()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try-catch-fault 3 [no changes]
*************** Starting PHASE Create EH funclets
*************** Finishing PHASE Create EH funclets [no changes]
*************** Starting PHASE Expand casts
*************** Finishing PHASE Expand casts [no changes]
*************** Starting PHASE Expand runtime lookups
*************** Finishing PHASE Expand runtime lookups [no changes]
*************** Starting PHASE Expand static init
Nothing to expand.
*************** Finishing PHASE Expand static init [no changes]
*************** Starting PHASE Expand TLS access
Nothing to expand.
*************** Finishing PHASE Expand TLS access [no changes]
*************** Starting PHASE Expand stack array allocation
*************** Finishing PHASE Expand stack array allocation [no changes]
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Create throw helper blocks
*************** Finishing PHASE Create throw helper blocks [no changes]
*************** Starting PHASE Optimize bools
*************** In optOptimizeBools()
optimized 0 BBJ_COND cases in 1 passes
*************** Finishing PHASE Optimize bools [no changes]
*************** Starting PHASE If conversion
*************** Finishing PHASE If conversion [no changes]
*************** Starting PHASE Recognize Switch
*************** Finishing PHASE Recognize Switch [no changes]
*************** Starting PHASE Optimize pre-layout
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgExpandRarelyRunBlocks()
*************** Finishing PHASE Optimize pre-layout [no changes]
*************** Starting PHASE Repair profile pre-layout
No PGO data. Skipping profile repair.
*************** Finishing PHASE Repair profile pre-layout [no changes]
*************** Starting PHASE Rationalize IR
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
[000073] ----------- IL_OFFSET void INLRT @ 0x000[E-]
N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000061] ----------- t61 = CNS_INT long 4 $100
/--* t0 byref
+--* t61 long
N003 ( 2, 2) [000062] -------N--- t62 = * ADD byref $140
/--* t62 byref
N004 ( 4, 4) [000002] ---XG------ t2 = * IND int <l:$281, c:$280>
/--* t2 int
N005 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N006 ( 1, 1) [000004] ----------- t4 = CNS_INT int 32 $44
/--* t3 long
+--* t4 int
N007 ( 7, 8) [000005] ---XG------ t5 = * LSH long <l:$2c7, c:$2c6>
N008 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 $80
N009 ( 1, 1) [000063] ----------- t63 = CNS_INT long 12 $102
/--* t6 byref
+--* t63 long
N010 ( 2, 2) [000064] -------N--- t64 = * ADD byref $141
/--* t64 byref
N011 ( 4, 4) [000008] n---GO----- t8 = * IND int <l:$283, c:$282>
/--* t8 int
N012 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N013 ( 13, 15) [000010] ---XGO----- t10 = * ADD long <l:$2cf, c:$2ce>
/--* t10 long
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N001 ( 1, 1) [000013] ----------- t13 = LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x3B9ACA00 $103
/--* t13 long
+--* t15 long
N003 ( 22, 8) [000016] ----------- t16 = * UDIV long <l:$2d0, c:$2d1>
/--* t16 long
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N001 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -----+----- t20 = CNS_INT int 32 $44
/--* t19 long
+--* t20 int
N003 ( 3, 3) [000021] -----+----- t21 = * RSZ long <l:$2d2, c:$2d3>
/--* t21 long
N004 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long <l:$284, c:$285>
N005 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 $80
N006 ( 1, 1) [000065] -----+----- t65 = CNS_INT long 4 $100
/--* t18 byref
+--* t65 long
N007 ( 2, 2) [000066] -----+-N--- t66 = * ADD byref $140
/--* t66 byref
+--* t22 int
N008 ( 9, 10) [000024] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 $80
N002 ( 1, 1) [000067] -----+----- t67 = CNS_INT long 12 $102
/--* t25 byref
+--* t67 long
N003 ( 2, 2) [000068] -----+-N--- t68 = * ADD byref $141
N004 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000012] -----+----- t12 = LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N002 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -----+----- t32 = CNS_INT int 0x3B9ACA00 $47
/--* t30 int
+--* t32 int
N004 ( 6, 8) [000033] -----+----- t33 = * MUL int <l:$288, c:$289>
/--* t33 int
N005 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N006 ( 9, 12) [000035] -----+----- t35 = * SUB long <l:$2d6, c:$2d7>
N007 ( 1, 1) [000036] -----+----- t36 = CNS_INT int 32 $44
/--* t35 long
+--* t36 int
N008 ( 11, 14) [000037] -----+----- t37 = * LSH long <l:$2d8, c:$2d9>
N009 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 $80
N010 ( 1, 1) [000069] -----+----- t69 = CNS_INT long 8 $105
/--* t38 byref
+--* t69 long
N011 ( 2, 2) [000070] -----+-N--- t70 = * ADD byref $142
/--* t70 byref
N012 ( 4, 4) [000040] n---G+----- t40 = * IND int <l:$182, c:$1c2>
/--* t40 int
N013 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N014 ( 17, 21) [000042] ----G+----- t42 = * ADD long <l:$2dc, c:$2dd>
/--* t42 long
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N001 ( 1, 1) [000045] ----------- t45 = LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x3B9ACA00 $103
/--* t45 long
+--* t47 long
N003 ( 22, 8) [000048] ----------- t48 = * UDIV long <l:$2de, c:$2df>
/--* t48 long
N004 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long <l:$28a, c:$28b>
/--* t49 int
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N001 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 (last use) $80
N002 ( 1, 1) [000071] -----+----- t71 = CNS_INT long 8 $105
/--* t51 byref
+--* t71 long
N003 ( 2, 2) [000072] -----+-N--- t72 = * ADD byref $142
N004 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000044] -----+----- t44 = LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N002 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -----+----- t57 = CNS_INT int 0x3B9ACA00 $47
/--* t56 int
+--* t57 int
N004 ( 6, 8) [000058] -----+----- t58 = * MUL int <l:$28e, c:$28f>
/--* t44 int
+--* t58 int
N005 ( 8, 10) [000059] -----+----- t59 = * SUB int <l:$290, c:$291>
/--* t59 int
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Lowering nodeinfo
0 parameter register to local mappings
Addressing mode:
Base
N001 ( 1, 1) [000000] ----------- * LCL_VAR byref V00 arg0 u:1 $80
+ 4
Removing unused node:
N002 ( 1, 1) [000061] -c--------- * CNS_INT long 4 $100
New addressing mode node:
N003 ( 2, 2) [000062] ----------- * LEA(b+4) byref
Addressing mode:
Base
N008 ( 1, 1) [000006] ----------- * LCL_VAR byref V00 arg0 u:1 $80
+ 12
Removing unused node:
N009 ( 1, 1) [000063] -c--------- * CNS_INT long 12 $102
New addressing mode node:
N010 ( 2, 2) [000064] ----------- * LEA(b+12) byref
lowering store lcl var/field (before):
N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 $80
/--* t0 byref
N003 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref
/--* t62 byref
N004 ( 4, 4) [000002] -c-XG------ t2 = * IND int <l:$281, c:$280>
/--* t2 int
N005 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N006 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 $44
/--* t3 long
+--* t4 int
N007 ( 7, 8) [000005] ---XG------ t5 = * LSH long <l:$2c7, c:$2c6>
N008 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 $80
/--* t6 byref
N010 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref
/--* t64 byref
N011 ( 4, 4) [000008] nc--GO----- t8 = * IND int <l:$283, c:$282>
/--* t8 int
N012 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N013 ( 13, 15) [000010] ---XGO----- t10 = * ADD long <l:$2cf, c:$2ce>
/--* t10 long
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
lowering store lcl var/field (after):
N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 $80
/--* t0 byref
N003 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref
/--* t62 byref
N004 ( 4, 4) [000002] -c-XG------ t2 = * IND int <l:$281, c:$280>
/--* t2 int
N005 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N006 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 $44
/--* t3 long
+--* t4 int
N007 ( 7, 8) [000005] ---XG------ t5 = * LSH long <l:$2c7, c:$2c6>
N008 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 $80
/--* t6 byref
N010 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref
/--* t64 byref
N011 ( 4, 4) [000008] nc--GO----- t8 = * IND int <l:$283, c:$282>
/--* t8 int
N012 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N013 ( 13, 15) [000010] ---XGO----- t10 = * ADD long <l:$2cf, c:$2ce>
/--* t10 long
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
lowering store lcl var/field (before):
N001 ( 1, 1) [000013] ----------- t13 = LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 $103
[000074] -c--------- t74 = CNS_INT int 9
/--* t13 long
+--* t74 int
[000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
[000076] ---------U- t76 = * MULHI long
[000077] -c--------- t77 = CNS_INT int 11
/--* t76 long
+--* t77 int
N003 ( 22, 8) [000016] ----------- t16 = * RSZ long
/--* t16 long
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
lowering store lcl var/field (after):
N001 ( 1, 1) [000013] ----------- t13 = LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 $103
[000074] -c--------- t74 = CNS_INT int 9
/--* t13 long
+--* t74 int
[000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
[000076] ---------U- t76 = * MULHI long
[000077] -c--------- t77 = CNS_INT int 11
/--* t76 long
+--* t77 int
N003 ( 22, 8) [000016] ----------- t16 = * RSZ long
/--* t16 long
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
Addressing mode:
Base
N005 ( 1, 1) [000018] -----+----- * LCL_VAR byref V00 arg0 u:1 $80
+ 4
Removing unused node:
N006 ( 1, 1) [000065] -c---+----- * CNS_INT long 4 $100
New addressing mode node:
N007 ( 2, 2) [000066] -----+----- * LEA(b+4) byref
Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported
N001 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 $44
/--* t19 long
+--* t20 int
N003 ( 3, 3) [000021] -----+----- t21 = * RSZ long <l:$2d2, c:$2d3>
/--* t21 long
N004 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long <l:$284, c:$285>
N005 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 $80
/--* t18 byref
N007 ( 2, 2) [000066] -----+----- t66 = * LEA(b+4) byref
/--* t66 byref
+--* t22 int
N008 ( 9, 10) [000024] nA--G+----- * STOREIND int $VN.Void
Addressing mode:
Base
N001 ( 1, 1) [000025] -----+----- * LCL_VAR byref V00 arg0 u:1 $80
+ 12
Removing unused node:
N002 ( 1, 1) [000067] -c---+----- * CNS_INT long 12 $102
New addressing mode node:
N003 ( 2, 2) [000068] -----+----- * LEA(b+12) byref
Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported
N001 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 $80
/--* t25 byref
N003 ( 2, 2) [000068] -----+----- t68 = * LEA(b+12) byref
N004 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
Addressing mode:
Base
N009 ( 1, 1) [000038] -----+----- * LCL_VAR byref V00 arg0 u:1 $80
+ 8
Removing unused node:
N010 ( 1, 1) [000069] -c---+----- * CNS_INT long 8 $105
New addressing mode node:
N011 ( 2, 2) [000070] -----+----- * LEA(b+8) byref
lowering store lcl var/field (before):
N001 ( 1, 1) [000012] -----+----- t12 = LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N002 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 $47
/--* t30 int
+--* t32 int
N004 ( 6, 8) [000033] -----+----- t33 = * MUL int <l:$288, c:$289>
/--* t33 int
N005 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N006 ( 9, 12) [000035] -----+----- t35 = * SUB long <l:$2d6, c:$2d7>
N007 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 $44
/--* t35 long
+--* t36 int
N008 ( 11, 14) [000037] -----+----- t37 = * LSH long <l:$2d8, c:$2d9>
N009 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 $80
/--* t38 byref
N011 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref
/--* t70 byref
N012 ( 4, 4) [000040] nc--G+----- t40 = * IND int <l:$182, c:$1c2>
/--* t40 int
N013 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N014 ( 17, 21) [000042] ----G+----- t42 = * ADD long <l:$2dc, c:$2dd>
/--* t42 long
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
lowering store lcl var/field (after):
N001 ( 1, 1) [000012] -----+----- t12 = LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N002 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 $47
/--* t30 int
+--* t32 int
N004 ( 6, 8) [000033] -----+----- t33 = * MUL int <l:$288, c:$289>
/--* t33 int
N005 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N006 ( 9, 12) [000035] -----+----- t35 = * SUB long <l:$2d6, c:$2d7>
N007 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 $44
/--* t35 long
+--* t36 int
N008 ( 11, 14) [000037] -----+----- t37 = * LSH long <l:$2d8, c:$2d9>
N009 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 $80
/--* t38 byref
N011 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref
/--* t70 byref
N012 ( 4, 4) [000040] nc--G+----- t40 = * IND int <l:$182, c:$1c2>
/--* t40 int
N013 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N014 ( 17, 21) [000042] ----G+----- t42 = * ADD long <l:$2dc, c:$2dd>
/--* t42 long
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
lowering store lcl var/field (before):
N001 ( 1, 1) [000045] ----------- t45 = LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 $103
[000078] -c--------- t78 = CNS_INT int 9
/--* t45 long
+--* t78 int
[000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
[000080] ---------U- t80 = * MULHI long
[000081] -c--------- t81 = CNS_INT int 11
/--* t80 long
+--* t81 int
N003 ( 22, 8) [000048] ----------- t48 = * RSZ long
/--* t48 long
N004 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long <l:$28a, c:$28b>
/--* t49 int
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
lowering store lcl var/field (after):
N001 ( 1, 1) [000045] ----------- t45 = LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 $103
[000078] -c--------- t78 = CNS_INT int 9
/--* t45 long
+--* t78 int
[000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
[000080] ---------U- t80 = * MULHI long
[000081] -c--------- t81 = CNS_INT int 11
/--* t80 long
+--* t81 int
N003 ( 22, 8) [000048] ----------- t48 = * RSZ long
/--* t48 long
N004 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long <l:$28a, c:$28b>
/--* t49 int
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
Addressing mode:
Base
N001 ( 1, 1) [000051] -----+----- * LCL_VAR byref V00 arg0 u:1 (last use) $80
+ 8
Removing unused node:
N002 ( 1, 1) [000071] -c---+----- * CNS_INT long 8 $105
New addressing mode node:
N003 ( 2, 2) [000072] -----+----- * LEA(b+8) byref
Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported
N001 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 (last use) $80
/--* t51 byref
N003 ( 2, 2) [000072] -----+----- t72 = * LEA(b+8) byref
N004 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
lowering return node
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
============
Lower has completed modifying nodes.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
[000073] ----------- IL_OFFSET void INLRT @ 0x000[E-]
N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 $80
/--* t0 byref
N003 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref
/--* t62 byref
N004 ( 4, 4) [000002] -c-XG------ t2 = * IND int <l:$281, c:$280>
/--* t2 int
N005 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N006 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 $44
/--* t3 long
+--* t4 int
N007 ( 7, 8) [000005] ---XG------ t5 = * LSH long <l:$2c7, c:$2c6>
N008 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 $80
/--* t6 byref
N010 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref
/--* t64 byref
N011 ( 4, 4) [000008] nc--GO----- t8 = * IND int <l:$283, c:$282>
/--* t8 int
N012 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N013 ( 13, 15) [000010] ---XGO----- t10 = * ADD long <l:$2cf, c:$2ce>
/--* t10 long
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N001 ( 1, 1) [000013] ----------- t13 = LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 $103
[000074] -c--------- t74 = CNS_INT int 9
/--* t13 long
+--* t74 int
[000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
[000076] ---------U- t76 = * MULHI long
[000077] -c--------- t77 = CNS_INT int 11
/--* t76 long
+--* t77 int
N003 ( 22, 8) [000016] ----------- t16 = * RSZ long
/--* t16 long
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N001 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 $44
/--* t19 long
+--* t20 int
N003 ( 3, 3) [000021] -----+----- t21 = * RSZ long <l:$2d2, c:$2d3>
/--* t21 long
N004 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long <l:$284, c:$285>
N005 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 $80
/--* t18 byref
N007 ( 2, 2) [000066] -c---+----- t66 = * LEA(b+4) byref
/--* t66 byref
+--* t22 int
N008 ( 9, 10) [000024] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 $80
/--* t25 byref
N003 ( 2, 2) [000068] -c---+----- t68 = * LEA(b+12) byref
N004 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000012] -----+----- t12 = LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N002 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 $47
/--* t30 int
+--* t32 int
N004 ( 6, 8) [000033] -----+----- t33 = * MUL int <l:$288, c:$289>
/--* t33 int
N005 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N006 ( 9, 12) [000035] -----+----- t35 = * SUB long <l:$2d6, c:$2d7>
N007 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 $44
/--* t35 long
+--* t36 int
N008 ( 11, 14) [000037] -----+----- t37 = * LSH long <l:$2d8, c:$2d9>
N009 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 $80
/--* t38 byref
N011 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref
/--* t70 byref
N012 ( 4, 4) [000040] nc--G+----- t40 = * IND int <l:$182, c:$1c2>
/--* t40 int
N013 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N014 ( 17, 21) [000042] ----G+----- t42 = * ADD long <l:$2dc, c:$2dd>
/--* t42 long
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N001 ( 1, 1) [000045] ----------- t45 = LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 $103
[000078] -c--------- t78 = CNS_INT int 9
/--* t45 long
+--* t78 int
[000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
[000080] ---------U- t80 = * MULHI long
[000081] -c--------- t81 = CNS_INT int 11
/--* t80 long
+--* t81 int
N003 ( 22, 8) [000048] ----------- t48 = * RSZ long
/--* t48 long
N004 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long <l:$28a, c:$28b>
/--* t49 int
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N001 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 (last use) $80
/--* t51 byref
N003 ( 2, 2) [000072] -c---+----- t72 = * LEA(b+8) byref
N004 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000044] -----+----- t44 = LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N002 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -c---+----- t57 = CNS_INT int 0x3B9ACA00 $47
/--* t56 int
+--* t57 int
N004 ( 6, 8) [000058] -----+----- t58 = * MUL int <l:$28e, c:$28f>
/--* t44 int
+--* t58 int
N005 ( 8, 10) [000059] -----+----- t59 = * SUB int <l:$290, c:$291>
/--* t59 int
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
-------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 2, refCntWtd = 2
New refCnts for V04: refCnt = 1, refCntWtd = 2
New refCnts for V04: refCnt = 2, refCntWtd = 4
New refCnts for V01: refCnt = 1, refCntWtd = 1
New refCnts for V01: refCnt = 2, refCntWtd = 2
New refCnts for V00: refCnt = 3, refCntWtd = 3
New refCnts for V00: refCnt = 4, refCntWtd = 4
New refCnts for V01: refCnt = 3, refCntWtd = 3
New refCnts for V04: refCnt = 3, refCntWtd = 6
New refCnts for V01: refCnt = 4, refCntWtd = 4
New refCnts for V00: refCnt = 5, refCntWtd = 5
New refCnts for V05: refCnt = 1, refCntWtd = 2
New refCnts for V05: refCnt = 2, refCntWtd = 4
New refCnts for V02: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 6, refCntWtd = 6
New refCnts for V02: refCnt = 2, refCntWtd = 2
New refCnts for V05: refCnt = 3, refCntWtd = 6
New refCnts for V02: refCnt = 3, refCntWtd = 3
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 7, refCntWtd = 7
New refCnts for V00: refCnt = 8, refCntWtd = 8
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 arg0 byref single-def
; V01 loc0 long
; V02 loc1 int
; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V04 tmp1 long "dup spill"
; V05 tmp2 long "dup spill"
In fgLocalVarLivenessInit
Local V03 should not be enregistered because: struct size does not match reg size
Tracked variable (5 out of 6) table:
V00 arg0 [ byref]: refCnt = 8, refCntWtd = 8
V04 tmp1 [ long]: refCnt = 3, refCntWtd = 6
V05 tmp2 [ long]: refCnt = 3, refCntWtd = 6
V01 loc0 [ long]: refCnt = 4, refCntWtd = 4
V02 loc1 [ int]: refCnt = 3, refCntWtd = 3
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00 } + ByrefExposed + GcHeap
DEF(4)={ V04 V05 V01 V02} + ByrefExposed + GcHeap
** Memory liveness computed, GcHeap states and ByrefExposed states match
*************** In fgInterBlockLocalVarLiveness()
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00} + ByrefExposed + GcHeap
OUT(0)={ }
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*** lvaComputeRefCounts ***
*** lvaComputeRefCounts -- explicit counts ***
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 2, refCntWtd = 2
New refCnts for V04: refCnt = 1, refCntWtd = 2
New refCnts for V04: refCnt = 2, refCntWtd = 4
New refCnts for V01: refCnt = 1, refCntWtd = 1
New refCnts for V01: refCnt = 2, refCntWtd = 2
New refCnts for V00: refCnt = 3, refCntWtd = 3
New refCnts for V00: refCnt = 4, refCntWtd = 4
New refCnts for V01: refCnt = 3, refCntWtd = 3
New refCnts for V04: refCnt = 3, refCntWtd = 6
New refCnts for V01: refCnt = 4, refCntWtd = 4
New refCnts for V00: refCnt = 5, refCntWtd = 5
New refCnts for V05: refCnt = 1, refCntWtd = 2
New refCnts for V05: refCnt = 2, refCntWtd = 4
New refCnts for V02: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 6, refCntWtd = 6
New refCnts for V02: refCnt = 2, refCntWtd = 2
New refCnts for V05: refCnt = 3, refCntWtd = 6
New refCnts for V02: refCnt = 3, refCntWtd = 3
*** lvaComputeRefCounts -- implicit counts ***
New refCnts for V00: refCnt = 7, refCntWtd = 7
New refCnts for V00: refCnt = 8, refCntWtd = 8
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
[000073] ----------- IL_OFFSET void INLRT @ 0x000[E-]
N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 $80
/--* t0 byref
N003 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref
/--* t62 byref
N004 ( 4, 4) [000002] -c-XG------ t2 = * IND int <l:$281, c:$280>
/--* t2 int
N005 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint <l:$2c1, c:$2c3>
N006 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 $44
/--* t3 long
+--* t4 int
N007 ( 7, 8) [000005] ---XG------ t5 = * LSH long <l:$2c7, c:$2c6>
N008 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 $80
/--* t6 byref
N010 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref
/--* t64 byref
N011 ( 4, 4) [000008] nc--GO----- t8 = * IND int <l:$283, c:$282>
/--* t8 int
N012 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N013 ( 13, 15) [000010] ---XGO----- t10 = * ADD long <l:$2cf, c:$2ce>
/--* t10 long
N014 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 $241
N001 ( 1, 1) [000013] ----------- t13 = LCL_VAR long V04 tmp1 u:1 <l:$2cc, c:$2cd>
N002 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 $103
[000074] -c--------- t74 = CNS_INT int 9
/--* t13 long
+--* t74 int
[000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
[000076] ---------U- t76 = * MULHI long
[000077] -c--------- t77 = CNS_INT int 11
/--* t76 long
+--* t77 int
N003 ( 22, 8) [000016] ----------- t16 = * RSZ long
/--* t16 long
N004 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 $VN.Void
N001 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 <l:$2d0, c:$2d1>
N002 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 $44
/--* t19 long
+--* t20 int
N003 ( 3, 3) [000021] -----+----- t21 = * RSZ long <l:$2d2, c:$2d3>
/--* t21 long
N004 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long <l:$284, c:$285>
N005 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 $80
/--* t18 byref
N007 ( 2, 2) [000066] -c---+----- t66 = * LEA(b+4) byref
/--* t66 byref
+--* t22 int
N008 ( 9, 10) [000024] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 $80
/--* t25 byref
N003 ( 2, 2) [000068] -c---+----- t68 = * LEA(b+12) byref
N004 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N005 ( 6, 6) [000029] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000012] -----+----- t12 = LCL_VAR long V04 tmp1 u:1 (last use) <l:$2cc, c:$2cd>
N002 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 (last use) <l:$286, c:$287>
N003 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 $47
/--* t30 int
+--* t32 int
N004 ( 6, 8) [000033] -----+----- t33 = * MUL int <l:$288, c:$289>
/--* t33 int
N005 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N006 ( 9, 12) [000035] -----+----- t35 = * SUB long <l:$2d6, c:$2d7>
N007 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 $44
/--* t35 long
+--* t36 int
N008 ( 11, 14) [000037] -----+----- t37 = * LSH long <l:$2d8, c:$2d9>
N009 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 $80
/--* t38 byref
N011 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref
/--* t70 byref
N012 ( 4, 4) [000040] nc--G+----- t40 = * IND int <l:$182, c:$1c2>
/--* t40 int
N013 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N014 ( 17, 21) [000042] ----G+----- t42 = * ADD long <l:$2dc, c:$2dd>
/--* t42 long
N015 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 $VN.Void
N001 ( 1, 1) [000045] ----------- t45 = LCL_VAR long V05 tmp2 u:1 <l:$2dc, c:$2dd>
N002 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 $103
[000078] -c--------- t78 = CNS_INT int 9
/--* t45 long
+--* t78 int
[000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
[000080] ---------U- t80 = * MULHI long
[000081] -c--------- t81 = CNS_INT int 11
/--* t80 long
+--* t81 int
N003 ( 22, 8) [000048] ----------- t48 = * RSZ long
/--* t48 long
N004 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long <l:$28a, c:$28b>
/--* t49 int
N005 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 $VN.Void
N001 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 (last use) $80
/--* t51 byref
N003 ( 2, 2) [000072] -c---+----- t72 = * LEA(b+8) byref
N004 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N005 ( 6, 6) [000054] nA--G+----- * STOREIND int $VN.Void
N001 ( 1, 1) [000044] -----+----- t44 = LCL_VAR int V05 tmp2 u:1 (last use) <l:$28c, c:$28d>
N002 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 (last use) <l:$28a, c:$28b>
N003 ( 1, 4) [000057] -c---+----- t57 = CNS_INT int 0x3B9ACA00 $47
/--* t56 int
+--* t57 int
N004 ( 6, 8) [000058] -----+----- t58 = * MUL int <l:$28e, c:$28f>
/--* t44 int
+--* t58 int
N005 ( 8, 10) [000059] -----+----- t59 = * SUB int <l:$290, c:$291>
/--* t59 int
N006 ( 9, 11) [000060] -----+----- * RETURN int $VN.Void
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** 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: {V00}
def: {V01 V02 V04 V05}
in: {V00}
out: {}
Interval 0: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 0: (V00) byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 1: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 1: (V01) long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 2: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 2: (V02) int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 3: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 3: (V04) long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 4: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 4: (V05) long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = false, singleExit = true
TUPLE STYLE DUMP BEFORE LSRA
Identifying loops in DFS tree with following reverse post order:
RPO -> BB [pre, post]
00 -> BB01[0, 0]
Flow graph has no cycles; skipping identification of natural loops
Start LSRA Block Sequence:
Current block: BB01
Final LSRA Block Sequence:
BB01 ( 1 )
BB01 [0000] [000..05E) (return), preds={} succs={}
=====
N000. IL_OFFSET INLRT @ 0x000[E-]
N001. V00(t0)
N003. t62 = LEA(b+4) ; t0
N004. t2 = IND ; t62
N005. t3 = CAST ; t2
N006. CNS_INT 32
N007. t5 = LSH ; t3
N008. V00(t6)
N010. t64 = LEA(b+12); t6
N011. t8 = IND ; t64
N012. t9 = CAST ; t8
N013. t10 = ADD ; t5,t9
N014. V04(t11); t10
N001. V04(t13)
N002. t15 = CNS_INT 0x44b82fa09b5a53
N000. CNS_INT 9
N000. t75 = RSZ ; t13
N000. t76 = MULHI ; t75,t15
N000. CNS_INT 11
N003. t16 = RSZ ; t76
N004. V01(t17); t16
N001. V01(t19)
N002. CNS_INT 32
N003. t21 = RSZ ; t19
N004. t22 = CAST ; t21
N005. V00(t18)
N007. t66 = LEA(b+4) ; t18
N008. STOREIND ; t66,t22
N001. V00(t25)
N003. t68 = LEA(b+12); t25
N004. V01(t26)
N005. STOREIND ; t68,t26
N001. V04(t12*)
N002. V01(t30*)
N003. CNS_INT 0x3B9ACA00
N004. t33 = MUL ; t30*
N005. t34 = CAST ; t33
N006. t35 = SUB ; t12*,t34
N007. CNS_INT 32
N008. t37 = LSH ; t35
N009. V00(t38)
N011. t70 = LEA(b+8) ; t38
N012. t40 = IND ; t70
N013. t41 = CAST ; t40
N014. t42 = ADD ; t37,t41
N015. V05(t43); t42
N001. V05(t45)
N002. t47 = CNS_INT 0x44b82fa09b5a53
N000. CNS_INT 9
N000. t79 = RSZ ; t45
N000. t80 = MULHI ; t79,t47
N000. CNS_INT 11
N003. t48 = RSZ ; t80
N004. t49 = CAST ; t48
N005. V02(t50); t49
N001. V00(t51*)
N003. t72 = LEA(b+8) ; t51*
N004. V02(t52)
N005. STOREIND ; t72,t52
N001. V05(t44*)
N002. V02(t56*)
N003. CNS_INT 0x3B9ACA00
N004. t58 = MUL ; t56*
N005. t59 = SUB ; t44*,t58
N006. RETURN ; t59
buildIntervals second part ========
Arg V00 is live in reg rcx
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed wt=100.00>
NEW BLOCK BB01
<RefPosition #1 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00>
DefList: { }
N003 (???,???) [000073] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA
DefList: { }
N005 ( 1, 1) [000000] ----------- * LCL_VAR byref V00 arg0 u:1 NA REG NA $80
DefList: { }
N007 ( 2, 2) [000062] -c--------- * LEA(b+4) byref REG NA
Contained
DefList: { }
N009 ( 4, 4) [000002] -c-XG------ * IND int REG NA <l:$281, c:$280>
Contained
DefList: { }
N011 ( 5, 6) [000003] ---XG----U- * CAST long <- ulong <- uint REG NA <l:$2c1, c:$2c3>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
Interval 5: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #3 @12 RefTypeDef <Ivl:5> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N011.t3. CAST }
N013 ( 1, 1) [000004] -c--------- * CNS_INT int 32 REG NA $44
Contained
DefList: { N011.t3. CAST }
N015 ( 7, 8) [000005] ---XG------ * LSH long REG NA <l:$2c7, c:$2c6>
Notify VM instruction set (AVX2) must be supported.
<RefPosition #4 @15 RefTypeUse <Ivl:5> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 6: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #5 @16 RefTypeDef <Ivl:6> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I6> to <I5>
DefList: { N015.t5. LSH }
N017 ( 1, 1) [000006] ----------- * LCL_VAR byref V00 arg0 u:1 NA REG NA $80
DefList: { N015.t5. LSH }
N019 ( 2, 2) [000064] -c--------- * LEA(b+12) byref REG NA
Contained
DefList: { N015.t5. LSH }
N021 ( 4, 4) [000008] nc--GO----- * IND int REG NA <l:$283, c:$282>
Contained
DefList: { N015.t5. LSH }
N023 ( 5, 6) [000009] ----GO---U- * CAST long <- ulong <- uint REG NA <l:$2c9, c:$2cb>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
Interval 7: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #7 @24 RefTypeDef <Ivl:7> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N015.t5. LSH; N023.t9. CAST }
N025 ( 13, 15) [000010] ---XGO----- * ADD long REG NA <l:$2cf, c:$2ce>
<RefPosition #8 @25 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #9 @25 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 8: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #10 @26 RefTypeDef <Ivl:8> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I8> to <I6>
Assigning related <I8> to <I7>
DefList: { N025.t10. ADD }
N027 ( 13, 15) [000011] DA-XGO----- * STORE_LCL_VAR long V04 tmp1 d:1 NA REG NA $241
<RefPosition #11 @27 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Assigning related <V04/L3> to <I8>
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
DefList: { }
N029 ( 1, 1) [000013] ----------- * LCL_VAR long V04 tmp1 u:1 NA REG NA <l:$2cc, c:$2cd>
DefList: { }
N031 ( 1, 4) [000015] -------N--- * CNS_INT long 0x44b82fa09b5a53 REG NA $103
Interval 9: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #13 @32 RefTypeDef <Ivl:9> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N031.t15. CNS_INT }
N033 (???,???) [000074] -c--------- * CNS_INT int 9 REG NA
Contained
DefList: { N031.t15. CNS_INT }
N035 (???,???) [000075] ----------- * RSZ long REG rax
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
Interval 10: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #15 @36 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #16 @36 RefTypeDef <Ivl:10> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N031.t15. CNS_INT; N035.t75. RSZ }
N037 (???,???) [000076] ---------U- * MULHI long REG NA
<RefPosition #17 @37 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #18 @37 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #19 @38 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
Interval 11: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #20 @38 RefTypeDef <Ivl:11> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N037.t76. MULHI }
N039 (???,???) [000077] -c--------- * CNS_INT int 11 REG NA
Contained
DefList: { N037.t76. MULHI }
N041 ( 22, 8) [000016] ----------- * RSZ long REG NA
<RefPosition #21 @41 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 12: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #22 @42 RefTypeDef <Ivl:12> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I12> to <I11>
DefList: { N041.t16. RSZ }
N043 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 NA REG NA $VN.Void
<RefPosition #23 @43 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Assigning related <V01/L1> to <I12>
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00>
DefList: { }
N045 ( 1, 1) [000019] -----+----- * LCL_VAR long V01 loc0 u:1 NA REG NA <l:$2d0, c:$2d1>
DefList: { }
N047 ( 1, 1) [000020] -c---+----- * CNS_INT int 32 REG NA $44
Contained
DefList: { }
N049 ( 3, 3) [000021] -----+----- * RSZ long REG NA <l:$2d2, c:$2d3>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00>
Interval 13: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #26 @50 RefTypeDef <Ivl:13> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N049.t21. RSZ }
N051 ( 4, 5) [000022] -----+----- * CAST int <- uint <- long REG NA <l:$284, c:$285>
<RefPosition #27 @51 RefTypeUse <Ivl:13> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 14: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #28 @52 RefTypeDef <Ivl:14> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I14> to <I13>
DefList: { N051.t22. CAST }
N053 ( 1, 1) [000018] -----+----- * LCL_VAR byref V00 arg0 u:1 NA REG NA $80
DefList: { N051.t22. CAST }
N055 ( 2, 2) [000066] -c---+----- * LEA(b+4) byref REG NA
Contained
DefList: { N051.t22. CAST }
N057 ( 9, 10) [000024] nA--G+----- * STOREIND int REG NA $VN.Void
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
<RefPosition #30 @57 RefTypeUse <Ivl:14> BB01 regmask=[allInt] minReg=1 last wt=100.00>
DefList: { }
N059 ( 1, 1) [000025] -----+----- * LCL_VAR byref V00 arg0 u:1 NA REG NA $80
DefList: { }
N061 ( 2, 2) [000068] -c---+----- * LEA(b+12) byref REG NA
Contained
DefList: { }
N063 ( 1, 1) [000026] -----+----- * LCL_VAR int V01 loc0 u:1 NA REG NA <l:$286, c:$287>
DefList: { }
N065 ( 6, 6) [000029] nA--G+----- * STOREIND int REG NA $VN.Void
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00>
DefList: { }
N067 ( 1, 1) [000012] -----+----- * LCL_VAR long V04 tmp1 u:1 NA (last use) REG NA <l:$2cc, c:$2cd>
DefList: { }
N069 ( 1, 1) [000030] -----+----- * LCL_VAR int V01 loc0 u:1 NA (last use) REG NA <l:$286, c:$287>
DefList: { }
N071 ( 1, 4) [000032] -c---+----- * CNS_INT int 0x3B9ACA00 REG NA $47
Contained
DefList: { }
N073 ( 6, 8) [000033] -----+----- * MUL int REG NA <l:$288, c:$289>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00>
Interval 15: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #34 @74 RefTypeDef <Ivl:15> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N073.t33. MUL }
N075 ( 7, 10) [000034] -----+---U- * CAST long <- ulong <- uint REG NA <l:$2d4, c:$2d5>
<RefPosition #35 @75 RefTypeUse <Ivl:15> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 16: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #36 @76 RefTypeDef <Ivl:16> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N075.t34. CAST }
N077 ( 9, 12) [000035] -----+----- * SUB long REG NA <l:$2d6, c:$2d7>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #38 @77 RefTypeUse <Ivl:16> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 17: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #39 @78 RefTypeDef <Ivl:17> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I17> to <V04/L3>
DefList: { N077.t35. SUB }
N079 ( 1, 1) [000036] -c---+----- * CNS_INT int 32 REG NA $44
Contained
DefList: { N077.t35. SUB }
N081 ( 11, 14) [000037] -----+----- * LSH long REG NA <l:$2d8, c:$2d9>
<RefPosition #40 @81 RefTypeUse <Ivl:17> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 18: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #41 @82 RefTypeDef <Ivl:18> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I18> to <I17>
DefList: { N081.t37. LSH }
N083 ( 1, 1) [000038] -----+----- * LCL_VAR byref V00 arg0 u:1 NA REG NA $80
DefList: { N081.t37. LSH }
N085 ( 2, 2) [000070] -c---+----- * LEA(b+8) byref REG NA
Contained
DefList: { N081.t37. LSH }
N087 ( 4, 4) [000040] nc--G+----- * IND int REG NA <l:$182, c:$1c2>
Contained
DefList: { N081.t37. LSH }
N089 ( 5, 6) [000041] ----G+---U- * CAST long <- ulong <- uint REG NA <l:$2da, c:$2db>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
Interval 19: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #43 @90 RefTypeDef <Ivl:19> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N081.t37. LSH; N089.t41. CAST }
N091 ( 17, 21) [000042] ----G+----- * ADD long REG NA <l:$2dc, c:$2dd>
<RefPosition #44 @91 RefTypeUse <Ivl:18> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #45 @91 RefTypeUse <Ivl:19> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 20: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #46 @92 RefTypeDef <Ivl:20> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I20> to <I18>
Assigning related <I20> to <I19>
DefList: { N091.t42. ADD }
N093 ( 17, 21) [000043] DA--G+----- * STORE_LCL_VAR long V05 tmp2 d:1 NA REG NA $VN.Void
<RefPosition #47 @93 RefTypeUse <Ivl:20> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Assigning related <V05/L4> to <I20>
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
DefList: { }
N095 ( 1, 1) [000045] ----------- * LCL_VAR long V05 tmp2 u:1 NA REG NA <l:$2dc, c:$2dd>
DefList: { }
N097 ( 1, 4) [000047] -------N--- * CNS_INT long 0x44b82fa09b5a53 REG NA $103
Interval 21: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #49 @98 RefTypeDef <Ivl:21> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N097.t47. CNS_INT }
N099 (???,???) [000078] -c--------- * CNS_INT int 9 REG NA
Contained
DefList: { N097.t47. CNS_INT }
N101 (???,???) [000079] ----------- * RSZ long REG rax
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
Interval 22: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #51 @102 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #52 @102 RefTypeDef <Ivl:22> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N097.t47. CNS_INT; N101.t79. RSZ }
N103 (???,???) [000080] ---------U- * MULHI long REG NA
<RefPosition #53 @103 RefTypeUse <Ivl:22> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #54 @103 RefTypeUse <Ivl:21> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #55 @104 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
Interval 23: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #56 @104 RefTypeDef <Ivl:23> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N103.t80. MULHI }
N105 (???,???) [000081] -c--------- * CNS_INT int 11 REG NA
Contained
DefList: { N103.t80. MULHI }
N107 ( 22, 8) [000048] ----------- * RSZ long REG NA
<RefPosition #57 @107 RefTypeUse <Ivl:23> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 24: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #58 @108 RefTypeDef <Ivl:24> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I24> to <I23>
DefList: { N107.t48. RSZ }
N109 ( 23, 10) [000049] ----------- * CAST int <- uint <- long REG NA <l:$28a, c:$28b>
<RefPosition #59 @109 RefTypeUse <Ivl:24> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 25: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #60 @110 RefTypeDef <Ivl:25> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I25> to <I24>
DefList: { N109.t49. CAST }
N111 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 NA REG NA $VN.Void
<RefPosition #61 @111 RefTypeUse <Ivl:25> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Assigning related <V02/L2> to <I25>
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=300.00>
DefList: { }
N113 ( 1, 1) [000051] -----+----- * LCL_VAR byref V00 arg0 u:1 NA (last use) REG NA $80
DefList: { }
N115 ( 2, 2) [000072] -c---+----- * LEA(b+8) byref REG NA
Contained
DefList: { }
N117 ( 1, 1) [000052] -----+----- * LCL_VAR int V02 loc1 u:1 NA REG NA <l:$28a, c:$28b>
DefList: { }
N119 ( 6, 6) [000054] nA--G+----- * STOREIND int REG NA $VN.Void
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=300.00>
DefList: { }
N121 ( 1, 1) [000044] -----+----- * LCL_VAR int V05 tmp2 u:1 NA (last use) REG NA <l:$28c, c:$28d>
DefList: { }
N123 ( 1, 1) [000056] -----+----- * LCL_VAR int V02 loc1 u:1 NA (last use) REG NA <l:$28a, c:$28b>
DefList: { }
N125 ( 1, 4) [000057] -c---+----- * CNS_INT int 0x3B9ACA00 REG NA $47
Contained
DefList: { }
N127 ( 6, 8) [000058] -----+----- * MUL int REG NA <l:$28e, c:$28f>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=300.00>
Interval 26: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #66 @128 RefTypeDef <Ivl:26> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
DefList: { N127.t58. MUL }
N129 ( 8, 10) [000059] -----+----- * SUB int REG NA <l:$290, c:$291>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #68 @129 RefTypeUse <Ivl:26> BB01 regmask=[allInt] minReg=1 last wt=100.00>
Interval 27: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask]
<RefPosition #69 @130 RefTypeDef <Ivl:27> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
Assigning related <I27> to <V05/L4>
DefList: { N129.t59. SUB }
N131 ( 9, 11) [000060] -----+----- * RETURN int REG NA $VN.Void
<RefPosition #70 @131 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @131 RefTypeUse <Ivl:27> BB01 regmask=[rax] minReg=1 last fixed wt=100.00>
CHECKING LAST USES for BB01, liveout={}
==============================
use: {V00}
def: {V01 V02 V04 V05}
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: (V00) byref RefPositions {#0@0 #2@11 #6@23 #29@57 #31@65 #42@89 #63@119} physReg:rcx Preferences=[rcx] Aversions=[rdx]
Interval 1: (V01) long RefPositions {#24@44 #25@49 #32@65 #33@73} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 2: (V02) int RefPositions {#62@112 #64@119 #65@127} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 3: (V04) long RefPositions {#12@28 #14@35 #37@77} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I17>
Interval 4: (V05) long RefPositions {#48@94 #50@101 #67@129} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I27>
Interval 5: long RefPositions {#3@12 #4@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I6>
Interval 6: long RefPositions {#5@16 #8@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 7: long RefPositions {#7@24 #9@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 8: long RefPositions {#10@26 #11@27} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V04/L3>
Interval 9: long (constant) RefPositions {#13@32 #18@37} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 10: long RefPositions {#16@36 #17@37} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 11: long RefPositions {#20@38 #21@41} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I12>
Interval 12: long RefPositions {#22@42 #23@43} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V01/L1>
Interval 13: long RefPositions {#26@50 #27@51} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I14>
Interval 14: int RefPositions {#28@52 #30@57} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 15: int RefPositions {#34@74 #35@75} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 16: long RefPositions {#36@76 #38@77} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 17: long (interfering uses) RefPositions {#39@78 #40@81} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I18>
Interval 18: long RefPositions {#41@82 #44@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 19: long RefPositions {#43@90 #45@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 20: long RefPositions {#46@92 #47@93} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V05/L4>
Interval 21: long (constant) RefPositions {#49@98 #54@103} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 22: long RefPositions {#52@102 #53@103} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 23: long RefPositions {#56@104 #57@107} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I24>
Interval 24: long RefPositions {#58@108 #59@109} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I25>
Interval 25: int RefPositions {#60@110 #61@111} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V02/L2>
Interval 26: int RefPositions {#66@128 #68@129} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 27: int (interfering uses) RefPositions {#69@130 #71@131} physReg:NA Preferences=[rax] Aversions=[allMask]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #3 @12 RefTypeDef <Ivl:5> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #4 @15 RefTypeUse <Ivl:5> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #5 @16 RefTypeDef <Ivl:6> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #7 @24 RefTypeDef <Ivl:7> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #8 @25 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #9 @25 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #10 @26 RefTypeDef <Ivl:8> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #11 @27 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #13 @32 RefTypeDef <Ivl:9> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #15 @36 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #16 @36 RefTypeDef <Ivl:10> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #17 @37 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #18 @37 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #19 @38 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #20 @38 RefTypeDef <Ivl:11> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #21 @41 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #22 @42 RefTypeDef <Ivl:12> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #23 @43 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #26 @50 RefTypeDef <Ivl:13> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #27 @51 RefTypeUse <Ivl:13> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #28 @52 RefTypeDef <Ivl:14> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #30 @57 RefTypeUse <Ivl:14> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00>
<RefPosition #34 @74 RefTypeDef <Ivl:15> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #35 @75 RefTypeUse <Ivl:15> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #36 @76 RefTypeDef <Ivl:16> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #38 @77 RefTypeUse <Ivl:16> BB01 regmask=[allInt] minReg=1 last delay regOptional wt=100.00>
<RefPosition #39 @78 RefTypeDef <Ivl:17> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #40 @81 RefTypeUse <Ivl:17> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #41 @82 RefTypeDef <Ivl:18> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #43 @90 RefTypeDef <Ivl:19> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #44 @91 RefTypeUse <Ivl:18> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #45 @91 RefTypeUse <Ivl:19> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #46 @92 RefTypeDef <Ivl:20> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #47 @93 RefTypeUse <Ivl:20> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #49 @98 RefTypeDef <Ivl:21> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #51 @102 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #52 @102 RefTypeDef <Ivl:22> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #53 @103 RefTypeUse <Ivl:22> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #54 @103 RefTypeUse <Ivl:21> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #55 @104 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #56 @104 RefTypeDef <Ivl:23> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #57 @107 RefTypeUse <Ivl:23> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #58 @108 RefTypeDef <Ivl:24> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #59 @109 RefTypeUse <Ivl:24> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #60 @110 RefTypeDef <Ivl:25> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #61 @111 RefTypeUse <Ivl:25> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=300.00>
<RefPosition #66 @128 RefTypeDef <Ivl:26> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #68 @129 RefTypeUse <Ivl:26> BB01 regmask=[allInt] minReg=1 last delay regOptional wt=100.00>
<RefPosition #69 @130 RefTypeDef <Ivl:27> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #70 @131 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @131 RefTypeUse <Ivl:27> BB01 regmask=[rax] minReg=1 last fixed wt=100.00>
------------
REFPOSITIONS DURING VALIDATE INTERVALS (RefPositions per interval)
------------
-----------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
-----------------
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
-----------------
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
-----------------
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00>
-----------------
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=300.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: V00
BB01 [0000] [000..05E) (return), preds={} succs={}
=====
N003. IL_OFFSET INLRT @ 0x000[E-]
N005. V00(L0)
N007. LEA(b+4)
N009. IND
N011. CAST
Use:<V00/L0>(#2)
Def:<I5>(#3) Pref:<I6>
N013. CNS_INT 32
N015. LSH
Use:<I5>(#4) *
Def:<I6>(#5) Pref:<I8>
N017. V00(L0)
N019. LEA(b+12)
N021. IND
N023. CAST
Use:<V00/L0>(#6)
Def:<I7>(#7) Pref:<I8>
N025. ADD
Use:<I6>(#8) *
Use:<I7>(#9) *
Def:<I8>(#10) Pref:<V04/L3>
N027. V04(L3)
Use:<I8>(#11) *
Def:<V04/L3>(#12) Pref:<I17>
N029. V04(L3)
N031. CNS_INT 0x44b82fa09b5a53
Def:<I9>(#13)
N033. CNS_INT 9
N035. RSZ
Use:<V04/L3>(#14)
Def:<I10>(#16) rax
N037. MULHI
Use:<I10>(#17) *
Use:<I9>(#18) *
Kill: [rdx]
Def:<I11>(#20) Pref:<I12>
N039. CNS_INT 11
N041. RSZ
Use:<I11>(#21) *
Def:<I12>(#22) Pref:<V01/L1>
N043. V01(L1)
Use:<I12>(#23) *
Def:<V01/L1>(#24)
N045. V01(L1)
N047. CNS_INT 32
N049. RSZ
Use:<V01/L1>(#25)
Def:<I13>(#26) Pref:<I14>
N051. CAST
Use:<I13>(#27) *
Def:<I14>(#28)
N053. V00(L0)
N055. LEA(b+4)
N057. STOREIND
Use:<V00/L0>(#29)
Use:<I14>(#30) *
N059. V00(L0)
N061. LEA(b+12)
N063. V01(L1)
N065. STOREIND
Use:<V00/L0>(#31)
Use:<V01/L1>(#32)
N067. V04(L3)
N069. V01(L1)
N071. CNS_INT 0x3B9ACA00
N073. MUL
Use:<V01/L1>(#33) *
Def:<I15>(#34)
N075. CAST
Use:<I15>(#35) *
Def:<I16>(#36)
N077. SUB
Use:<V04/L3>(#37) *
Use:<I16>(#38) *
Def:<I17>(#39) Pref:<I18>
N079. CNS_INT 32
N081. LSH
Use:<I17>(#40) *
Def:<I18>(#41) Pref:<I20>
N083. V00(L0)
N085. LEA(b+8)
N087. IND
N089. CAST
Use:<V00/L0>(#42)
Def:<I19>(#43) Pref:<I20>
N091. ADD
Use:<I18>(#44) *
Use:<I19>(#45) *
Def:<I20>(#46) Pref:<V05/L4>
N093. V05(L4)
Use:<I20>(#47) *
Def:<V05/L4>(#48) Pref:<I27>
N095. V05(L4)
N097. CNS_INT 0x44b82fa09b5a53
Def:<I21>(#49)
N099. CNS_INT 9
N101. RSZ
Use:<V05/L4>(#50)
Def:<I22>(#52) rax
N103. MULHI
Use:<I22>(#53) *
Use:<I21>(#54) *
Kill: [rdx]
Def:<I23>(#56) Pref:<I24>
N105. CNS_INT 11
N107. RSZ
Use:<I23>(#57) *
Def:<I24>(#58) Pref:<I25>
N109. CAST
Use:<I24>(#59) *
Def:<I25>(#60) Pref:<V02/L2>
N111. V02(L2)
Use:<I25>(#61) *
Def:<V02/L2>(#62)
N113. V00(L0)
N115. LEA(b+8)
N117. V02(L2)
N119. STOREIND
Use:<V00/L0>(#63) *
Use:<V02/L2>(#64)
N121. V05(L4)
N123. V02(L2)
N125. CNS_INT 0x3B9ACA00
N127. MUL
Use:<V02/L2>(#65) *
Def:<I26>(#66)
N129. SUB
Use:<V05/L4>(#67) *
Use:<I26>(#68) *
Def:<I27>(#69)
N131. RETURN
Use:<I27>(#71) Fixed:rax(#70) *
Linear scan intervals after buildIntervals:
Interval 0: (V00) byref RefPositions {#0@0 #2@11 #6@23 #29@57 #31@65 #42@89 #63@119} physReg:rcx Preferences=[rcx] Aversions=[rdx]
Interval 1: (V01) long RefPositions {#24@44 #25@49 #32@65 #33@73} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 2: (V02) int RefPositions {#62@112 #64@119 #65@127} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 3: (V04) long RefPositions {#12@28 #14@35 #37@77} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I17>
Interval 4: (V05) long RefPositions {#48@94 #50@101 #67@129} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I27>
Interval 5: long RefPositions {#3@12 #4@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I6>
Interval 6: long RefPositions {#5@16 #8@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 7: long RefPositions {#7@24 #9@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 8: long RefPositions {#10@26 #11@27} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V04/L3>
Interval 9: long (constant) RefPositions {#13@32 #18@37} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 10: long RefPositions {#16@36 #17@37} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 11: long RefPositions {#20@38 #21@41} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I12>
Interval 12: long RefPositions {#22@42 #23@43} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V01/L1>
Interval 13: long RefPositions {#26@50 #27@51} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I14>
Interval 14: int RefPositions {#28@52 #30@57} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 15: int RefPositions {#34@74 #35@75} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 16: long RefPositions {#36@76 #38@77} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 17: long (interfering uses) RefPositions {#39@78 #40@81} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I18>
Interval 18: long RefPositions {#41@82 #44@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 19: long RefPositions {#43@90 #45@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 20: long RefPositions {#46@92 #47@93} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V05/L4>
Interval 21: long (constant) RefPositions {#49@98 #54@103} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 22: long RefPositions {#52@102 #53@103} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 23: long RefPositions {#56@104 #57@107} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I24>
Interval 24: long RefPositions {#58@108 #59@109} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I25>
Interval 25: int RefPositions {#60@110 #61@111} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V02/L2>
Interval 26: int RefPositions {#66@128 #68@129} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 27: int (interfering uses) RefPositions {#69@130 #71@131} physReg:NA Preferences=[rax] Aversions=[allMask]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: (V00) byref RefPositions {#0@0 #2@11 #6@23 #29@57 #31@65 #42@89 #63@119} physReg:rcx Preferences=[rcx] Aversions=[rdx]
Interval 1: (V01) long RefPositions {#24@44 #25@49 #32@65 #33@73} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 2: (V02) int RefPositions {#62@112 #64@119 #65@127} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 3: (V04) long RefPositions {#12@28 #14@35 #37@77} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I17>
Interval 4: (V05) long RefPositions {#48@94 #50@101 #67@129} physReg:NA Preferences=[rax rcx rbx rbp rsi rdi r8-r15] Aversions=[rdx] RelatedInterval <I27>
Interval 5: long RefPositions {#3@12 #4@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I6>
Interval 6: long RefPositions {#5@16 #8@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 7: long RefPositions {#7@24 #9@25} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I8>
Interval 8: long RefPositions {#10@26 #11@27} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V04/L3>
Interval 9: long (constant) RefPositions {#13@32 #18@37} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 10: long RefPositions {#16@36 #17@37} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 11: long RefPositions {#20@38 #21@41} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I12>
Interval 12: long RefPositions {#22@42 #23@43} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V01/L1>
Interval 13: long RefPositions {#26@50 #27@51} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I14>
Interval 14: int RefPositions {#28@52 #30@57} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 15: int RefPositions {#34@74 #35@75} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 16: long RefPositions {#36@76 #38@77} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 17: long (interfering uses) RefPositions {#39@78 #40@81} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I18>
Interval 18: long RefPositions {#41@82 #44@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 19: long RefPositions {#43@90 #45@91} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I20>
Interval 20: long RefPositions {#46@92 #47@93} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V05/L4>
Interval 21: long (constant) RefPositions {#49@98 #54@103} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 22: long RefPositions {#52@102 #53@103} physReg:NA Preferences=[rax] Aversions=[allMask]
Interval 23: long RefPositions {#56@104 #57@107} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I24>
Interval 24: long RefPositions {#58@108 #59@109} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <I25>
Interval 25: int RefPositions {#60@110 #61@111} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval <V02/L2>
Interval 26: int RefPositions {#66@128 #68@129} physReg:NA Preferences=[allInt] Aversions=[allMask]
Interval 27: int (interfering uses) RefPositions {#69@130 #71@131} physReg:NA Preferences=[rax] Aversions=[allMask]
------------
REFPOSITIONS BEFORE ALLOCATION:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #3 @12 RefTypeDef <Ivl:5> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #4 @15 RefTypeUse <Ivl:5> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #5 @16 RefTypeDef <Ivl:6> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #7 @24 RefTypeDef <Ivl:7> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #8 @25 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #9 @25 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #10 @26 RefTypeDef <Ivl:8> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #11 @27 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #13 @32 RefTypeDef <Ivl:9> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #15 @36 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #16 @36 RefTypeDef <Ivl:10> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #17 @37 RefTypeUse <Ivl:10> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #18 @37 RefTypeUse <Ivl:9> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #19 @38 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #20 @38 RefTypeDef <Ivl:11> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #21 @41 RefTypeUse <Ivl:11> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #22 @42 RefTypeDef <Ivl:12> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #23 @43 RefTypeUse <Ivl:12> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #26 @50 RefTypeDef <Ivl:13> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #27 @51 RefTypeUse <Ivl:13> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #28 @52 RefTypeDef <Ivl:14> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #30 @57 RefTypeUse <Ivl:14> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00>
<RefPosition #34 @74 RefTypeDef <Ivl:15> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #35 @75 RefTypeUse <Ivl:15> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #36 @76 RefTypeDef <Ivl:16> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #38 @77 RefTypeUse <Ivl:16> BB01 regmask=[allInt] minReg=1 last delay regOptional wt=100.00>
<RefPosition #39 @78 RefTypeDef <Ivl:17> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #40 @81 RefTypeUse <Ivl:17> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #41 @82 RefTypeDef <Ivl:18> LSH BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #43 @90 RefTypeDef <Ivl:19> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #44 @91 RefTypeUse <Ivl:18> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #45 @91 RefTypeUse <Ivl:19> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #46 @92 RefTypeDef <Ivl:20> ADD BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #47 @93 RefTypeUse <Ivl:20> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #49 @98 RefTypeDef <Ivl:21> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #51 @102 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #52 @102 RefTypeDef <Ivl:22> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #53 @103 RefTypeUse <Ivl:22> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #54 @103 RefTypeUse <Ivl:21> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #55 @104 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #56 @104 RefTypeDef <Ivl:23> MULHI BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #57 @107 RefTypeUse <Ivl:23> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #58 @108 RefTypeDef <Ivl:24> RSZ BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #59 @109 RefTypeUse <Ivl:24> BB01 regmask=[allInt] minReg=1 last regOptional wt=100.00>
<RefPosition #60 @110 RefTypeDef <Ivl:25> CAST BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #61 @111 RefTypeUse <Ivl:25> BB01 regmask=[allInt] minReg=1 last wt=100.00>
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=300.00>
<RefPosition #66 @128 RefTypeDef <Ivl:26> MUL BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
<RefPosition #68 @129 RefTypeUse <Ivl:26> BB01 regmask=[allInt] minReg=1 last delay regOptional wt=100.00>
<RefPosition #69 @130 RefTypeDef <Ivl:27> SUB BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #70 @131 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @131 RefTypeUse <Ivl:27> BB01 regmask=[rax] minReg=1 last fixed wt=100.00>
VAR REFPOSITIONS BEFORE ALLOCATION
--- V00 (Interval 0)
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=800.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=800.00>
--- V01 (Interval 1)
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00>
--- V02 (Interval 2)
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=300.00>
--- V03
--- V04 (Interval 3)
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
--- V05 (Interval 4)
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=600.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=600.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The columns are: (1) Loc: LSRA location, (2) RP#: RefPosition number, (3) Name, (4) Type (e.g. Def, Use,
Fixd, Parm, DDef (Dummy Def), ExpU (Exposed Use), Kill) followed by a '*' if it is a last use, and a 'D'
if it is delayRegFree, (5) Action taken during allocation. Some actions include (a) Alloc a new register,
(b) Keep an existing register, (c) Spill a register, (d) ReLod (Reload) a register. If an ALL-CAPS name
such as COVRS is displayed, it is a score name from lsra_score.h, with a trailing '(A)' indicating alloc,
'(C)' indicating copy, and '(R)' indicating re-use. See dumpLsraAllocationEvent() for details.
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, '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 modified register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in
their column.
-------------------------------------------+----+----+----+----+----+----+----+----+----+
TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
-------------------------------------------+----+----+----+----+----+----+----+----+----+
| |V00a| | | | | | | |
0.#0 V00 Parm Keep rcx | |V00a| | | | | | | |
1.#1 BB1 PredBB0 | |V00a| | | | | | | |
[000003] 11.#2 V00 Use Keep rcx | |V00a| | | | | | | |
12.#3 I5 Def COREL(A) rax |I5 a|V00a| | | | | | | |
[000005] 15.#4 I5 Use * Keep rax |I5 a|V00a| | | | | | | |
16.#5 I6 Def COVRS(A) rax |I6 a|V00a| | | | | | | |
[000009] 23.#6 V00 Use Keep rcx |I6 a|V00a| | | | | | | |
24.#7 I7 Def ORDER(A) r8 |I6 a|V00a| | | | | |I7 a| |
[000010] 25.#8 I6 Use * Keep rax |I6 a|V00a| | | | | |I7 a| |
25.#9 I7 Use * Keep r8 |I6 a|V00a| | | | | |I7 a| |
26.#10 I8 Def RELPR(A) rax |I8 a|V00a| | | | | | | |
[000011] 27.#11 I8 Use * Keep rax |I8 a|V00a| | | | | | | |
28.#12 V04 Def COVRS(A) rax |V04a|V00a| | | | | | | |
[000015] 32.#13 C9 Def BSFIT(A) rdx |V04a|V00a|C9 a| | | | | | |
[000075] 35.#14 V04 Use Keep rax |V04a|V00a|C9 a| | | | | | |
36.#15 rax Fixd Keep rax |V04a|V00a|C9 a| | | | | | |
36.#16 I10 Def Spill rax | |V00a|C9 a| | | | | | |
Alloc rax |I10a|V00a|C9 a| | | | | | |
[000076] 37.#17 I10 Use * Keep rax |I10a|V00a|C9 a| | | | | | |
37.#18 C9 Use * Keep rdx |I10a|V00a|C9 a| | | | | | |
38.#19 Kill None [rdx]
| |V00a| | | | | | | |
38.#20 I11 Def BSFIT(A) rax |I11a|V00a| | | | | | | |
[000016] 41.#21 I11 Use * Keep rax |I11a|V00a| | | | | | | |
42.#22 I12 Def COVRS(A) rax |I12a|V00a| | | | | | | |
[000017] 43.#23 I12 Use * Keep rax |I12a|V00a| | | | | | | |
44.#24 V01 Def COVRS(A) rax |V01a|V00a| | | | | | | |
[000021] 49.#25 V01 Use Keep rax |V01a|V00a| | | | | | | |
50.#26 I13 Def BSFIT(A) rdx |V01a|V00a|I13a| | | | | | |
[000022] 51.#27 I13 Use * Keep rdx |V01a|V00a|I13a| | | | | | |
52.#28 I14 Def COVRS(A) rdx |V01a|V00a|I14a| | | | | | |
[000024] 57.#29 V00 Use Keep rcx |V01a|V00a|I14a| | | | | | |
57.#30 I14 Use * Keep rdx |V01a|V00a|I14a| | | | | | |
[000029] 65.#31 V00 Use Keep rcx |V01a|V00a| | | | | | | |
65.#32 V01 Use Keep rax |V01a|V00a| | | | | | | |
[000033] 73.#33 V01 Use * Keep rax |V01a|V00a| | | | | | | |
74.#34 I15 Def BSFIT(A) rax |I15a|V00a| | | | | | | |
[000034] 75.#35 I15 Use * Keep rax |I15a|V00a| | | | | | | |
76.#36 I16 Def BSFIT(A) rax |I16a|V00a| | | | | | | |
[000035] 77.#37 V04 Use * ReLod NA |I16a|V00a| | | | | | | |
ORDER(A) r8 |I16a|V00a| | | | | |V04a| |
77.#38 I16 Use *D Keep rax |I16a|V00a| | | | | |V04a| |
78.#39 I17 Def COVRS(A) r8 |I16a|V00a| | | | | |I17a| |
[000037] 81.#40 I17 Use * Keep r8 | |V00a| | | | | |I17a| |
82.#41 I18 Def COVRS(A) r8 | |V00a| | | | | |I18a| |
[000041] 89.#42 V00 Use Keep rcx | |V00a| | | | | |I18a| |
90.#43 I19 Def COREL(A) rax |I19a|V00a| | | | | |I18a| |
[000042] 91.#44 I18 Use * Keep r8 |I19a|V00a| | | | | |I18a| |
91.#45 I19 Use * Keep rax |I19a|V00a| | | | | |I18a| |
92.#46 I20 Def RELPR(A) rax |I20a|V00a| | | | | | | |
[000043] 93.#47 I20 Use * Keep rax |I20a|V00a| | | | | | | |
-------------------------------------------+----+----+----+----+----+----+----+----+----+
TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
-------------------------------------------+----+----+----+----+----+----+----+----+----+
94.#48 V05 Def COVRS(A) rax |V05a|V00a| | | | | | | |
[000047] 98.#49 C21 Def BSFIT(A) rdx |V05a|V00a|C21a| | | | | | |
[000079] 101.#50 V05 Use Keep rax |V05a|V00a|C21a| | | | | | |
102.#51 rax Fixd Keep rax |V05a|V00a|C21a| | | | | | |
102.#52 I22 Def Spill rax | |V00a|C21a| | | | | | |
Alloc rax |I22a|V00a|C21a| | | | | | |
[000080] 103.#53 I22 Use * Keep rax |I22a|V00a|C21a| | | | | | |
103.#54 C21 Use * Keep rdx |I22a|V00a|C21a| | | | | | |
104.#55 Kill None [rdx]
| |V00a| | | | | | | |
104.#56 I23 Def BSFIT(A) rax |I23a|V00a| | | | | | | |
[000048] 107.#57 I23 Use * Keep rax |I23a|V00a| | | | | | | |
108.#58 I24 Def COVRS(A) rax |I24a|V00a| | | | | | | |
[000049] 109.#59 I24 Use * Keep rax |I24a|V00a| | | | | | | |
110.#60 I25 Def COVRS(A) rax |I25a|V00a| | | | | | | |
[000050] 111.#61 I25 Use * Keep rax |I25a|V00a| | | | | | | |
112.#62 V02 Def COVRS(A) rax |V02a|V00a| | | | | | | |
[000054] 119.#63 V00 Use * Keep rcx |V02a|V00a| | | | | | | |
119.#64 V02 Use Keep rax |V02a|V00a| | | | | | | |
[000058] 127.#65 V02 Use * Keep rax |V02a| | | | | | | | |
128.#66 I26 Def BSFIT(A) rax |I26a| | | | | | | | |
[000059] 129.#67 V05 Use * ReLod NA |I26a| | | | | | | | |
ORDER(A) rcx |I26a|V05a| | | | | | | |
129.#68 I26 Use *D Keep rax |I26a|V05a| | | | | | | |
130.#69 I27 Def COVRS(A) rcx |I26a|I27a| | | | | | | |
[000060] 131.#70 rax Fixd Keep rax | |I27a| | | | | | | |
131.#71 I27 Use * Copy rax | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION:
------------
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #1 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #3 @12 RefTypeDef <Ivl:5> CAST BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #4 @15 RefTypeUse <Ivl:5> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #5 @16 RefTypeDef <Ivl:6> LSH BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #7 @24 RefTypeDef <Ivl:7> CAST BB01 regmask=[r8] minReg=1 wt=400.00>
<RefPosition #8 @25 RefTypeUse <Ivl:6> BB01 regmask=[rax] minReg=1 last regOptional wt=100.00>
<RefPosition #9 @25 RefTypeUse <Ivl:7> BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #10 @26 RefTypeDef <Ivl:8> ADD BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #11 @27 RefTypeUse <Ivl:8> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 singleDefSpill wt=300.00>
<RefPosition #13 @32 RefTypeDef <Ivl:9> CNS_INT BB01 regmask=[rdx] minReg=1 wt=400.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[rax] minReg=1 spillAfter wt=300.00>
<RefPosition #15 @36 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #16 @36 RefTypeDef <Ivl:10> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #17 @37 RefTypeUse <Ivl:10> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #18 @37 RefTypeUse <Ivl:9> BB01 regmask=[rdx] minReg=1 last regOptional wt=100.00>
<RefPosition #19 @38 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #20 @38 RefTypeDef <Ivl:11> MULHI BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #21 @41 RefTypeUse <Ivl:11> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #22 @42 RefTypeDef <Ivl:12> RSZ BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #23 @43 RefTypeUse <Ivl:12> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #26 @50 RefTypeDef <Ivl:13> RSZ BB01 regmask=[rdx] minReg=1 wt=400.00>
<RefPosition #27 @51 RefTypeUse <Ivl:13> BB01 regmask=[rdx] minReg=1 last regOptional wt=100.00>
<RefPosition #28 @52 RefTypeDef <Ivl:14> CAST BB01 regmask=[rdx] minReg=1 wt=400.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #30 @57 RefTypeUse <Ivl:14> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=400.00>
<RefPosition #34 @74 RefTypeDef <Ivl:15> MUL BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #35 @75 RefTypeUse <Ivl:15> BB01 regmask=[rax] minReg=1 last regOptional wt=100.00>
<RefPosition #36 @76 RefTypeDef <Ivl:16> CAST BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[r8] minReg=1 last reload wt=300.00>
<RefPosition #38 @77 RefTypeUse <Ivl:16> BB01 regmask=[rax] minReg=1 last delay regOptional wt=100.00>
<RefPosition #39 @78 RefTypeDef <Ivl:17> SUB BB01 regmask=[r8] minReg=1 wt=400.00>
<RefPosition #40 @81 RefTypeUse <Ivl:17> BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #41 @82 RefTypeDef <Ivl:18> LSH BB01 regmask=[r8] minReg=1 wt=400.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #43 @90 RefTypeDef <Ivl:19> CAST BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #44 @91 RefTypeUse <Ivl:18> BB01 regmask=[r8] minReg=1 last regOptional wt=100.00>
<RefPosition #45 @91 RefTypeUse <Ivl:19> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #46 @92 RefTypeDef <Ivl:20> ADD BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #47 @93 RefTypeUse <Ivl:20> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 singleDefSpill wt=300.00>
<RefPosition #49 @98 RefTypeDef <Ivl:21> CNS_INT BB01 regmask=[rdx] minReg=1 wt=400.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[rax] minReg=1 spillAfter wt=300.00>
<RefPosition #51 @102 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #52 @102 RefTypeDef <Ivl:22> RSZ BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #53 @103 RefTypeUse <Ivl:22> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #54 @103 RefTypeUse <Ivl:21> BB01 regmask=[rdx] minReg=1 last regOptional wt=100.00>
<RefPosition #55 @104 RefTypeKill BB01 regmask=[rdx] minReg=1 fixed>
<RefPosition #56 @104 RefTypeDef <Ivl:23> MULHI BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #57 @107 RefTypeUse <Ivl:23> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @108 RefTypeDef <Ivl:24> RSZ BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #59 @109 RefTypeUse <Ivl:24> BB01 regmask=[rax] minReg=1 last regOptional wt=100.00>
<RefPosition #60 @110 RefTypeDef <Ivl:25> CAST BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #61 @111 RefTypeUse <Ivl:25> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=300.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last wt=800.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[rax] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=300.00>
<RefPosition #66 @128 RefTypeDef <Ivl:26> MUL BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[rcx] minReg=1 last reload wt=300.00>
<RefPosition #68 @129 RefTypeUse <Ivl:26> BB01 regmask=[rax] minReg=1 last delay regOptional wt=100.00>
<RefPosition #69 @130 RefTypeDef <Ivl:27> SUB BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #70 @131 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @131 RefTypeUse <Ivl:27> BB01 regmask=[rax] minReg=1 last move fixed wt=100.00>
VAR REFPOSITIONS AFTER ALLOCATION
--- V00 (Interval 0)
<RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00>
<RefPosition #2 @11 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #6 @23 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #29 @57 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #31 @65 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #42 @89 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=800.00>
<RefPosition #63 @119 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last wt=800.00>
--- V01 (Interval 1)
<RefPosition #24 @44 RefTypeDef <Ivl:1 V01> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #25 @49 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #32 @65 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00>
<RefPosition #33 @73 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=400.00>
--- V02 (Interval 2)
<RefPosition #62 @112 RefTypeDef <Ivl:2 V02> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=300.00>
<RefPosition #64 @119 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[rax] minReg=1 wt=300.00>
<RefPosition #65 @127 RefTypeUse <Ivl:2 V02> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=300.00>
--- V03
--- V04 (Interval 3)
<RefPosition #12 @28 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 singleDefSpill wt=300.00>
<RefPosition #14 @35 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[rax] minReg=1 spillAfter wt=300.00>
<RefPosition #37 @77 RefTypeUse <Ivl:3 V04> LCL_VAR BB01 regmask=[r8] minReg=1 last reload wt=300.00>
--- V05 (Interval 4)
<RefPosition #48 @94 RefTypeDef <Ivl:4 V05> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 singleDefSpill wt=300.00>
<RefPosition #50 @101 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[rax] minReg=1 spillAfter wt=300.00>
<RefPosition #67 @129 RefTypeUse <Ivl:4 V05> LCL_VAR BB01 regmask=[rcx] minReg=1 last reload wt=300.00>
Active intervals at end of allocation:
-----------------------
RESOLVING BB BOUNDARIES
-----------------------
Resolution Candidates: {V00}
Has No Critical Edges
Prior to Resolution
BB01
use: {V00}
def: {V01 V02 V04 V05}
in: {V00}
out: {}
Var=Reg beg of BB01: V00=rcx
Var=Reg end of BB01: none
RESOLVING EDGES
Set V00 argument initial register to rcx
Trees after linear scan register allocator (LSRA)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
N003 (???,???) [000073] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA
N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t0 byref
N007 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref REG NA
/--* t62 byref
N009 ( 4, 4) [000002] -c-XG------ t2 = * IND int REG NA <l:$281, c:$280>
/--* t2 int
N011 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint REG rax <l:$2c1, c:$2c3>
N013 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 REG NA $44
/--* t3 long
+--* t4 int
N015 ( 7, 8) [000005] ---XG------ t5 = * LSH long REG rax <l:$2c7, c:$2c6>
N017 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t6 byref
N019 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref REG NA
/--* t64 byref
N021 ( 4, 4) [000008] nc--GO----- t8 = * IND int REG NA <l:$283, c:$282>
/--* t8 int
N023 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint REG r8 <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N025 ( 13, 15) [000010] ---XGO----- t10 = * ADD long REG rax <l:$2cf, c:$2ce>
/--* t10 long
N027 ( 13, 15) [000011] DA-XGO----# * STORE_LCL_VAR long V04 tmp1 d:1 rax REG rax $241
N029 ( 1, 1) [000013] ----------Z t13 = LCL_VAR long V04 tmp1 u:1 rax REG rax <l:$2cc, c:$2cd>
N031 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
N033 (???,???) [000074] -c--------- t74 = CNS_INT int 9 REG NA
/--* t13 long
+--* t74 int
N035 (???,???) [000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
N037 (???,???) [000076] ---------U- t76 = * MULHI long REG rax
N039 (???,???) [000077] -c--------- t77 = CNS_INT int 11 REG NA
/--* t76 long
+--* t77 int
N041 ( 22, 8) [000016] ----------- t16 = * RSZ long REG rax
/--* t16 long
N043 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 rax REG rax $VN.Void
N045 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 rax REG rax <l:$2d0, c:$2d1>
N047 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 REG NA $44
/--* t19 long
+--* t20 int
N049 ( 3, 3) [000021] -----+----- t21 = * RSZ long REG rdx <l:$2d2, c:$2d3>
/--* t21 long
N051 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long REG rdx <l:$284, c:$285>
N053 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t18 byref
N055 ( 2, 2) [000066] -c---+----- t66 = * LEA(b+4) byref REG NA
/--* t66 byref
+--* t22 int
N057 ( 9, 10) [000024] nA--G+----- * STOREIND int REG NA $VN.Void
N059 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t25 byref
N061 ( 2, 2) [000068] -c---+----- t68 = * LEA(b+12) byref REG NA
N063 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 rax REG rax <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N065 ( 6, 6) [000029] nA--G+----- * STOREIND int REG NA $VN.Void
N067 ( 1, 1) [000012] -----+----z t12 = LCL_VAR long V04 tmp1 u:1 r8 (last use) REG r8 <l:$2cc, c:$2cd>
N069 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 rax (last use) REG rax <l:$286, c:$287>
N071 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t30 int
+--* t32 int
N073 ( 6, 8) [000033] -----+----- t33 = * MUL int REG rax <l:$288, c:$289>
/--* t33 int
N075 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint REG rax <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N077 ( 9, 12) [000035] -----+----- t35 = * SUB long REG r8 <l:$2d6, c:$2d7>
N079 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 REG NA $44
/--* t35 long
+--* t36 int
N081 ( 11, 14) [000037] -----+----- t37 = * LSH long REG r8 <l:$2d8, c:$2d9>
N083 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t38 byref
N085 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref REG NA
/--* t70 byref
N087 ( 4, 4) [000040] nc--G+----- t40 = * IND int REG NA <l:$182, c:$1c2>
/--* t40 int
N089 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint REG rax <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N091 ( 17, 21) [000042] ----G+----- t42 = * ADD long REG rax <l:$2dc, c:$2dd>
/--* t42 long
N093 ( 17, 21) [000043] DA--G+----# * STORE_LCL_VAR long V05 tmp2 d:1 rax REG rax $VN.Void
N095 ( 1, 1) [000045] ----------Z t45 = LCL_VAR long V05 tmp2 u:1 rax REG rax <l:$2dc, c:$2dd>
N097 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
N099 (???,???) [000078] -c--------- t78 = CNS_INT int 9 REG NA
/--* t45 long
+--* t78 int
N101 (???,???) [000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
N103 (???,???) [000080] ---------U- t80 = * MULHI long REG rax
N105 (???,???) [000081] -c--------- t81 = CNS_INT int 11 REG NA
/--* t80 long
+--* t81 int
N107 ( 22, 8) [000048] ----------- t48 = * RSZ long REG rax
/--* t48 long
N109 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long REG rax <l:$28a, c:$28b>
/--* t49 int
N111 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 rax REG rax $VN.Void
N113 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80
/--* t51 byref
N115 ( 2, 2) [000072] -c---+----- t72 = * LEA(b+8) byref REG NA
N117 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 rax REG rax <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N119 ( 6, 6) [000054] nA--G+----- * STOREIND int REG NA $VN.Void
N121 ( 1, 1) [000044] -----+----z t44 = LCL_VAR int V05 tmp2 u:1 rcx (last use) REG rcx <l:$28c, c:$28d>
N123 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 rax (last use) REG rax <l:$28a, c:$28b>
N125 ( 1, 4) [000057] -c---+----- t57 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t56 int
+--* t57 int
N127 ( 6, 8) [000058] -----+----- t58 = * MUL int REG rax <l:$28e, c:$28f>
/--* t44 int
+--* t58 int
N129 ( 8, 10) [000059] -----+----- t59 = * SUB int REG rcx <l:$290, c:$291>
/--* t59 int
[000082] ----------- t82 = * COPY int REG rax
/--* t82 int
N131 ( 9, 11) [000060] -----+----- * RETURN int REG NA $VN.Void
-------------------------------------------------------------------------------------------------------------------
Final allocation
-------------------------------------------+----+----+----+----+----+----+----+----+----+
TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |
-------------------------------------------+----+----+----+----+----+----+----+----+----+
0.#0 V00 Parm Alloc rcx | |V00a| | | | | | | |
1.#1 BB1 PredBB0 | |V00a| | | | | | | |
[000003] 11.#2 V00 Use Keep rcx | |V00a| | | | | | | |
12.#3 I5 Def Alloc rax |I5 a|V00a| | | | | | | |
[000005] 15.#4 I5 Use * Keep rax |I5 i|V00a| | | | | | | |
16.#5 I6 Def Alloc rax |I6 a|V00a| | | | | | | |
[000009] 23.#6 V00 Use Keep rcx |I6 a|V00a| | | | | | | |
24.#7 I7 Def Alloc r8 |I6 a|V00a| | | | | |I7 a| |
[000010] 25.#8 I6 Use * Keep rax |I6 i|V00a| | | | | |I7 a| |
25.#9 I7 Use * Keep r8 | |V00a| | | | | |I7 i| |
26.#10 I8 Def Alloc rax |I8 a|V00a| | | | | | | |
[000011] 27.#11 I8 Use * Keep rax |I8 i|V00a| | | | | | | |
28.#12 V04 Def Alloc rax |V04a|V00a| | | | | | | |
[000015] 32.#13 C9 Def Alloc rdx |V04a|V00a|C9 a| | | | | | |
[000075] 35.#14 V04 Use Keep rax |V04i|V00a|C9 a| | | | | | |
Spill rax |V04i|V00a|C9 a| | | | | | |
36.#15 rax Fixd Keep rax | |V00a|C9 a| | | | | | |
36.#16 I10 Def Alloc rax |I10a|V00a|C9 a| | | | | | |
[000076] 37.#17 I10 Use * Keep rax |I10i|V00a|C9 a| | | | | | |
37.#18 C9 Use * Keep rdx | |V00a|C9 i| | | | | | |
38.#19 Kill None [rdx]
| |V00a| | | | | | | |
38.#20 I11 Def Alloc rax |I11a|V00a| | | | | | | |
[000016] 41.#21 I11 Use * Keep rax |I11i|V00a| | | | | | | |
42.#22 I12 Def Alloc rax |I12a|V00a| | | | | | | |
[000017] 43.#23 I12 Use * Keep rax |I12i|V00a| | | | | | | |
44.#24 V01 Def Alloc rax |V01a|V00a| | | | | | | |
[000021] 49.#25 V01 Use Keep rax |V01a|V00a| | | | | | | |
50.#26 I13 Def Alloc rdx |V01a|V00a|I13a| | | | | | |
[000022] 51.#27 I13 Use * Keep rdx |V01a|V00a|I13i| | | | | | |
52.#28 I14 Def Alloc rdx |V01a|V00a|I14a| | | | | | |
[000024] 57.#29 V00 Use Keep rcx |V01a|V00a|I14a| | | | | | |
57.#30 I14 Use * Keep rdx |V01a|V00a|I14i| | | | | | |
[000029] 65.#31 V00 Use Keep rcx |V01a|V00a| | | | | | | |
65.#32 V01 Use Keep rax |V01a|V00a| | | | | | | |
[000033] 73.#33 V01 Use * Keep rax |V01i|V00a| | | | | | | |
74.#34 I15 Def Alloc rax |I15a|V00a| | | | | | | |
[000034] 75.#35 I15 Use * Keep rax |I15i|V00a| | | | | | | |
76.#36 I16 Def Alloc rax |I16a|V00a| | | | | | | |
[000035] 77.#37 V04 Use * ReLod r8 |I16a|V00a| | | | | |V04a| |
Keep r8 |I16a|V00a| | | | | |V04i| |
77.#38 I16 Use *D Keep rax |I16i|V00a| | | | | | | |
78.#39 I17 Def Alloc r8 | |V00a| | | | | |I17a| |
[000037] 81.#40 I17 Use * Keep r8 | |V00a| | | | | |I17i| |
82.#41 I18 Def Alloc r8 | |V00a| | | | | |I18a| |
[000041] 89.#42 V00 Use Keep rcx | |V00a| | | | | |I18a| |
90.#43 I19 Def Alloc rax |I19a|V00a| | | | | |I18a| |
[000042] 91.#44 I18 Use * Keep r8 |I19a|V00a| | | | | |I18i| |
91.#45 I19 Use * Keep rax |I19i|V00a| | | | | | | |
92.#46 I20 Def Alloc rax |I20a|V00a| | | | | | | |
[000043] 93.#47 I20 Use * Keep rax |I20i|V00a| | | | | | | |
94.#48 V05 Def Alloc rax |V05a|V00a| | | | | | | |
[000047] 98.#49 C21 Def Alloc rdx |V05a|V00a|C21a| | | | | | |
[000079] 101.#50 V05 Use Keep rax |V05i|V00a|C21a| | | | | | |
Spill rax |V05i|V00a|C21a| | | | | | |
102.#51 rax Fixd Keep rax | |V00a|C21a| | | | | | |
102.#52 I22 Def Alloc rax |I22a|V00a|C21a| | | | | | |
[000080] 103.#53 I22 Use * Keep rax |I22i|V00a|C21a| | | | | | |
103.#54 C21 Use * Keep rdx | |V00a|C21i| | | | | | |
104.#55 Kill None [rdx]
| |V00a| | | | | | | |
104.#56 I23 Def Alloc rax |I23a|V00a| | | | | | | |
[000048] 107.#57 I23 Use * Keep rax |I23i|V00a| | | | | | | |
108.#58 I24 Def Alloc rax |I24a|V00a| | | | | | | |
[000049] 109.#59 I24 Use * Keep rax |I24i|V00a| | | | | | | |
110.#60 I25 Def Alloc rax |I25a|V00a| | | | | | | |
[000050] 111.#61 I25 Use * Keep rax |I25i|V00a| | | | | | | |
112.#62 V02 Def Alloc rax |V02a|V00a| | | | | | | |
[000054] 119.#63 V00 Use * Keep rcx |V02a|V00i| | | | | | | |
119.#64 V02 Use Keep rax |V02a| | | | | | | | |
[000058] 127.#65 V02 Use * Keep rax |V02i| | | | | | | | |
128.#66 I26 Def Alloc rax |I26a| | | | | | | | |
[000059] 129.#67 V05 Use * ReLod rcx |I26a|V05a| | | | | | | |
Keep rcx |I26a|V05i| | | | | | | |
129.#68 I26 Use *D Keep rax |I26i| | | | | | | | |
130.#69 I27 Def Alloc rcx | |I27a| | | | | | | |
[000060] 131.#70 rax Fixd Keep rax | |I27a| | | | | | | |
Move rax |I27i| | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 5
Total Reg Cand Vars: 5
Total number of Intervals: 27
Total number of RefPositions: 71
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: SpillCount = 2, CopyReg = 1, COVERS = 12, COVERS_RELATED = 2, RELATED_PREFERENCE = 2, BEST_FIT = 8, REG_ORDER = 3
..........
Total SpillCount : 2 Weighted: 200.000000
Total CopyReg : 1 Weighted: 100.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total COVERS [# 4] : 12 Weighted: 1200.000000
Total COVERS_RELATED [# 6] : 2 Weighted: 200.000000
Total RELATED_PREFERENCE [# 7] : 2 Weighted: 200.000000
Total BEST_FIT [#11] : 8 Weighted: 800.000000
Total REG_ORDER [#13] : 3 Weighted: 300.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: V00(rcx)
BB01 [0000] [000..05E) (return), preds={} succs={}
=====
N003. IL_OFFSET INLRT @ 0x000[E-]
N005. V00(rcx)
N007. STK = LEA(b+4) ; rcx
N009. STK = IND ; STK
N011. rax = CAST ; STK
N013. CNS_INT 32
N015. rax = LSH ; rax
N017. V00(rcx)
N019. STK = LEA(b+12); rcx
N021. STK = IND ; STK
N023. r8 = CAST ; STK
N025. rax = ADD ; rax,r8
$ N027. V04(rax)R; rax
S N029. V04(rax)
N031. rdx = CNS_INT 0x44b82fa09b5a53
N033. CNS_INT 9
N035. rax = RSZ ; rax
N037. rax = MULHI ; rax,rdx
N039. CNS_INT 11
N041. rax = RSZ ; rax
* N043. V01(rax); rax
N045. V01(rax)
N047. CNS_INT 32
N049. rdx = RSZ ; rax
N051. rdx = CAST ; rdx
N053. V00(rcx)
N055. STK = LEA(b+4) ; rcx
N057. STOREIND ; STK,rdx
N059. V00(rcx)
N061. STK = LEA(b+12); rcx
N063. V01(rax)
N065. STOREIND ; STK,rax
N067. V04(r8*)R
N069. V01(rax*)
N071. CNS_INT 0x3B9ACA00
N073. rax = MUL ; rax*
N075. rax = CAST ; rax
N077. r8 = SUB ; r8*,rax
N079. CNS_INT 32
N081. r8 = LSH ; r8
N083. V00(rcx)
N085. STK = LEA(b+8) ; rcx
N087. STK = IND ; STK
N089. rax = CAST ; STK
N091. rax = ADD ; r8,rax
$ N093. V05(rax)R; rax
S N095. V05(rax)
N097. rdx = CNS_INT 0x44b82fa09b5a53
N099. CNS_INT 9
N101. rax = RSZ ; rax
N103. rax = MULHI ; rax,rdx
N105. CNS_INT 11
N107. rax = RSZ ; rax
N109. rax = CAST ; rax
* N111. V02(rax); rax
N113. V00(rcx*)
N115. STK = LEA(b+8) ; rcx*
N117. V02(rax)
N119. STOREIND ; STK,rax
N121. V05(rcx*)R
N123. V02(rax*)
N125. CNS_INT 0x3B9ACA00
N127. rax = MUL ; rax*
N129. rcx = SUB ; rcx*,rax
N000. rax = COPY ; rcx
N131. RETURN ; rax
Var=Reg end of BB01: none
*************** Finishing PHASE Linear scan register alloc
Trees after Linear scan register alloc
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [0000] [000..05E) (return), preds={} succs={}
N003 (???,???) [000073] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA
N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t0 byref
N007 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref REG NA
/--* t62 byref
N009 ( 4, 4) [000002] -c-XG------ t2 = * IND int REG NA <l:$281, c:$280>
/--* t2 int
N011 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint REG rax <l:$2c1, c:$2c3>
N013 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 REG NA $44
/--* t3 long
+--* t4 int
N015 ( 7, 8) [000005] ---XG------ t5 = * LSH long REG rax <l:$2c7, c:$2c6>
N017 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t6 byref
N019 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref REG NA
/--* t64 byref
N021 ( 4, 4) [000008] nc--GO----- t8 = * IND int REG NA <l:$283, c:$282>
/--* t8 int
N023 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint REG r8 <l:$2c9, c:$2cb>
/--* t5 long
+--* t9 long
N025 ( 13, 15) [000010] ---XGO----- t10 = * ADD long REG rax <l:$2cf, c:$2ce>
/--* t10 long
N027 ( 13, 15) [000011] DA-XGO----# * STORE_LCL_VAR long V04 tmp1 d:1 rax REG rax $241
N029 ( 1, 1) [000013] ----------Z t13 = LCL_VAR long V04 tmp1 u:1 rax REG rax <l:$2cc, c:$2cd>
N031 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
N033 (???,???) [000074] -c--------- t74 = CNS_INT int 9 REG NA
/--* t13 long
+--* t74 int
N035 (???,???) [000075] ----------- t75 = * RSZ long REG rax
/--* t75 long
+--* t15 long
N037 (???,???) [000076] ---------U- t76 = * MULHI long REG rax
N039 (???,???) [000077] -c--------- t77 = CNS_INT int 11 REG NA
/--* t76 long
+--* t77 int
N041 ( 22, 8) [000016] ----------- t16 = * RSZ long REG rax
/--* t16 long
N043 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 rax REG rax $VN.Void
N045 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 rax REG rax <l:$2d0, c:$2d1>
N047 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 REG NA $44
/--* t19 long
+--* t20 int
N049 ( 3, 3) [000021] -----+----- t21 = * RSZ long REG rdx <l:$2d2, c:$2d3>
/--* t21 long
N051 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long REG rdx <l:$284, c:$285>
N053 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t18 byref
N055 ( 2, 2) [000066] -c---+----- t66 = * LEA(b+4) byref REG NA
/--* t66 byref
+--* t22 int
N057 ( 9, 10) [000024] nA--G+----- * STOREIND int REG NA $VN.Void
N059 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t25 byref
N061 ( 2, 2) [000068] -c---+----- t68 = * LEA(b+12) byref REG NA
N063 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 rax REG rax <l:$286, c:$287>
/--* t68 byref
+--* t26 int
N065 ( 6, 6) [000029] nA--G+----- * STOREIND int REG NA $VN.Void
N067 ( 1, 1) [000012] -----+----z t12 = LCL_VAR long V04 tmp1 u:1 r8 (last use) REG r8 <l:$2cc, c:$2cd>
N069 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 rax (last use) REG rax <l:$286, c:$287>
N071 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t30 int
+--* t32 int
N073 ( 6, 8) [000033] -----+----- t33 = * MUL int REG rax <l:$288, c:$289>
/--* t33 int
N075 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint REG rax <l:$2d4, c:$2d5>
/--* t12 long
+--* t34 long
N077 ( 9, 12) [000035] -----+----- t35 = * SUB long REG r8 <l:$2d6, c:$2d7>
N079 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 REG NA $44
/--* t35 long
+--* t36 int
N081 ( 11, 14) [000037] -----+----- t37 = * LSH long REG r8 <l:$2d8, c:$2d9>
N083 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t38 byref
N085 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref REG NA
/--* t70 byref
N087 ( 4, 4) [000040] nc--G+----- t40 = * IND int REG NA <l:$182, c:$1c2>
/--* t40 int
N089 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint REG rax <l:$2da, c:$2db>
/--* t37 long
+--* t41 long
N091 ( 17, 21) [000042] ----G+----- t42 = * ADD long REG rax <l:$2dc, c:$2dd>
/--* t42 long
N093 ( 17, 21) [000043] DA--G+----# * STORE_LCL_VAR long V05 tmp2 d:1 rax REG rax $VN.Void
N095 ( 1, 1) [000045] ----------Z t45 = LCL_VAR long V05 tmp2 u:1 rax REG rax <l:$2dc, c:$2dd>
N097 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
N099 (???,???) [000078] -c--------- t78 = CNS_INT int 9 REG NA
/--* t45 long
+--* t78 int
N101 (???,???) [000079] ----------- t79 = * RSZ long REG rax
/--* t79 long
+--* t47 long
N103 (???,???) [000080] ---------U- t80 = * MULHI long REG rax
N105 (???,???) [000081] -c--------- t81 = CNS_INT int 11 REG NA
/--* t80 long
+--* t81 int
N107 ( 22, 8) [000048] ----------- t48 = * RSZ long REG rax
/--* t48 long
N109 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long REG rax <l:$28a, c:$28b>
/--* t49 int
N111 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 rax REG rax $VN.Void
N113 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80
/--* t51 byref
N115 ( 2, 2) [000072] -c---+----- t72 = * LEA(b+8) byref REG NA
N117 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 rax REG rax <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
N119 ( 6, 6) [000054] nA--G+----- * STOREIND int REG NA $VN.Void
N121 ( 1, 1) [000044] -----+----z t44 = LCL_VAR int V05 tmp2 u:1 rcx (last use) REG rcx <l:$28c, c:$28d>
N123 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 rax (last use) REG rax <l:$28a, c:$28b>
N125 ( 1, 4) [000057] -c---+----- t57 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t56 int
+--* t57 int
N127 ( 6, 8) [000058] -----+----- t58 = * MUL int REG rax <l:$28e, c:$28f>
/--* t44 int
+--* t58 int
N129 ( 8, 10) [000059] -----+----- t59 = * SUB int REG rcx <l:$290, c:$291>
/--* t59 int
[000082] ----------- t82 = * COPY int REG rax
/--* t82 int
N131 ( 9, 11) [000060] -----+----- * RETURN int REG NA $VN.Void
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
[deferred prior check failed -- skipping this check]
*************** Starting PHASE Optimize layout
*************** In fgSearchImprovedLayout()
Initial BasicBlocks
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Not enough blocks to partition anything. Skipping reordering.
Reordering block list
*************** Finishing PHASE Optimize layout [no changes]
*************** Starting PHASE Optimize post-layout
*************** Finishing PHASE Optimize post-layout [no changes]
*************** Starting PHASE Determine first cold block
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block [no changes]
*************** Starting PHASE Place 'align' instructions
*************** In placeLoopAlignInstructions()
Identifying loops in DFS tree with following reverse post order:
RPO -> BB [pre, post]
00 -> BB01[0, 0]
Flow graph has no cycles; skipping identification of natural loops
Not checking for any loops as fgMightHaveNaturalLoops is false
*************** Finishing PHASE Place 'align' instructions [no changes]
*************** In genGenerateCode()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
Recording Var Locations at start of BB01
V00(rcx)
Modified regs: [rax rcx rdx r8]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Set V00 to offset 0
Assign V04 tmp1, size=8, stkOffs=-0x10
Assign V05 tmp2, size=8, stkOffs=-0x18
--- delta bump 8 for RA
--- delta bump 24 for RSP frame
--- virtual stack offset to actual stack offset delta is 32
-- V00 was 0, now 32
-- V03 was 0, now 32
-- V04 was -16, now 16
-- V05 was -24, now 8
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 8 ) byref -> rcx single-def
; V01 loc0 [V01,T03] ( 4, 4 ) long -> rax
; V02 loc1 [V02,T04] ( 3, 3 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V04 tmp1 [V04,T01] ( 3, 6 ) long -> [rsp+0x10] spill-single-def "dup spill"
; V05 tmp2 [V05,T02] ( 3, 6 ) long -> [rsp+0x08] spill-single-def "dup spill"
;
; Lcl frame size = 24
Created:
G_M15891_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {}
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..05E) (return) i LIR label
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
=============== Generating BB01 [0000] [000..05E) (return), preds={} succs={} flags=0x00000000.00001011: i LIR label
BB01 IN (1)={V00} + ByrefExposed + GcHeap
OUT(0)={ }
Recording Var Locations at start of BB01
V00(rcx)
Change life 0000000000000000 {} -> 0000000000000001 {V00}
V00 in reg rcx is becoming live [------]
Live regs: 0000000000000000 {} + {rcx} => 0000000000000002 {rcx}
Debug: New V00 debug range: first
Live regs: (unchanged) 0000000000000002 {rcx}
GC regs: (unchanged) 0000 {}
Byref regs: (unchanged) 0002 {rcx}
L_M15891_BB01:
Label: G_M15891_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}
Scope info: begin block BB01, IL range [000..05E)
Added IP mapping: 0x0000 STACK_EMPTY (G_M15891_IG02,ins#0,ofs#0) label
Generating: N003 (???,???) [000073] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA
Generating: N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t0 byref
Generating: N007 ( 2, 2) [000062] -c--------- t62 = * LEA(b+4) byref REG NA
/--* t62 byref
Generating: N009 ( 4, 4) [000002] -c-XG------ t2 = * IND int REG NA <l:$281, c:$280>
/--* t2 int
Generating: N011 ( 5, 6) [000003] ---XG----U- t3 = * CAST long <- ulong <- uint REG rax <l:$2c1, c:$2c3>
Mapped BB01 to G_M15891_IG02
IN0001: mov eax, dword ptr [rcx+0x04]
Generating: N013 ( 1, 1) [000004] -c--------- t4 = CNS_INT int 32 REG NA $44
/--* t3 long
+--* t4 int
Generating: N015 ( 7, 8) [000005] ---XG------ t5 = * LSH long REG rax <l:$2c7, c:$2c6>
IN0002: shl rax, 32
Generating: N017 ( 1, 1) [000006] ----------- t6 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t6 byref
Generating: N019 ( 2, 2) [000064] -c--------- t64 = * LEA(b+12) byref REG NA
/--* t64 byref
Generating: N021 ( 4, 4) [000008] nc--GO----- t8 = * IND int REG NA <l:$283, c:$282>
/--* t8 int
Generating: N023 ( 5, 6) [000009] ----GO---U- t9 = * CAST long <- ulong <- uint REG r8 <l:$2c9, c:$2cb>
IN0003: mov r8d, dword ptr [rcx+0x0C]
/--* t5 long
+--* t9 long
Generating: N025 ( 13, 15) [000010] ---XGO----- t10 = * ADD long REG rax <l:$2cf, c:$2ce>
IN0004: add rax, r8
/--* t10 long
Generating: N027 ( 13, 15) [000011] DA-XGO----# * STORE_LCL_VAR long V04 tmp1 d:1 rax REG rax $241
IN0005: mov qword ptr [V04 rsp+0x10], rax
V04 in reg rax is becoming live [000011]
Live regs: 0000000000000002 {rcx} + {rax} => 0000000000000003 {rax rcx}
Live vars after [000011]: {V00} +{V04} => {V00 V04}
Generating: N029 ( 1, 1) [000013] ----------Z t13 = LCL_VAR long V04 tmp1 u:1 rax REG rax <l:$2cc, c:$2cd>
Generating: N031 ( 1, 4) [000015] -------N--- t15 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
IN0006: mov rdx, 0x44B82FA09B5A53
Generating: N033 (???,???) [000074] -c--------- t74 = CNS_INT int 9 REG NA
/--* t13 long
+--* t74 int
Generating: N035 (???,???) [000075] ----------- t75 = * RSZ long REG rax
V04 in reg rax is becoming dead [000013]
Live regs: 0000000000000003 {rax rcx} - {rax} => 0000000000000002 {rcx}
IN0007: shr rax, 9
/--* t75 long
+--* t15 long
Generating: N037 (???,???) [000076] ---------U- t76 = * MULHI long REG rax
IN0008: mulx rax, rax, rax
Generating: N039 (???,???) [000077] -c--------- t77 = CNS_INT int 11 REG NA
/--* t76 long
+--* t77 int
Generating: N041 ( 22, 8) [000016] ----------- t16 = * RSZ long REG rax
IN0009: shr rax, 11
/--* t16 long
Generating: N043 ( 22, 8) [000017] DA--------- * STORE_LCL_VAR long V01 loc0 d:1 rax REG rax $VN.Void
V01 in reg rax is becoming live [000017]
Live regs: 0000000000000002 {rcx} + {rax} => 0000000000000003 {rax rcx}
Debug: New V01 debug range: first
Live vars after [000017]: {V00 V04} +{V01} => {V00 V01 V04}
Generating: N045 ( 1, 1) [000019] -----+----- t19 = LCL_VAR long V01 loc0 u:1 rax REG rax <l:$2d0, c:$2d1>
Generating: N047 ( 1, 1) [000020] -c---+----- t20 = CNS_INT int 32 REG NA $44
/--* t19 long
+--* t20 int
Generating: N049 ( 3, 3) [000021] -----+----- t21 = * RSZ long REG rdx <l:$2d2, c:$2d3>
IN000a: mov rdx, rax
IN000b: shr rdx, 32
/--* t21 long
Generating: N051 ( 4, 5) [000022] -----+----- t22 = * CAST int <- uint <- long REG rdx <l:$284, c:$285>
Generating: N053 ( 1, 1) [000018] -----+----- t18 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t18 byref
Generating: N055 ( 2, 2) [000066] -c---+----- t66 = * LEA(b+4) byref REG NA
/--* t66 byref
+--* t22 int
Generating: N057 ( 9, 10) [000024] nA--G+----- * STOREIND int REG NA $VN.Void
IN000c: mov dword ptr [rcx+0x04], edx
Generating: N059 ( 1, 1) [000025] -----+----- t25 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t25 byref
Generating: N061 ( 2, 2) [000068] -c---+----- t68 = * LEA(b+12) byref REG NA
Generating: N063 ( 1, 1) [000026] -----+----- t26 = LCL_VAR int V01 loc0 u:1 rax REG rax <l:$286, c:$287>
/--* t68 byref
+--* t26 int
Generating: N065 ( 6, 6) [000029] nA--G+----- * STOREIND int REG NA $VN.Void
IN000d: mov dword ptr [rcx+0x0C], eax
Generating: N067 ( 1, 1) [000012] -----+----z t12 = LCL_VAR long V04 tmp1 u:1 r8 (last use) REG r8 <l:$2cc, c:$2cd>
Generating: N069 ( 1, 1) [000030] -----+----- t30 = LCL_VAR int V01 loc0 u:1 rax (last use) REG rax <l:$286, c:$287>
Generating: N071 ( 1, 4) [000032] -c---+----- t32 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t30 int
+--* t32 int
Generating: N073 ( 6, 8) [000033] -----+----- t33 = * MUL int REG rax <l:$288, c:$289>
V01 in reg rax is becoming dead [000030]
Live regs: 0000000000000003 {rax rcx} - {rax} => 0000000000000002 {rcx}
Debug: Closing V01 debug range.
Live vars after [000030]: {V00 V01 V04} -{V01} => {V00 V04}
IN000e: imul eax, eax, 0x3B9ACA00
/--* t33 int
Generating: N075 ( 7, 10) [000034] -----+---U- t34 = * CAST long <- ulong <- uint REG rax <l:$2d4, c:$2d5>
-- suppressing mov because upper bits are zero.
/--* t12 long
+--* t34 long
Generating: N077 ( 9, 12) [000035] -----+----- t35 = * SUB long REG r8 <l:$2d6, c:$2d7>
IN000f: mov r8, qword ptr [V04 rsp+0x10]
V04 in reg r8 is becoming live [000012]
Live regs: 0000000000000002 {rcx} + {r8} => 0000000000000102 {rcx r8}
V04 in reg r8 is becoming dead [000012]
Live regs: 0000000000000102 {rcx r8} - {r8} => 0000000000000002 {rcx}
Live vars after [000012]: {V00 V04} -{V04} => {V00}
IN0010: sub r8, rax
Generating: N079 ( 1, 1) [000036] -c---+----- t36 = CNS_INT int 32 REG NA $44
/--* t35 long
+--* t36 int
Generating: N081 ( 11, 14) [000037] -----+----- t37 = * LSH long REG r8 <l:$2d8, c:$2d9>
IN0011: shl r8, 32
Generating: N083 ( 1, 1) [000038] -----+----- t38 = LCL_VAR byref V00 arg0 u:1 rcx REG rcx $80
/--* t38 byref
Generating: N085 ( 2, 2) [000070] -c---+----- t70 = * LEA(b+8) byref REG NA
/--* t70 byref
Generating: N087 ( 4, 4) [000040] nc--G+----- t40 = * IND int REG NA <l:$182, c:$1c2>
/--* t40 int
Generating: N089 ( 5, 6) [000041] ----G+---U- t41 = * CAST long <- ulong <- uint REG rax <l:$2da, c:$2db>
IN0012: mov eax, dword ptr [rcx+0x08]
/--* t37 long
+--* t41 long
Generating: N091 ( 17, 21) [000042] ----G+----- t42 = * ADD long REG rax <l:$2dc, c:$2dd>
IN0013: add rax, r8
/--* t42 long
Generating: N093 ( 17, 21) [000043] DA--G+----# * STORE_LCL_VAR long V05 tmp2 d:1 rax REG rax $VN.Void
IN0014: mov qword ptr [V05 rsp+0x08], rax
V05 in reg rax is becoming live [000043]
Live regs: 0000000000000002 {rcx} + {rax} => 0000000000000003 {rax rcx}
Live vars after [000043]: {V00} +{V05} => {V00 V05}
Generating: N095 ( 1, 1) [000045] ----------Z t45 = LCL_VAR long V05 tmp2 u:1 rax REG rax <l:$2dc, c:$2dd>
Generating: N097 ( 1, 4) [000047] -------N--- t47 = CNS_INT long 0x44b82fa09b5a53 REG rdx $103
IN0015: mov rdx, 0x44B82FA09B5A53
Generating: N099 (???,???) [000078] -c--------- t78 = CNS_INT int 9 REG NA
/--* t45 long
+--* t78 int
Generating: N101 (???,???) [000079] ----------- t79 = * RSZ long REG rax
V05 in reg rax is becoming dead [000045]
Live regs: 0000000000000003 {rax rcx} - {rax} => 0000000000000002 {rcx}
IN0016: shr rax, 9
/--* t79 long
+--* t47 long
Generating: N103 (???,???) [000080] ---------U- t80 = * MULHI long REG rax
IN0017: mulx rax, rax, rax
Generating: N105 (???,???) [000081] -c--------- t81 = CNS_INT int 11 REG NA
/--* t80 long
+--* t81 int
Generating: N107 ( 22, 8) [000048] ----------- t48 = * RSZ long REG rax
IN0018: shr rax, 11
/--* t48 long
Generating: N109 ( 23, 10) [000049] ----------- t49 = * CAST int <- uint <- long REG rax <l:$28a, c:$28b>
/--* t49 int
Generating: N111 ( 23, 10) [000050] DA--------- * STORE_LCL_VAR int V02 loc1 d:1 rax REG rax $VN.Void
V02 in reg rax is becoming live [000050]
Live regs: 0000000000000002 {rcx} + {rax} => 0000000000000003 {rax rcx}
Debug: New V02 debug range: first
Live vars after [000050]: {V00 V05} +{V02} => {V00 V02 V05}
Generating: N113 ( 1, 1) [000051] -----+----- t51 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80
/--* t51 byref
Generating: N115 ( 2, 2) [000072] -c---+----- t72 = * LEA(b+8) byref REG NA
Generating: N117 ( 1, 1) [000052] -----+----- t52 = LCL_VAR int V02 loc1 u:1 rax REG rax <l:$28a, c:$28b>
/--* t72 byref
+--* t52 int
Generating: N119 ( 6, 6) [000054] nA--G+----- * STOREIND int REG NA $VN.Void
V00 in reg rcx is becoming dead [000051]
Live regs: 0000000000000003 {rax rcx} - {rcx} => 0000000000000001 {rax}
Debug: Closing V00 debug range.
Live vars after [000051]: {V00 V02 V05} -{V00} => {V02 V05}
Byref regs: 0002 {rcx} => 0000 {}
IN0019: mov dword ptr [rcx+0x08], eax
Generating: N121 ( 1, 1) [000044] -----+----z t44 = LCL_VAR int V05 tmp2 u:1 rcx (last use) REG rcx <l:$28c, c:$28d>
Generating: N123 ( 1, 1) [000056] -----+----- t56 = LCL_VAR int V02 loc1 u:1 rax (last use) REG rax <l:$28a, c:$28b>
Generating: N125 ( 1, 4) [000057] -c---+----- t57 = CNS_INT int 0x3B9ACA00 REG NA $47
/--* t56 int
+--* t57 int
Generating: N127 ( 6, 8) [000058] -----+----- t58 = * MUL int REG rax <l:$28e, c:$28f>
V02 in reg rax is becoming dead [000056]
Live regs: 0000000000000001 {rax} - {rax} => 0000000000000000 {}
Debug: Closing V02 debug range.
Live vars after [000056]: {V02 V05} -{V02} => {V05}
IN001a: imul eax, eax, 0x3B9ACA00
/--* t44 int
+--* t58 int
Generating: N129 ( 8, 10) [000059] -----+----- t59 = * SUB int REG rcx <l:$290, c:$291>
IN001b: mov rcx, qword ptr [V05 rsp+0x08]
V05 in reg rcx is becoming live [000044]
Live regs: 0000000000000000 {} + {rcx} => 0000000000000002 {rcx}
V05 in reg rcx is becoming dead [000044]
Live regs: 0000000000000002 {rcx} - {rcx} => 0000000000000000 {}
Live vars after [000044]: {V05} -{V05} => {}
IN001c: sub ecx, eax
/--* t59 int
Generating: [000082] ----------- t82 = * COPY int REG rax
/--* t82 int
Generating: N131 ( 9, 11) [000060] -----+----- * RETURN int REG NA $VN.Void
IN001d: mov eax, ecx
Added IP mapping: EPILOG (G_M15891_IG02,ins#29,ofs#125) label
Reserving epilog IG for block BB01
Saved:
G_M15891_IG02: ; offs=0x000000, size=0x007D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
Created:
G_M15891_IG03: ; offs=0x00007D, size=0x0000, bbWeight=1, gcrefRegs=0000 {}
*************** After placeholder IG creation
G_M15891_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG
G_M15891_IG02: ; offs=0x000000, size=0x007D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
G_M15891_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0002 {rcx}
Variable Live Range History Dump for BB01
V00 arg0: rcx [(G_M15891_IG02,ins#0,ofs#0), (G_M15891_IG02,ins#24,ofs#107)]
V01 loc0: rax [(G_M15891_IG02,ins#9,ofs#42), (G_M15891_IG02,ins#13,ofs#55)]
V02 loc1: rax [(G_M15891_IG02,ins#24,ofs#107), (G_M15891_IG02,ins#25,ofs#110)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 105, compSizeEstimate = 87 Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 8 ) byref -> rcx single-def
; V01 loc0 [V01,T03] ( 4, 4 ) long -> rax
; V02 loc1 [V02,T04] ( 3, 3 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V04 tmp1 [V04,T01] ( 3, 6 ) long -> [rsp+0x10] spill-single-def "dup spill"
; V05 tmp2 [V05,T02] ( 3, 6 ) long -> [rsp+0x08] spill-single-def "dup spill"
;
; Lcl frame size = 24
*************** Before prolog / epilog generation
G_M15891_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG
G_M15891_IG02: ; offs=0x000000, size=0x007D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
G_M15891_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0002 {rcx}
Recording Var Locations at start of BB01
V00(rcx)
*************** In genFnProlog()
Added IP mapping to front: PROLOG (G_M15891_IG01,ins#0,ofs#0) label
__prolog:
Debug: New V00 debug range: first
IN001e: sub rsp, 24
*************** In genHomeRegisterParams()
1 registers in register parameter interference graph
rcx
*************** In genEnregisterIncomingStackArgs()
Debug: Closing V00 debug range.
Saved:
G_M15891_IG01: ; offs=0x000000, size=0x0004, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc
*************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0002 {rcx}
IN001f: add rsp, 24
IN0020: ret
Saved:
G_M15891_IG03: ; offs=0x00007D, size=0x0005, bbWeight=1, epilog, nogc, extend
0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M15891_IG01: ; func=00, offs=0x000000, size=0x0004, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
G_M15891_IG02: ; offs=0x000004, size=0x007D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
G_M15891_IG03: ; offs=0x000081, size=0x0005, bbWeight=1, epilog, nogc, extend
*************** In emitJumpDistBind()
Emitter Jump List:
total jump count: 0
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x86 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x6)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M15891_IG01: ; offs=0x000000, size=0x0004, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
IN001e: 000000 sub rsp, 24
;; size=4 bbWeight=1 PerfScore 0.25
G_M15891_IG02: ; offs=0x000004, size=0x007D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
; byrRegs +[rcx]
IN0001: 000004 mov eax, dword ptr [rcx+0x04]
IN0002: 000007 shl rax, 32
IN0003: 00000B mov r8d, dword ptr [rcx+0x0C]
IN0004: 00000F add rax, r8
IN0005: 000012 mov qword ptr [rsp+0x10], rax
IN0006: 000017 mov rdx, 0x44B82FA09B5A53
IN0007: 000021 shr rax, 9
IN0008: 000025 mulx rax, rax, rax
IN0009: 00002A shr rax, 11
IN000a: 00002E mov rdx, rax
IN000b: 000031 shr rdx, 32
IN000c: 000035 mov dword ptr [rcx+0x04], edx
IN000d: 000038 mov dword ptr [rcx+0x0C], eax
IN000e: 00003B imul eax, eax, 0x3B9ACA00
IN000f: 000041 mov r8, qword ptr [rsp+0x10]
IN0010: 000046 sub r8, rax
IN0011: 000049 shl r8, 32
IN0012: 00004D mov eax, dword ptr [rcx+0x08]
IN0013: 000050 add rax, r8
IN0014: 000053 mov qword ptr [rsp+0x08], rax
IN0015: 000058 mov rdx, 0x44B82FA09B5A53
IN0016: 000062 shr rax, 9
IN0017: 000066 mulx rax, rax, rax
IN0018: 00006B shr rax, 11
IN0019: 00006F mov dword ptr [rcx+0x08], eax
IN001a: 000072 imul eax, eax, 0x3B9ACA00
IN001b: 000078 mov rcx, qword ptr [rsp+0x08]
; byrRegs -[rcx]
IN001c: 00007D sub ecx, eax
IN001d: 00007F mov eax, ecx
;; size=125 bbWeight=1 PerfScore 28.50
G_M15891_IG03: ; offs=0x000081, size=0x0005, bbWeight=1, epilog, nogc, extend
IN001f: 000081 add rsp, 24
IN0020: 000085 ret
;; size=5 bbWeight=1 PerfScore 1.25
Allocated method code size = 134 , actual size = 134, unused size = 0
; Total bytes of code 134, prolog size 4, PerfScore 30.00, instruction count 32, allocated bytes for code 134 (MethodHash=5d76c1ec) for method Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint (FullOpts)
; ============================================================
*************** After end code gen, before unwindEmit()
G_M15891_IG01: ; func=00, offs=0x000000, size=0x0004, bbWeight=1, PerfScore 0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
IN001e: 000000 sub rsp, 24
G_M15891_IG02: ; offs=0x000004, size=0x007D, bbWeight=1, PerfScore 28.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], byref
IN0001: 000004 mov eax, dword ptr [rcx+0x04]
IN0002: 000007 shl rax, 32
IN0003: 00000B mov r8d, dword ptr [rcx+0x0C]
IN0004: 00000F add rax, r8
IN0005: 000012 mov qword ptr [V04 rsp+0x10], rax
IN0006: 000017 mov rdx, 0x44B82FA09B5A53
IN0007: 000021 shr rax, 9
IN0008: 000025 mulx rax, rax, rax
IN0009: 00002A shr rax, 11
IN000a: 00002E mov rdx, rax
IN000b: 000031 shr rdx, 32
IN000c: 000035 mov dword ptr [rcx+0x04], edx
IN000d: 000038 mov dword ptr [rcx+0x0C], eax
IN000e: 00003B imul eax, eax, 0x3B9ACA00
IN000f: 000041 mov r8, qword ptr [V04 rsp+0x10]
IN0010: 000046 sub r8, rax
IN0011: 000049 shl r8, 32
IN0012: 00004D mov eax, dword ptr [rcx+0x08]
IN0013: 000050 add rax, r8
IN0014: 000053 mov qword ptr [V05 rsp+0x08], rax
IN0015: 000058 mov rdx, 0x44B82FA09B5A53
IN0016: 000062 shr rax, 9
IN0017: 000066 mulx rax, rax, rax
IN0018: 00006B shr rax, 11
IN0019: 00006F mov dword ptr [rcx+0x08], eax
IN001a: 000072 imul eax, eax, 0x3B9ACA00
IN001b: 000078 mov rcx, qword ptr [V05 rsp+0x08]
IN001c: 00007D sub ecx, eax
IN001d: 00007F mov eax, ecx
G_M15891_IG03: ; offs=0x000081, size=0x0005, bbWeight=1, PerfScore 1.25, epilog, nogc, extend
IN001f: 000081 add rsp, 24
IN0020: 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 : 0x04
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
allocUnwindInfo(pHotCode=0x00007FFA0FED5210, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x86, unwindSize=0x6, pUnwindBlock=0x000001238017767A, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 3
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000004 ( STACK_EMPTY )
IL offs EPILOG : 0x00000081 ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 4
; Variable debug info: 3 live ranges, 3 vars for method Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
(V00 arg0) : From 00000000h to 0000006Fh, in rcx
(V01 loc0) : From 0000002Eh to 0000003Bh, in rax
(V02 loc1) : From 0000006Fh to 00000072h, in rax
*************** In gcInfoBlockHdrSave()
Set code length to 134.
Set Outgoing stack arg area size to 0.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 134
Allocations for Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint (MethodHash=5d76c1ec)
count: 1074, size: 100128, max = 7568
allocateMemory: 131072, nraUsed: 104136
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
ABI | 152 | 0.15%
AssertionProp | 6644 | 6.64%
ASTNode | 11992 | 11.98%
InstDesc | 4288 | 4.28%
ImpStack | 384 | 0.38%
BasicBlock | 864 | 0.86%
CallArgs | 0 | 0.00%
FlowEdge | 0 | 0.00%
DepthFirstSearch | 256 | 0.26%
Loops | 260 | 0.26%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 128 | 0.13%
LSRA | 9168 | 9.16%
LSRA_Interval | 2688 | 2.68%
LSRA_RefPosition | 5760 | 5.75%
Reachability | 40 | 0.04%
SSA | 736 | 0.74%
ValueNumber | 13752 | 13.73%
LvaTable | 1584 | 1.58%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.04%
bitset | 512 | 0.51%
FixedBitVect | 32 | 0.03%
Generic | 902 | 0.90%
LocalAddressVisitor | 448 | 0.45%
FieldSeqStore | 0 | 0.00%
MemorySsaMap | 40 | 0.04%
MemoryPhiArg | 0 | 0.00%
CSE | 3392 | 3.39%
GC | 1304 | 1.30%
CorTailCallInfo | 0 | 0.00%
Inlining | 472 | 0.47%
ArrayStack | 0 | 0.00%
DebugInfo | 264 | 0.26%
DebugOnly | 28927 | 28.89%
Codegen | 2752 | 2.75%
LoopOpt | 0 | 0.00%
LoopClone | 0 | 0.00%
LoopUnroll | 0 | 0.00%
LoopHoist | 0 | 0.00%
LoopIVOpts | 0 | 0.00%
Unknown | 91 | 0.09%
RangeCheck | 0 | 0.00%
CopyProp | 952 | 0.95%
Promotion | 120 | 0.12%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 808 | 0.81%
ClassLayout | 88 | 0.09%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 288 | 0.29%
Pgo | 0 | 0.00%
MaskConversionOpt | 0 | 0.00%
TryRegionClone | 0 | 0.00%
Async | 0 | 0.00%
RangeCheckCloning | 0 | 0.00%
Final metrics:
ActualCodeBytes : 134
AllocatedHotCodeBytes : 134
AllocatedColdCodeBytes : 0
ReadOnlyDataBytes : 0
GCInfoBytes : 2
EHClauseCount : 0
PhysicallyPromotedFields : 0
LoopsFoundDuringOpts : 0
LoopsInverted : 0
LoopsCloned : 0
LoopsUnrolled : 0
LoopAlignmentCandidates : 0
LoopsAligned : 0
LoopsIVWidened : 0
WidenedIVs : 0
UnusedIVsRemoved : 0
LoopsMadeDownwardsCounted : 0
LoopsStrengthReduced : 0
VarsInSsa : 5
HoistedExpressions : 0
RedundantBranchesEliminated : 0
JumpThreadingsPerformed : 0
CseCount : 0
BasicBlocksAtCodegen : 1
PerfScore : 30.000000
BytesAllocated : 104136
ImporterBranchFold : 0
ImporterSwitchFold : 0
DevirtualizedCall : 0
DevirtualizedCallUnboxedEntry : 0
DevirtualizedCallRemovedBox : 0
GDV : 0
ClassGDV : 0
MethodGDV : 0
MultiGuessGDV : 0
ChainedGDV : 0
EnumeratorGDV : 0
InlinerBranchFold : 0
InlineAttempt : 0
InlineCount : 0
ProfileConsistentBeforeInline : 0
ProfileConsistentAfterInline : 0
ProfileConsistentBeforeMorph : 0
ProfileConsistentAfterMorph : 0
ProfileSynthesizedBlendedOrRepaired : 0
ProfileInconsistentInitially : 0
ProfileInconsistentResetLeave : 0
ProfileInconsistentImporterBranchFold : 0
ProfileInconsistentImporterSwitchFold : 0
ProfileInconsistentChainedGDV : 0
ProfileInconsistentScratchBB : 0
ProfileInconsistentInlinerBranchFold : 0
ProfileInconsistentInlineeScale : 0
ProfileInconsistentInlinee : 0
ProfileInconsistentNoReturnInlinee : 0
ProfileInconsistentMayThrowInlinee : 0
NewRefClassHelperCalls : 0
StackAllocatedRefClasses : 0
NewBoxedValueClassHelperCalls : 0
StackAllocatedBoxedValueClasses : 0
NewArrayHelperCalls : 0
StackAllocatedArrays : 0
LocalAssertionCount : 1
LocalAssertionOverflow : 0
MorphTrackedLocals : 5
MorphLocals : 6
EnumeratorGDVProvisionalNoEscape : 0
EnumeratorGDVCanCloneToEnsureNoEscape : 0
****** DONE compiling Managed.New.Decimal+DecCalc:DecDivMod1E9(byref):uint
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment