****** START compiling punning:Main() (MethodHash=5b585330) 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: Jit invoked for ngen IL to import: IL_0000 72 01 00 00 70 ldstr 0x70000001 IL_0005 28 0e 00 00 0a call 0xA00000E IL_000a 28 0f 00 00 0a call 0xA00000F IL_000f 0a stloc.0 IL_0010 7e 10 00 00 0a ldsfld 0xA000010 IL_0015 06 ldloc.0 IL_0016 28 03 00 00 06 call 0x6000003 IL_001b 12 02 ldloca.s 0x2 IL_001d fe 15 01 00 00 1b initobj 0x1B000001 IL_0023 12 02 ldloca.s 0x2 IL_0025 1f 55 ldc.i4.s 0x55 IL_0027 7d 11 00 00 0a stfld 0xA000011 IL_002c 08 ldloc.2 IL_002d 25 dup IL_002e 06 ldloc.0 IL_002f 14 ldnull IL_0030 28 01 00 00 2b call 0x2B000001 IL_0035 0b stloc.1 IL_0036 7b 11 00 00 0a ldfld 0xA000011 IL_003b d3 conv.i IL_003c 07 ldloc.1 IL_003d d3 conv.i IL_003e 28 04 00 00 06 call 0x6000004 IL_0043 2a ret 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 loc0 long ; V01 loc1 int ; V02 loc2 struct ; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" *************** In compInitDebuggingInfo() for punning:Main() getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 3 VarNum LVNum Name Beg End 0: 00h 00h V00 loc0 000h 044h 1: 01h 01h V01 loc1 000h 044h 2: 02h 02h V02 loc2 000h 044h info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for punning:Main() weight= 66 : state 102 [ ldstr ] weight= 79 : state 40 [ call ] weight= 79 : state 40 [ call ] weight= 6 : state 11 [ stloc.0 ] weight=159 : state 112 [ ldsfld ] weight= 12 : state 7 [ ldloc.0 ] weight= 79 : state 40 [ call ] weight= 61 : state 19 [ ldloca.s ] weight= 55 : state 180 [ initobj ] weight= 61 : state 19 [ ldloca.s ] weight= 41 : state 32 [ ldc.i4.s ] weight= 31 : state 111 [ stfld ] weight= 22 : state 9 [ ldloc.2 ] weight= 11 : state 38 [ dup ] weight= 12 : state 7 [ ldloc.0 ] weight= 7 : state 21 [ ldnull ] weight= 79 : state 40 [ call ] weight= 34 : state 12 [ stloc.1 ] weight= 18 : state 109 [ ldfld ] weight= 0 : state 157 [ conv.i ] weight= 9 : state 8 [ ldloc.1 ] weight= 0 : state 157 [ conv.i ] weight= 79 : state 40 [ call ] weight= 19 : state 42 [ ret ] Marked V00 as a single def local Marked V01 as a single def local Jump targets: none New Basic Block BB01 [0000] created. BB01 [0000] [000..044) Inline candidate looks like a wrapper method. Multiplier increased to 1. Inline candidate callsite is hot. Multiplier increased to 4. Callsite has profile data: 1. Multiplier limited to 16.8. calleeNativeSizeEstimate=1019 callsiteNativeSizeEstimate=55 benefit multiplier=16.8 threshold=924 Native estimate for function size exceeds threshold for inlining 101.9 > 92.4 (multiplier = 16.8) INLINER: during 'prejit' result 'failed this callee' reason 'unprofitable inline' for 'n/a' calling 'punning:Main()' INLINER: Marking punning:Main() as NOINLINE because of unprofitable inline INLINER: during 'prejit' result 'failed this callee' reason 'unprofitable inline' IL Code Size,Instr 68, 24, Basic Block count 1, Local Variable Num,Ref count 4, 8 for method punning:Main() OPTIONS: opts.MinOpts() == false Basic block list for 'punning:Main()' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..044) (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..044) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..044) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Profile incorporation BBOPT not set *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'punning:Main()' [ 0] 0 (0x000) ldstr 70000001 [ 1] 5 (0x005) call 0A00000E In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for 'punning:Main()' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' STMT00000 ( 0x000[E-] ... ??? ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref [ 0] 10 (0x00a) call 0A00000F In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 CheckCanInline: fetching method info for inline candidate GetFunctionPointerGeneric -- context 4000000000422FF1 Class context: B.Class INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'punning:Main()' calling 'B.Class:GetFunctionPointerGeneric():long' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00001 ( 0x00A[E-] ... ??? ) [000002] I-C-G------ * CALL long B.Class:GetFunctionPointerGeneric():long (exactContextHnd=0x4000000000422FF1) [ 1] 15 (0x00f) stloc.0 STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000003] --C-------- \--* RET_EXPR long (for [000002]) [ 0] 16 (0x010) ldsfld 0A000010 [ 1] 21 (0x015) ldloc.0 [ 2] 22 (0x016) call 06000003 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 CheckCanInline: fetching method info for inline candidate NotEqual -- context 4000000000423001 Class context: punning+Assert INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'punning:Main()' calling 'punning+Assert:NotEqual(long,long)' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00003 ( 0x010[E-] ... ??? ) [000007] I-C-G------ * CALL void punning+Assert:NotEqual(long,long) (exactContextHnd=0x4000000000423001) [000005] ----------- arg0 +--* CNS_INT long 0 [000006] ----------- arg1 \--* LCL_VAR long V00 loc0 [ 0] 27 (0x01b) ldloca.s 2 [ 1] 29 (0x01d) initobj 1B000001 STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct V02 loc2 [000009] ----------- \--* CNS_INT int 0 [ 0] 35 (0x023) ldloca.s 2 [ 1] 37 (0x025) ldc.i4.s 85 [ 2] 39 (0x027) stfld 0A000011 STMT00005 ( 0x023[E-] ... ??? ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] [000012] ----------- \--* CNS_INT int 85 [ 0] 44 (0x02c) ldloc.2 [ 1] 45 (0x02d) dup [ 2] 46 (0x02e) ldloc.0 [ 3] 47 (0x02f) ldnull [ 4] 48 (0x030) call 2B000001 In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0 Calling impNormStructVal on: [000016] ----------- * LCL_VAR struct V02 loc2 resulting tree: [000016] ----------- * LCL_VAR struct V02 loc2 CheckCanInline: fetching method info for inline candidate CallGetField -- context 4000000000423008 Method context: Caller.Class:CallGetField[System.Object](Caller.Struct`1[System.Object],long,System.Object):int INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'punning:Main()' calling 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' lvaGrabTemp returning 4 (V04 tmp1) called for impAppendStmt. STMT00007 ( 0x02C[E-] ... ??? ) [000021] DA--------- * STORE_LCL_VAR struct V04 tmp1 [000015] ----------- \--* LCL_VAR struct V02 loc2 Marked V04 as a single def temp STMT00006 ( 0x02C[E-] ... ??? ) [000019] I-C-G------ * CALL int Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int (exactContextHnd=0x4000000000423008) [000020] H---------- gctx +--* CNS_INT(h) long 0x4000000000423068 [000016] ----------- arg1 +--* LCL_VAR struct V02 loc2 [000017] ----------- arg2 +--* LCL_VAR long V00 loc0 [000018] ----------- arg3 \--* CNS_INT ref null [ 2] 53 (0x035) stloc.1 STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000023] --C-------- \--* RET_EXPR int (for [000019]) [ 1] 54 (0x036) ldfld 0A000011 [ 1] 59 (0x03b) conv.i [ 1] 60 (0x03c) ldloc.1 [ 2] 61 (0x03d) conv.i [ 2] 62 (0x03e) call 06000004 (Implicit Tail call: prefixFlags |= PREFIX_TAILCALL_IMPLICIT) In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 info.compCompHnd->canTailCall returned false for call [000031] CheckCanInline: fetching method info for inline candidate Equal -- context 4000000000423001 Class context: punning+Assert INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'punning:Main()' calling 'punning+Assert:Equal(long,long)' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00009 ( ??? ... ??? ) [000031] I-C-G------ * CALL void punning+Assert:Equal(long,long) (exactContextHnd=0x4000000000423001) [000028] ----------- arg0 +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- arg1 \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 [ 0] 67 (0x043) ret STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void *************** Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..044) (return), preds={} succs={} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00001 ( 0x00A[E-] ... ??? ) [000002] I-C-G------ * CALL long B.Class:GetFunctionPointerGeneric():long (exactContextHnd=0x4000000000422FF1) ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000003] --C-------- \--* RET_EXPR long (for [000002]) ***** BB01 [0000] STMT00003 ( 0x010[E-] ... 0x01E ) [000007] I-C-G------ * CALL void punning+Assert:NotEqual(long,long) (exactContextHnd=0x4000000000423001) [000005] ----------- arg0 +--* CNS_INT long 0 [000006] ----------- arg1 \--* LCL_VAR long V00 loc0 ***** BB01 [0000] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct V02 loc2 [000009] ----------- \--* CNS_INT int 0 ***** BB01 [0000] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] [000012] ----------- \--* CNS_INT int 85 ***** BB01 [0000] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct V04 tmp1 [000015] ----------- \--* LCL_VAR struct V02 loc2 ***** BB01 [0000] STMT00006 ( 0x02C[E-] ... ??? ) [000019] I-C-G------ * CALL int Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int (exactContextHnd=0x4000000000423008) [000020] H---------- gctx +--* CNS_INT(h) long 0x4000000000423068 [000016] ----------- arg1 +--* LCL_VAR struct V02 loc2 [000017] ----------- arg2 +--* LCL_VAR long V00 loc0 [000018] ----------- arg3 \--* CNS_INT ref null ***** BB01 [0000] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000023] --C-------- \--* RET_EXPR int (for [000019]) ***** BB01 [0000] STMT00009 ( ??? ... 0x043 ) [000031] I-C-G------ * CALL void punning+Assert:Equal(long,long) (exactContextHnd=0x4000000000423001) [000028] ----------- arg0 +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- arg1 \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ***** BB01 [0000] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to 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 New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short) *************** Finishing PHASE Morph - Init [no changes] *************** Starting PHASE Morph - Inlining INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for 'punning:Main()' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' Expanding INLINE_CANDIDATE in statement STMT00001 in BB01: STMT00001 ( 0x00A[E-] ... ??? ) [000002] I-C-G------ * CALL long B.Class:GetFunctionPointerGeneric():long (exactContextHnd=0x4000000000422FF1) INLINER: inlineInfo.tokenLookupContextHandle for B.Class:GetFunctionPointerGeneric():long set to 0x4000000000422FF1: Invoking compiler for the inlinee method B.Class:GetFunctionPointerGeneric():long : IL to import: IL_0000 fe 06 01 00 00 2b ldftn 0x2B000001 IL_0006 28 03 00 00 0a call 0xA000003 IL_000b 2a ret INLINER impTokenLookupContextHandle for B.Class:GetFunctionPointerGeneric():long is 0x4000000000422FF1. *************** In compInitDebuggingInfo() for B.Class:GetFunctionPointerGeneric():long info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for B.Class:GetFunctionPointerGeneric():long Jump targets: none New Basic Block BB01 [0001] created. BB01 [0001] [000..00C) Basic block list for 'B.Class:GetFunctionPointerGeneric():long' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0001] 1 1 [000..00C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000002] Starting PHASE Pre-import *************** Inline @[000002] Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0001] 1 1 [000..00C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0001] [000..00C) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000002] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000002] Finishing PHASE Profile incorporation Trees after Profile incorporation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0001] 1 1 [000..00C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0001] [000..00C) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000002] Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'B.Class:GetFunctionPointerGeneric():long' [ 0] 0 (0x000) ldftn 2B000001 [ 1] 6 (0x006) call 0A000003 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 CheckCanInline: fetching method info for inline candidate op_Explicit -- context 40000000004201C9 Class context: System.IntPtr INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'B.Class:GetFunctionPointerGeneric():long' calling 'System.IntPtr:op_Explicit(ulong):long' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00011 ( 0x000[E-] ... ??? ) <- INLRT @ 0x00A[E-] [000034] I-C-G------ * CALL long System.IntPtr:op_Explicit(ulong):long (exactContextHnd=0x40000000004201C9) [000033] H---------- arg0 \--* CNS_INT(h) long 0x40000000004230c0 ftn [ 1] 11 (0x00b) ret Inlinee Return expression (before normalization) => [000035] --C-------- * RET_EXPR long (for [000034]) Inlinee Return expression (after normalization) => [000035] --C-------- * RET_EXPR long (for [000034]) *************** Inline @[000002] Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0001] 1 1 [000..00C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0001] [000..00C) (return), preds={} succs={} ***** BB01 [0001] STMT00011 ( 0x000[E-] ... ??? ) <- INLRT @ 0x00A[E-] [000034] I-C-G------ * CALL long System.IntPtr:op_Explicit(ulong):long (exactContextHnd=0x40000000004201C9) [000033] H---------- arg0 \--* CNS_INT(h) long 0x40000000004230c0 ftn ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000002] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000002] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000002] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000002] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000002] Starting PHASE Post-import *************** Inline @[000002] Finishing PHASE Post-import [no changes] ----------- Statements (and blocks) added due to the inlining of call [000002] ----------- Inlinee method body: STMT00011 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ 0x00A[E-] [000034] I-C-G------ * CALL long System.IntPtr:op_Explicit(ulong):long (exactContextHnd=0x40000000004201C9) [000033] H---------- arg0 \--* CNS_INT(h) long 0x40000000004230c0 ftn fgInlineAppendStatements: no gc ref inline locals. Successfully inlined B.Class:GetFunctionPointerGeneric():long (12 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'punning:Main()' calling 'B.Class:GetFunctionPointerGeneric():long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00011 in BB01: STMT00011 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ 0x00A[E-] [000034] I-C-G------ * CALL long System.IntPtr:op_Explicit(ulong):long (exactContextHnd=0x40000000004201C9) [000033] H---------- arg0 \--* CNS_INT(h) long 0x40000000004230c0 ftn Argument #0: is a constant or invariant [000033] H---------- * CNS_INT(h) long 0x40000000004230c0 ftn INLINER: inlineInfo.tokenLookupContextHandle for System.IntPtr:op_Explicit(ulong):long set to 0x40000000004201C9: Invoking compiler for the inlinee method System.IntPtr:op_Explicit(ulong):long : IL to import: IL_0000 02 ldarg.0 IL_0001 2a ret INLINER impTokenLookupContextHandle for System.IntPtr:op_Explicit(ulong):long is 0x40000000004201C9. *************** In compInitDebuggingInfo() for System.IntPtr:op_Explicit(ulong):long info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for System.IntPtr:op_Explicit(ulong):long Jump targets: none New Basic Block BB01 [0002] created. BB01 [0002] [000..002) Basic block list for 'System.IntPtr:op_Explicit(ulong):long' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0002] 1 1 [000..002) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000034] Starting PHASE Pre-import *************** Inline @[000034] Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0002] 1 1 [000..002) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0002] [000..002) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000034] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000034] Finishing PHASE Profile incorporation Trees after Profile incorporation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0002] 1 1 [000..002) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0002] [000..002) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000034] Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'System.IntPtr:op_Explicit(ulong):long' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ret Inlinee Return expression (before normalization) => [000037] H---------- * CNS_INT(h) long 0x40000000004230c0 ftn Inlinee Return expression (after normalization) => [000037] H---------- * CNS_INT(h) long 0x40000000004230c0 ftn ** Note: inlinee IL was partially imported -- imported 0 of 2 bytes of method IL *************** Inline @[000034] Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0002] 1 1 [000..002) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0002] [000..002) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000034] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000034] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000034] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000034] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000034] Starting PHASE Post-import *************** Inline @[000034] Finishing PHASE Post-import [no changes] ----------- Statements (and blocks) added due to the inlining of call [000034] ----------- Arguments setup: Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.IntPtr:op_Explicit(ulong):long (2 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'punning:Main()' calling 'System.IntPtr:op_Explicit(ulong):long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Replacing the return expression placeholder [000003] with [000037] [000003] --C-------- * RET_EXPR long (for [000002]) -> [000035] Inserting the inline return expression [000037] H---------- * CNS_INT(h) long 0x40000000004230c0 ftn Expanding INLINE_CANDIDATE in statement STMT00003 in BB01: STMT00003 ( 0x010[E-] ... 0x01E ) [000007] I-C-G------ * CALL void punning+Assert:NotEqual(long,long) (exactContextHnd=0x4000000000423001) [000005] ----------- arg0 +--* CNS_INT long 0 [000006] ----------- arg1 \--* LCL_VAR long V00 loc0 Argument #0: is a constant or invariant [000005] ----------- * CNS_INT long 0 Argument #1: is a local var [000006] ----------- * LCL_VAR long V00 loc0 INLINER: inlineInfo.tokenLookupContextHandle for punning+Assert:NotEqual(long,long) set to 0x4000000000423001: Invoking compiler for the inlinee method punning+Assert:NotEqual(long,long) : IL to import: IL_0000 02 ldarg.0 IL_0001 03 ldarg.1 IL_0002 33 06 bne.un.s 6 (IL_000a) IL_0004 73 14 00 00 0a newobj 0xA000014 IL_0009 7a throw IL_000a 2a ret INLINER impTokenLookupContextHandle for punning+Assert:NotEqual(long,long) is 0x4000000000423001. *************** In compInitDebuggingInfo() for punning+Assert:NotEqual(long,long) info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for punning+Assert:NotEqual(long,long) Jump targets: IL_000a New Basic Block BB01 [0003] created. BB01 [0003] [000..004) New Basic Block BB02 [0004] created. BB02 [0004] [004..00A) New Basic Block BB03 [0005] created. BB03 [0005] [00A..00B) Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] Basic block list for 'punning+Assert:NotEqual(long,long)' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0003] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0004] 1 BB01 0 [004..00A) (throw ) rare BB03 [0005] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000007] Starting PHASE Pre-import *************** Inline @[000007] Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0003] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0004] 1 BB01 0 [004..00A) (throw ) rare BB03 [0005] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0003] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0004] [004..00A) (throw), preds={BB01} succs={} ------------ BB03 [0005] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000007] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000007] Finishing PHASE Profile incorporation Trees after Profile incorporation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0003] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0004] 1 BB01 0 [004..00A) (throw ) rare BB03 [0005] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0003] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0004] [004..00A) (throw), preds={BB01} succs={} ------------ BB03 [0005] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000007] Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'punning+Assert:NotEqual(long,long)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldarg.1 [ 2] 2 (0x002) bne.un.s STMT00012 ( 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 impImportBlockPending for BB02 impImportBlockPending for BB03 Importing BB03 (PC=010) of 'punning+Assert:NotEqual(long,long)' [ 0] 10 (0x00a) ret Importing BB02 (PC=004) of 'punning+Assert:NotEqual(long,long)' [ 0] 4 (0x004) newobj lvaGrabTemp returning 5 (V05 tmp2) called for NewObj constructor temp. STMT00013 ( 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DA--------- * STORE_LCL_VAR ref V05 tmp2 [000043] ----------- \--* ALLOCOBJ ref [000042] H---------- \--* CNS_INT(h) long 0x4000000000421f70 Marked V05 as a single def local lvaSetClass: setting class for V05 to (4000000000420898) System.Exception [exact] 0A000014 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 CheckCanInline: fetching method info for inline candidate .ctor -- context 4000000000420899 Class context: System.Exception INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' for 'punning+Assert:NotEqual(long,long)' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' STMT00014 ( ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 [ 1] 9 (0x009) throw STMT00015 ( 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ** Note: inlinee IL was partially imported -- imported 10 of 11 bytes of method IL *************** Inline @[000007] Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0003] 1 1 [000..004)-> BB03,BB02 ( cond ) i BB02 [0004] 1 BB01 0 [004..00A) (throw ) i rare newobj BB03 [0005] 1 BB01 1 [00A..00B) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0003] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0003] STMT00012 ( 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [004..00A) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DA--------- * STORE_LCL_VAR ref V05 tmp2 [000043] ----------- \--* ALLOCOBJ ref [000042] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000007] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000007] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000007] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000007] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000007] Starting PHASE Post-import *************** Inline @[000007] Finishing PHASE Post-import [no changes] ----------- Statements (and blocks) added due to the inlining of call [000007] ----------- Arguments setup: Inlinee method body:New Basic Block BB02 [0006] created. Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] Convert bbKind of BB05 to BBJ_ALWAYS to bottomBlock BB02 Setting edge weights for BB05 -> BB02 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] fgInlineAppendStatements: no gc ref inline locals. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB03 [0003] 1 BB01 1 [010..011)-> BB05,BB04 ( cond ) i BB04 [0004] 1 BB03 0 [010..011) (throw ) i rare newobj BB05 [0005] 1 BB03 1 [010..011)-> BB02 (always) i q ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB03 [0003] [010..011) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0003] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB04 [0004] [010..011) (throw), preds={BB03} succs={} ***** BB04 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DA--------- * STORE_LCL_VAR ref V05 tmp2 [000043] ----------- \--* ALLOCOBJ ref [000042] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB04 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB04 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB05 [0005] [010..011) -> BB02 (always), preds={BB03} succs={BB02} ------------------------------------------------------------------------------------------------------------------- INLINER: Updating optMethodFlags -- root:0 callee:2 new:2 Successfully inlined punning+Assert:NotEqual(long,long) (11 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'punning:Main()' calling 'punning+Assert:NotEqual(long,long)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' for 'punning:Main()' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' for 'punning:Main()' calling 'n/a' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' Expanding INLINE_CANDIDATE in statement STMT00006 in BB02: STMT00006 ( 0x02C[E-] ... ??? ) [000019] I-C-G------ * CALL int Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int (exactContextHnd=0x4000000000423008) [000020] H---------- gctx +--* CNS_INT(h) long 0x4000000000423068 [000016] ----------- arg1 +--* LCL_VAR struct V02 loc2 [000017] ----------- arg2 +--* LCL_VAR long V00 loc0 [000018] ----------- arg3 \--* CNS_INT ref null Argument #0: is a local var has caller local ref [000016] ----------- * LCL_VAR struct V02 loc2 Argument #1: is a local var [000017] ----------- * LCL_VAR long V00 loc0 Argument #2: is a constant or invariant [000018] ----------- * CNS_INT ref null INLINER: inlineInfo.tokenLookupContextHandle for Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int set to 0x4000000000423008: Invoking compiler for the inlinee method Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int : IL to import: IL_0000 04 ldarg.2 IL_0001 14 ldnull IL_0002 fe 01 ceq IL_0004 2c 0a brfalse.s 10 (IL_0010) IL_0006 00 nop IL_0007 02 ldarg.0 IL_0008 03 ldarg.1 IL_0009 29 03 00 00 11 calli 0x11000003 IL_000e 2b 0b br.s 11 (IL_001b) IL_0010 00 nop IL_0011 04 ldarg.2 IL_0012 02 ldarg.0 IL_0013 03 ldarg.1 IL_0014 29 04 00 00 11 calli 0x11000004 IL_0019 2b 00 br.s 0 (IL_001b) IL_001b 2a ret INLINER impTokenLookupContextHandle for Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int is 0x4000000000423008. *************** In compInitDebuggingInfo() for Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int weight= 35 : state 5 [ ldarg.2 ] weight= 7 : state 21 [ ldnull ] weight= 20 : state 168 [ ceq ] weight= 27 : state 44 [ brfalse.s ] weight= 65 : state 2 [ noshow ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 65 : state 41 [ calli ] weight= 44 : state 43 [ br.s ] weight= 65 : state 2 [ noshow ] weight= 35 : state 5 [ ldarg.2 ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 65 : state 41 [ calli ] weight= 44 : state 43 [ br.s ] weight= 19 : state 42 [ ret ] Inline candidate has an arg that feeds a constant test. Multiplier increased to 1. Inline candidate has const arg that feeds a conditional. Multiplier increased to 4. Inline candidate callsite is boring. Multiplier increased to 5.3. calleeNativeSizeEstimate=543 callsiteNativeSizeEstimate=145 benefit multiplier=5.3 threshold=768 Native estimate for function size is within threshold for inlining 54.3 <= 76.8 (multiplier = 5.3) Jump targets: IL_0010 IL_001b New Basic Block BB01 [0007] created. BB01 [0007] [000..006) New Basic Block BB02 [0008] created. BB02 [0008] [006..010) New Basic Block BB03 [0009] created. BB03 [0009] [010..01B) New Basic Block BB04 [0010] created. BB04 [0010] [01B..01C) Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] Setting edge weights for BB02 -> BB04 to [0 .. 3.402823e+38] Setting edge weights for BB03 -> BB04 to [0 .. 3.402823e+38] Basic block list for 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB03,BB02 ( cond ) BB02 [0008] 1 BB01 1 [006..010)-> BB04 (always) BB03 [0009] 1 BB01 1 [010..01B)-> BB04 (always) q BB04 [0010] 2 BB02,BB03 1 [01B..01C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000019] Starting PHASE Pre-import *************** Inline @[000019] Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB03,BB02 ( cond ) BB02 [0008] 1 BB01 1 [006..010)-> BB04 (always) BB03 [0009] 1 BB01 1 [010..01B)-> BB04 (always) q BB04 [0010] 2 BB02,BB03 1 [01B..01C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0007] [000..006) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0008] [006..010) -> BB04 (always), preds={BB01} succs={BB04} ------------ BB03 [0009] [010..01B) -> BB04 (always), preds={BB01} succs={BB04} ------------ BB04 [0010] [01B..01C) (return), preds={BB02,BB03} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000019] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000019] Finishing PHASE Profile incorporation Trees after Profile incorporation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB03,BB02 ( cond ) BB02 [0008] 1 BB01 1 [006..010)-> BB04 (always) BB03 [0009] 1 BB01 1 [010..01B)-> BB04 (always) q BB04 [0010] 2 BB02,BB03 1 [01B..01C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0007] [000..006) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0008] [006..010) -> BB04 (always), preds={BB01} succs={BB04} ------------ BB03 [0009] [010..01B) -> BB04 (always), preds={BB01} succs={BB04} ------------ BB04 [0010] [01B..01C) (return), preds={BB02,BB03} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000019] Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' [ 0] 0 (0x000) ldarg.2 [ 1] 1 (0x001) ldnull [ 2] 2 (0x002) ceq Folding operator with constant nodes into a constant: [000052] ----------- * EQ int [000050] ----------- +--* CNS_INT ref null [000051] ----------- \--* CNS_INT ref null Bashed to int constant: [000052] ----------- * CNS_INT int 1 [ 1] 4 (0x004) brfalse.s Folding operator with constant nodes into a constant: [000054] ----------- * EQ int [000052] ----------- +--* CNS_INT int 1 [000053] ----------- \--* CNS_INT int 0 Bashed to int constant: [000054] ----------- * CNS_INT int 0 The block jumps to the next BB02 impImportBlockPending for BB02 Importing BB02 (PC=006) of 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' [ 0] 6 (0x006) nop [ 0] 7 (0x007) ldarg.0 lvaGrabTemp returning 6 (V06 tmp3) called for Inlining Arg. Marked V06 as a single def temp [ 1] 8 (0x008) ldarg.1 [ 2] 9 (0x009) calli 11000003 In Compiler::impImportCall: opcode is calli, kind=0, callRetType is int, structSize is 0 Calling impNormStructVal on: [000055] ----------- * LCL_VAR struct V06 tmp3 resulting tree: [000055] ----------- * LCL_VAR struct V06 tmp3 INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct managed' for 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' calling 'n/a' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct managed' Marking call [000056] as fat pointer candidate lvaGrabTemp returning 7 (V07 tmp4) called for calli. STMT00016 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000057] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000056] --CXG------ \--* CALL ind int [000055] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000017] ----------- calli tgt \--* LCL_VAR long V00 loc0 [ 1] 14 (0x00e) br.s *************** In impGetSpillTmpBase(BB02) lvaGrabTemps(1) returning 8..8 (long lifetime temps) called for IL Stack Entries Spilling stack entries into temps STMT00017 ( ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 impImportBlockPending for BB04 Importing BB04 (PC=027) of 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' [ 1] 27 (0x01b) ret Inlinee Return expression (before normalization) => [000061] ----------- * LCL_VAR int V08 tmp5 Inlinee Return expression (after normalization) => [000061] ----------- * LCL_VAR int V08 tmp5 ** Note: inlinee IL was partially imported -- imported 10 of 28 bytes of method IL *************** Inline @[000019] Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB02 (always) i q BB02 [0008] 1 BB01 1 [006..010)-> BB04 (always) i BB03 [0009] 0 1 [010..01B)-> BB04 (always) q BB04 [0010] 2 BB02,BB03 1 [01B..01C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0007] [000..006) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0008] [006..010) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0008] STMT00016 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000057] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000056] --CXG------ \--* CALL ind int [000055] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000017] ----------- calli tgt \--* LCL_VAR long V00 loc0 ***** BB02 [0008] STMT00017 ( ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB03 [0009] [010..01B) -> BB04 (always), preds={} succs={BB04} ------------ BB04 [0010] [01B..01C) (return), preds={BB02,BB03} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000019] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000019] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000019] Starting PHASE Indirect call transform *** FatPointerCall: transforming STMT00016 New Basic Block BB05 [0011] created. BB04 previous predecessor was BB02, now is BB05 Setting edge weights for BB02 -> BB05 to [0 .. 3.402823e+38] New Basic Block BB06 [0012] created. New Basic Block BB07 [0013] created. New Basic Block BB08 [0014] created. removing useless STMT00016 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000057] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000056] --CXG------ \--* CALL ind int [000055] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000017] ----------- calli tgt \--* LCL_VAR long V00 loc0 from BB02 BB02 becomes empty Setting edge weights for BB02 -> BB06 to [0 .. 3.402823e+38] Setting edge weights for BB06 -> BB07 to [0 .. 3.402823e+38] Setting edge weights for BB06 -> BB08 to [0 .. 3.402823e+38] Setting edge weights for BB07 -> BB05 to [0 .. 3.402823e+38] Setting edge weights for BB08 -> BB05 to [0 .. 3.402823e+38] -- 1 calls transformed *************** Inline @[000019] Finishing PHASE Indirect call transform Trees after Indirect call transform ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB02 (always) i q BB02 [0008] 1 BB01 1 [006..02C)-> BB06 (always) i q BB06 [0012] 1 BB02 1 [???..???)-> BB08,BB07 ( cond ) i internal q BB07 [0013] 1 BB06 0.80 [???..???)-> BB05 (always) i internal BB08 [0014] 1 BB06 0.20 [???..???)-> BB05 (always) i internal q BB05 [0011] 2 BB07,BB08 1 [010..010)-> BB04 (always) i internal BB03 [0009] 0 1 [010..01B)-> BB04 (always) q BB04 [0010] 2 BB03,BB05 1 [01B..01C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0007] [000..006) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0008] [006..02C) -> BB06 (always), preds={BB01} succs={BB06} ------------ BB06 [0012] [???..???) -> BB08,BB07 (cond), preds={BB02} succs={BB07,BB08} ***** BB06 [0012] STMT00018 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB07 [0013] [???..???) -> BB05 (always), preds={BB06} succs={BB05} ***** BB07 [0013] STMT00019 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB08 [0014] [???..???) -> BB05 (always), preds={BB06} succs={BB05} ***** BB08 [0014] STMT00020 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB05 [0011] [010..010) -> BB04 (always), preds={BB07,BB08} succs={BB04} ***** BB05 [0011] STMT00017 ( ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB03 [0009] [010..01B) -> BB04 (always), preds={} succs={BB04} ------------ BB04 [0010] [01B..01C) (return), preds={BB03,BB05} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000019] Starting PHASE Post-import BB03 was not imported, marking as removed (0) Renumbering the basic blocks for fgPostImportationCleanup *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB02 (always) i q BB02 [0008] 1 BB01 1 [006..02C)-> BB06 (always) i q BB06 [0012] 1 BB02 1 [???..???)-> BB08,BB07 ( cond ) i internal q BB07 [0013] 1 BB06 0.80 [???..???)-> BB05 (always) i internal BB08 [0014] 1 BB06 0.20 [???..???)-> BB05 (always) i internal q BB05 [0011] 2 BB07,BB08 1 [010..010)-> BB04 (always) i internal BB04 [0010] 1 BB05 1 [01B..01C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty Renumber BB06 to BB03 Renumber BB07 to BB04 Renumber BB08 to BB05 Renumber BB05 to BB06 Renumber BB04 to BB07 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB02 (always) i q BB02 [0008] 1 BB01 1 [006..02C)-> BB03 (always) i q BB03 [0012] 1 BB02 1 [???..???)-> BB05,BB04 ( cond ) i internal q BB04 [0013] 1 BB03 0.80 [???..???)-> BB06 (always) i internal BB05 [0014] 1 BB03 0.20 [???..???)-> BB06 (always) i internal q BB06 [0011] 2 BB04,BB05 1 [010..010)-> BB07 (always) i internal BB07 [0010] 1 BB06 1 [01B..01C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty New BlockSet epoch 1, # of blocks (including unused BB00): 8, bitset array size: 1 (short) *************** Inline @[000019] Finishing PHASE Post-import Trees after Post-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0007] 1 1 [000..006)-> BB02 (always) i q BB02 [0008] 1 BB01 1 [006..02C)-> BB03 (always) i q BB03 [0012] 1 BB02 1 [???..???)-> BB05,BB04 ( cond ) i internal q BB04 [0013] 1 BB03 0.80 [???..???)-> BB06 (always) i internal BB05 [0014] 1 BB03 0.20 [???..???)-> BB06 (always) i internal q BB06 [0011] 2 BB04,BB05 1 [010..010)-> BB07 (always) i internal BB07 [0010] 1 BB06 1 [01B..01C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0007] [000..006) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0008] [006..02C) -> BB03 (always), preds={BB01} succs={BB03} ------------ BB03 [0012] [???..???) -> BB05,BB04 (cond), preds={BB02} succs={BB04,BB05} ***** BB03 [0012] STMT00018 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB04 [0013] [???..???) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB05 [0014] [???..???) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB06 [0011] [010..010) -> BB07 (always), preds={BB04,BB05} succs={BB07} ***** BB06 [0011] STMT00017 ( ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0010] [01B..01C) (return), preds={BB06} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check ----------- Statements (and blocks) added due to the inlining of call [000019] ----------- Arguments setup: STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct V06 tmp3 [000016] ----------- \--* LCL_VAR struct V02 loc2 Inlinee method body:New Basic Block BB06 [0015] created. Setting edge weights for BB02 -> BB06 to [0 .. 3.402823e+38] Convert bbKind of BB13 to BBJ_ALWAYS to bottomBlock BB06 Setting edge weights for BB13 -> BB06 to [0 .. 3.402823e+38] Setting edge weights for BB02 -> BB07 to [0 .. 3.402823e+38] fgInlineAppendStatements: no gc ref inline locals. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB07 [0007] 1 BB02 1 [02C..02D)-> BB08 (always) i q BB08 [0008] 1 BB07 1 [02C..02D)-> BB09 (always) i q BB09 [0012] 1 BB08 1 [02C..02D)-> BB11,BB10 ( cond ) i internal q BB10 [0013] 1 BB09 0.80 [02C..02D)-> BB12 (always) i internal BB11 [0014] 1 BB09 0.20 [02C..02D)-> BB12 (always) i internal q BB12 [0011] 2 BB10,BB11 1 [02C..02D)-> BB13 (always) i internal BB13 [0010] 1 BB12 1 [02C..02D)-> BB06 (always) i q ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB07 [0007] [02C..02D) -> BB08 (always), preds={BB02} succs={BB08} ------------ BB08 [0008] [02C..02D) -> BB09 (always), preds={BB07} succs={BB09} ------------ BB09 [0012] [02C..02D) -> BB11,BB10 (cond), preds={BB08} succs={BB10,BB11} ***** BB09 [0012] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB10 [0013] [02C..02D) -> BB12 (always), preds={BB09} succs={BB12} ***** BB10 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB11 [0014] [02C..02D) -> BB12 (always), preds={BB09} succs={BB12} ***** BB11 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB12 [0011] [02C..02D) -> BB13 (always), preds={BB10,BB11} succs={BB13} ***** BB12 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB13 [0010] [02C..02D) -> BB06 (always), preds={BB12} succs={BB06} ------------------------------------------------------------------------------------------------------------------- Successfully inlined Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int (28 IL bytes) (depth 1) [profitable inline] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'profitable inline' for 'punning:Main()' calling 'Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int' INLINER: during 'fgInline' result 'success' reason 'profitable inline' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target not direct managed' for 'punning:Main()' calling 'n/a' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target not direct managed' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target not direct managed' for 'punning:Main()' calling 'n/a' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target not direct managed' Replacing the return expression placeholder [000023] with [000061] [000023] --C-------- * RET_EXPR int (for [000019]) -> [000061] Inserting the inline return expression [000061] ----------- * LCL_VAR int V08 tmp5 Expanding INLINE_CANDIDATE in statement STMT00009 in BB06: STMT00009 ( ??? ... 0x043 ) [000031] I-C-G------ * CALL void punning+Assert:Equal(long,long) (exactContextHnd=0x4000000000423001) [000028] ----------- arg0 +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- arg1 \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 Argument #0: [000028] ----------- * CAST long <- int [000027] n---------- \--* IND int [000026] ----------- \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- \--* LCL_ADDR byref V04 tmp1 [+0] Argument #1: [000030] ----------- * CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 INLINER: inlineInfo.tokenLookupContextHandle for punning+Assert:Equal(long,long) set to 0x4000000000423001: Invoking compiler for the inlinee method punning+Assert:Equal(long,long) : IL to import: IL_0000 02 ldarg.0 IL_0001 03 ldarg.1 IL_0002 2e 06 beq.s 6 (IL_000a) IL_0004 73 14 00 00 0a newobj 0xA000014 IL_0009 7a throw IL_000a 2a ret INLINER impTokenLookupContextHandle for punning+Assert:Equal(long,long) is 0x4000000000423001. *************** In compInitDebuggingInfo() for punning+Assert:Equal(long,long) info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for punning+Assert:Equal(long,long) Jump targets: IL_000a New Basic Block BB01 [0016] created. BB01 [0016] [000..004) New Basic Block BB02 [0017] created. BB02 [0017] [004..00A) New Basic Block BB03 [0018] created. BB03 [0018] [00A..00B) Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] Basic block list for 'punning+Assert:Equal(long,long)' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0016] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0017] 1 BB01 0 [004..00A) (throw ) rare BB03 [0018] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000031] Starting PHASE Pre-import *************** Inline @[000031] Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0016] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0017] 1 BB01 0 [004..00A) (throw ) rare BB03 [0018] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0016] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0017] [004..00A) (throw), preds={BB01} succs={} ------------ BB03 [0018] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000031] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000031] Finishing PHASE Profile incorporation Trees after Profile incorporation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0016] 1 1 [000..004)-> BB03,BB02 ( cond ) BB02 [0017] 1 BB01 0 [004..00A) (throw ) rare BB03 [0018] 1 BB01 1 [00A..00B) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0016] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ------------ BB02 [0017] [004..00A) (throw), preds={BB01} succs={} ------------ BB03 [0018] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000031] Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'punning+Assert:Equal(long,long)' [ 0] 0 (0x000) ldarg.0 lvaGrabTemp returning 9 (V09 tmp6) called for Inlining Arg. Marked V09 as a single def temp [ 1] 1 (0x001) ldarg.1 lvaGrabTemp returning 10 (V10 tmp7) called for Inlining Arg. Marked V10 as a single def temp [ 2] 2 (0x002) beq.s STMT00022 ( 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000088] ----------- +--* LCL_VAR long V09 tmp6 [000089] ----------- \--* LCL_VAR long V10 tmp7 impImportBlockPending for BB02 impImportBlockPending for BB03 Importing BB03 (PC=010) of 'punning+Assert:Equal(long,long)' [ 0] 10 (0x00a) ret Importing BB02 (PC=004) of 'punning+Assert:Equal(long,long)' [ 0] 4 (0x004) newobj lvaGrabTemp returning 11 (V11 tmp8) called for NewObj constructor temp. STMT00023 ( 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DA--------- * STORE_LCL_VAR ref V11 tmp8 [000093] ----------- \--* ALLOCOBJ ref [000092] H---------- \--* CNS_INT(h) long 0x4000000000421f70 Marked V11 as a single def local lvaSetClass: setting class for V11 to (4000000000420898) System.Exception [exact] 0A000014 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 CheckCanInline: fetching method info for inline candidate .ctor -- context 4000000000420899 Class context: System.Exception INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' for 'punning+Assert:Equal(long,long)' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' STMT00024 ( ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 [ 1] 9 (0x009) throw STMT00025 ( 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ** Note: inlinee IL was partially imported -- imported 10 of 11 bytes of method IL *************** Inline @[000031] Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0016] 1 1 [000..004)-> BB03,BB02 ( cond ) i BB02 [0017] 1 BB01 0 [004..00A) (throw ) i rare newobj BB03 [0018] 1 BB01 1 [00A..00B) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0016] [000..004) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0016] STMT00022 ( 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000088] ----------- +--* LCL_VAR long V09 tmp6 [000089] ----------- \--* LCL_VAR long V10 tmp7 ------------ BB02 [0017] [004..00A) (throw), preds={BB01} succs={} ***** BB02 [0017] STMT00023 ( 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DA--------- * STORE_LCL_VAR ref V11 tmp8 [000093] ----------- \--* ALLOCOBJ ref [000092] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0017] STMT00024 ( ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB02 [0017] STMT00025 ( 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB03 [0018] [00A..00B) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Inline @[000031] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000031] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000031] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000031] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000031] Starting PHASE Post-import *************** Inline @[000031] Finishing PHASE Post-import [no changes] ----------- Statements (and blocks) added due to the inlining of call [000031] ----------- Arguments setup: Inlinee method body:New Basic Block BB14 [0019] created. Setting edge weights for BB06 -> BB14 to [0 .. 3.402823e+38] Convert bbKind of BB17 to BBJ_ALWAYS to bottomBlock BB14 Setting edge weights for BB17 -> BB14 to [0 .. 3.402823e+38] Setting edge weights for BB06 -> BB15 to [0 .. 3.402823e+38] fgInlineAppendStatements: no gc ref inline locals. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB15 [0016] 1 BB06 1 [000..000)-> BB17,BB16 ( cond ) i internal BB16 [0017] 1 BB15 0 [000..000) (throw ) i rare internal newobj BB17 [0018] 1 BB15 1 [000..000)-> BB14 (always) i internal q ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB15 [0016] [000..000) -> BB17,BB16 (cond), preds={BB06} succs={BB16,BB17} ***** BB15 [0016] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB16 [0017] [000..000) (throw), preds={BB15} succs={} ***** BB16 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DA--------- * STORE_LCL_VAR ref V11 tmp8 [000093] ----------- \--* ALLOCOBJ ref [000092] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB16 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB16 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB17 [0018] [000..000) -> BB14 (always), preds={BB15} succs={BB14} ------------------------------------------------------------------------------------------------------------------- Successfully inlined punning+Assert:Equal(long,long) (11 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'punning:Main()' calling 'punning+Assert:Equal(long,long)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' for 'punning:Main()' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' for 'punning:Main()' calling 'n/a' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' **************** Inline Tree Inlines into 06000001 [via ExtendedDefaultPolicy] punning:Main(): [INL00 IL=0005 TR=000001 06000092] [FAILED: callee: noinline per IL/cached result] System.Console:WriteLine(System.String) [INL01 IL=0010 TR=000002 06000008] [INLINED: callee: below ALWAYS_INLINE size] B.Class:GetFunctionPointerGeneric():long [INL02 IL=0006 TR=000034 0600134B] [INLINED: callee: below ALWAYS_INLINE size] System.IntPtr:op_Explicit(ulong):long [INL03 IL=0022 TR=000007 06000003] [INLINED: callee: below ALWAYS_INLINE size] punning+Assert:NotEqual(long,long) [INL00 IL=0004 TR=000046 060004ED] [FAILED: callee: too many il bytes] System.Exception:.ctor():this [INL04 IL=0048 TR=000019 06000002] [INLINED: call site: profitable inline] Caller.Class:CallGetField[System.__Canon](Caller.Struct`1[System.__Canon],long,System.Object):int [INL05 IL=0062 TR=000031 06000004] [INLINED: callee: below ALWAYS_INLINE size] punning+Assert:Equal(long,long) [INL00 IL=0004 TR=000096 060004ED] [FAILED: callee: too many il bytes] System.Exception:.ctor():this Budget: initialTime=264, finalTime=278, initialBudget=2640, currentBudget=2640 Budget: initialSize=1681, finalSize=2079 *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03 (always) i q BB03 [0003] 1 BB01 1 [010..011)-> BB05,BB04 ( cond ) i BB04 [0004] 1 BB03 0 [010..011) (throw ) i rare newobj BB05 [0005] 1 BB03 1 [010..011)-> BB02 (always) i q BB02 [0006] 1 BB05 1 [01B..043)-> BB07 (always) i q BB07 [0007] 1 BB02 1 [02C..02D)-> BB08 (always) i q BB08 [0008] 1 BB07 1 [02C..02D)-> BB09 (always) i q BB09 [0012] 1 BB08 1 [02C..02D)-> BB11,BB10 ( cond ) i internal q BB10 [0013] 1 BB09 0.80 [02C..02D)-> BB12 (always) i internal BB11 [0014] 1 BB09 0.20 [02C..02D)-> BB12 (always) i internal q BB12 [0011] 2 BB10,BB11 1 [02C..02D)-> BB13 (always) i internal BB13 [0010] 1 BB12 1 [02C..02D)-> BB06 (always) i q BB06 [0015] 1 BB13 1 [043..043)-> BB15 (always) i q BB15 [0016] 1 BB06 1 [000..000)-> BB17,BB16 ( cond ) i internal BB16 [0017] 1 BB15 0 [000..000) (throw ) i rare internal newobj BB17 [0018] 1 BB15 1 [000..000)-> BB14 (always) i internal q BB14 [0019] 1 BB17 1 [043..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty Renumber BB03 to BB02 Renumber BB04 to BB03 Renumber BB05 to BB04 Renumber BB02 to BB05 Renumber BB07 to BB06 Renumber BB08 to BB07 Renumber BB09 to BB08 Renumber BB10 to BB09 Renumber BB11 to BB10 Renumber BB12 to BB11 Renumber BB13 to BB12 Renumber BB06 to BB13 Renumber BB15 to BB14 Renumber BB16 to BB15 Renumber BB17 to BB16 Renumber BB14 to BB17 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB02 (always) i q BB02 [0003] 1 BB01 1 [010..011)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB02 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB02 1 [010..011)-> BB05 (always) i q BB05 [0006] 1 BB04 1 [01B..043)-> BB06 (always) i q BB06 [0007] 1 BB05 1 [02C..02D)-> BB07 (always) i q BB07 [0008] 1 BB06 1 [02C..02D)-> BB08 (always) i q BB08 [0012] 1 BB07 1 [02C..02D)-> BB10,BB09 ( cond ) i internal q BB09 [0013] 1 BB08 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB08 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [02C..02D)-> BB12 (always) i internal BB12 [0010] 1 BB11 1 [02C..02D)-> BB13 (always) i q BB13 [0015] 1 BB12 1 [043..043)-> BB14 (always) i q BB14 [0016] 1 BB13 1 [000..000)-> BB16,BB15 ( cond ) i internal BB15 [0017] 1 BB14 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB14 1 [000..000)-> BB17 (always) i internal q BB17 [0019] 1 BB16 1 [043..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty New BlockSet epoch 2, # of blocks (including unused BB00): 18, bitset array size: 1 (short) *************** 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..01B)-> BB02 (always) i q BB02 [0003] 1 BB01 1 [010..011)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB02 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB02 1 [010..011)-> BB05 (always) i q BB05 [0006] 1 BB04 1 [01B..043)-> BB06 (always) i q BB06 [0007] 1 BB05 1 [02C..02D)-> BB07 (always) i q BB07 [0008] 1 BB06 1 [02C..02D)-> BB08 (always) i q BB08 [0012] 1 BB07 1 [02C..02D)-> BB10,BB09 ( cond ) i internal q BB09 [0013] 1 BB08 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB08 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [02C..02D)-> BB12 (always) i internal BB12 [0010] 1 BB11 1 [02C..02D)-> BB13 (always) i q BB13 [0015] 1 BB12 1 [043..043)-> BB14 (always) i q BB14 [0016] 1 BB13 1 [000..000)-> BB16,BB15 ( cond ) i internal BB15 [0017] 1 BB14 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB14 1 [000..000)-> BB17 (always) i internal q BB17 [0019] 1 BB16 1 [043..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ------------ BB02 [0003] [010..011) -> BB04,BB03 (cond), preds={BB01} succs={BB03,BB04} ***** BB02 [0003] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB02} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DA--------- * STORE_LCL_VAR ref V05 tmp2 [000043] ----------- \--* ALLOCOBJ ref [000042] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..011) -> BB05 (always), preds={BB02} succs={BB05} ------------ BB05 [0006] [01B..043) -> BB06 (always), preds={BB04} succs={BB06} ***** BB05 [0006] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct V02 loc2 [000009] ----------- \--* CNS_INT int 0 ***** BB05 [0006] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] [000012] ----------- \--* CNS_INT int 85 ***** BB05 [0006] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct V04 tmp1 [000015] ----------- \--* LCL_VAR struct V02 loc2 ***** BB05 [0006] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct V06 tmp3 [000016] ----------- \--* LCL_VAR struct V02 loc2 ------------ BB06 [0007] [02C..02D) -> BB07 (always), preds={BB05} succs={BB07} ------------ BB07 [0008] [02C..02D) -> BB08 (always), preds={BB06} succs={BB08} ------------ BB08 [0012] [02C..02D) -> BB10,BB09 (cond), preds={BB07} succs={BB09,BB10} ***** BB08 [0012] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB08} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB08} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [02C..02D) -> BB12 (always), preds={BB09,BB10} succs={BB12} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB12 [0010] [02C..02D) -> BB13 (always), preds={BB11} succs={BB13} ------------ BB13 [0015] [043..043) -> BB14 (always), preds={BB12} succs={BB14} ***** BB13 [0015] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 ------------ BB14 [0016] [000..000) -> BB16,BB15 (cond), preds={BB13} succs={BB15,BB16} ***** BB14 [0016] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB15 [0017] [000..000) (throw), preds={BB14} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DA--------- * STORE_LCL_VAR ref V11 tmp8 [000093] ----------- \--* ALLOCOBJ ref [000092] H---------- \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..000) -> BB17 (always), preds={BB14} succs={BB17} ------------ BB17 [0019] [043..044) (return), preds={BB16} succs={} ***** BB17 [0019] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0xa) No blocks were profiled, so nothing to check *************** Starting PHASE Allocate Objects disabled, 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..01B)-> BB02 (always) i q BB02 [0003] 1 BB01 1 [010..011)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB02 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB02 1 [010..011)-> BB05 (always) i q BB05 [0006] 1 BB04 1 [01B..043)-> BB06 (always) i q BB06 [0007] 1 BB05 1 [02C..02D)-> BB07 (always) i q BB07 [0008] 1 BB06 1 [02C..02D)-> BB08 (always) i q BB08 [0012] 1 BB07 1 [02C..02D)-> BB10,BB09 ( cond ) i internal q BB09 [0013] 1 BB08 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB08 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [02C..02D)-> BB12 (always) i internal BB12 [0010] 1 BB11 1 [02C..02D)-> BB13 (always) i q BB13 [0015] 1 BB12 1 [043..043)-> BB14 (always) i q BB14 [0016] 1 BB13 1 [000..000)-> BB16,BB15 ( cond ) i internal BB15 [0017] 1 BB14 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB14 1 [000..000)-> BB17 (always) i internal q BB17 [0019] 1 BB16 1 [043..044) (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 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..01B)-> BB02 (always) i q BB02 [0003] 1 BB01 1 [010..011)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB02 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB02 1 [010..011)-> BB05 (always) i q BB05 [0006] 1 BB04 1 [01B..043)-> BB06 (always) i q BB06 [0007] 1 BB05 1 [02C..02D)-> BB07 (always) i q BB07 [0008] 1 BB06 1 [02C..02D)-> BB08 (always) i q BB08 [0012] 1 BB07 1 [02C..02D)-> BB10,BB09 ( cond ) i internal q BB09 [0013] 1 BB08 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB08 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [02C..02D)-> BB12 (always) i internal BB12 [0010] 1 BB11 1 [02C..02D)-> BB13 (always) i q BB13 [0015] 1 BB12 1 [043..043)-> BB14 (always) i q BB14 [0016] 1 BB13 1 [000..000)-> BB16,BB15 ( cond ) i internal BB15 [0017] 1 BB14 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB14 1 [000..000)-> BB17 (always) i internal q BB17 [0019] 1 BB16 1 [043..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ------------ BB02 [0003] [010..011) -> BB04,BB03 (cond), preds={BB01} succs={BB03,BB04} ***** BB02 [0003] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB02} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..011) -> BB05 (always), preds={BB02} succs={BB05} ------------ BB05 [0006] [01B..043) -> BB06 (always), preds={BB04} succs={BB06} ***** BB05 [0006] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct V02 loc2 [000009] ----------- \--* CNS_INT int 0 ***** BB05 [0006] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] [000012] ----------- \--* CNS_INT int 85 ***** BB05 [0006] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct V04 tmp1 [000015] ----------- \--* LCL_VAR struct V02 loc2 ***** BB05 [0006] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct V06 tmp3 [000016] ----------- \--* LCL_VAR struct V02 loc2 ------------ BB06 [0007] [02C..02D) -> BB07 (always), preds={BB05} succs={BB07} ------------ BB07 [0008] [02C..02D) -> BB08 (always), preds={BB06} succs={BB08} ------------ BB08 [0012] [02C..02D) -> BB10,BB09 (cond), preds={BB07} succs={BB09,BB10} ***** BB08 [0012] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB08} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB08} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [02C..02D) -> BB12 (always), preds={BB09,BB10} succs={BB12} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ------------ BB12 [0010] [02C..02D) -> BB13 (always), preds={BB11} succs={BB13} ------------ BB13 [0015] [043..043) -> BB14 (always), preds={BB12} succs={BB14} ***** BB13 [0015] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 ------------ BB14 [0016] [000..000) -> BB16,BB15 (cond), preds={BB13} succs={BB15,BB16} ***** BB14 [0016] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB15 [0017] [000..000) (throw), preds={BB14} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..000) -> BB17 (always), preds={BB14} succs={BB17} ------------ BB17 [0019] [043..044) (return), preds={BB16} succs={} ***** BB17 [0019] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 Compacting BB02 into BB01: *************** In fgDebugCheckBBlist Compacting BB05 into BB04: *************** In fgDebugCheckBBlist Compacting BB06 into BB04: *************** In fgDebugCheckBBlist Compacting BB07 into BB04: *************** In fgDebugCheckBBlist Compacting BB08 into BB04: *************** In fgDebugCheckBBlist Compacting BB12 into BB11: *************** In fgDebugCheckBBlist Compacting BB13 into BB11: *************** In fgDebugCheckBBlist Compacting BB14 into BB11: *************** In fgDebugCheckBBlist Compacting BB17 into BB16: *************** In fgDebugCheckBBlist *************** Finishing PHASE Update flow graph early pass Trees after Update flow graph early pass ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct V02 loc2 [000009] ----------- \--* CNS_INT int 0 ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] [000012] ----------- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct V04 tmp1 [000015] ----------- \--* LCL_VAR struct V02 loc2 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct V06 tmp3 [000016] ----------- \--* LCL_VAR struct V02 loc2 ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct V06 tmp3 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct V06 tmp3 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ***** BB11 [0011] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Promote Structs lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 loc0 long ; V01 loc1 int ; V02 loc2 struct ld-addr-op ; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 struct "impAppendStmt" ; V05 tmp2 ref class-hnd exact "NewObj constructor temp" ; V06 tmp3 struct "Inlining Arg" ; V07 tmp4 int "calli" ; V08 tmp5 int ; V09 tmp6 long "Inlining Arg" ; V10 tmp7 long "Inlining Arg" ; V11 tmp8 ref class-hnd exact "NewObj constructor temp" Notify VM instruction set (SSE) must be supported. Promoting struct local V02 (Caller.Struct`1[System.Object]): lvaGrabTemp returning 12 (V12 tmp9) (a long lifetime temp) called for field V02.Field (fldOffset=0x0). struct promotion of V03 is disabled because it has already been marked address exposed Promoting struct local V04 (Caller.Struct`1[System.Object]): lvaGrabTemp returning 13 (V13 tmp10) (a long lifetime temp) called for field V04.Field (fldOffset=0x0). Promoting struct local V06 (Caller.Struct`1[System.Object]): lvaGrabTemp returning 14 (V14 tmp11) (a long lifetime temp) called for field V06.Field (fldOffset=0x0). lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 loc0 long ; V01 loc1 int ; V02 loc2 struct ld-addr-op ; V03 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 struct "impAppendStmt" ; V05 tmp2 ref class-hnd exact "NewObj constructor temp" ; V06 tmp3 struct "Inlining Arg" ; V07 tmp4 int "calli" ; V08 tmp5 int ; V09 tmp6 long "Inlining Arg" ; V10 tmp7 long "Inlining Arg" ; V11 tmp8 ref class-hnd exact "NewObj constructor temp" ; V12 tmp9 int "field V02.Field (fldOffset=0x0)" P-INDEP ; V13 tmp10 int "field V04.Field (fldOffset=0x0)" P-INDEP ; V14 tmp11 int "field V06.Field (fldOffset=0x0)" P-INDEP *************** Finishing PHASE Morph - Promote Structs Trees after Morph - Promote Structs ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000009] ----------- \--* CNS_INT int 0 ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] | * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000012] ----------- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ***** BB11 [0011] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] | * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Structs/AddrExp LocalAddressVisitor visiting statement: STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn LocalAddressVisitor visiting statement: STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 LocalAddressVisitor visiting statement: STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 LocalAddressVisitor visiting statement: STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 LocalAddressVisitor visiting statement: STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 LocalAddressVisitor visiting statement: STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000009] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00005 ( 0x023[E-] ... 0x027 ) [000014] nA--------- * STOREIND int [000013] ----------- +--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000011] ----------- | \--* LCL_ADDR byref V02 loc2 [+0] | * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000012] ----------- \--* CNS_INT int 85 Replacing the field in promoted struct with local var V12 LocalAddressVisitor modified statement: STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 [000012] ----------- \--* CNS_INT int 85 LocalAddressVisitor visiting statement: STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 LocalAddressVisitor visiting statement: STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 LocalAddressVisitor visiting statement: STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 LocalAddressVisitor visiting statement: STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 LocalAddressVisitor visiting statement: STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 LocalAddressVisitor visiting statement: STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 LocalAddressVisitor visiting statement: STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 LocalAddressVisitor visiting statement: STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] n---------- | \--* IND int [000026] ----------- | \--* FIELD_ADDR byref Caller.Struct`1[System.Object]:Field [000025] ----------- | \--* LCL_ADDR byref V04 tmp1 [+0] | * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 Replacing the field in promoted struct with local var V13 LocalAddressVisitor modified statement: STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 LocalAddressVisitor visiting statement: STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 LocalAddressVisitor visiting statement: STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 LocalAddressVisitor visiting statement: STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 LocalAddressVisitor visiting statement: STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp Trees after Morph - Structs/AddrExp ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000009] ----------- \--* CNS_INT int 0 ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 [000012] ----------- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 ***** BB11 [0011] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Early liveness Local V03 should not be enregistered because: struct size does not match reg size Tracked variable (9 out of 15) table: V00 loc0 [ long]: refCnt = 6, refCntWtd = 0 V01 loc1 [ int]: refCnt = 2, refCntWtd = 0 V05 tmp2 [ ref]: refCnt = 3, refCntWtd = 0 V07 tmp4 [ int]: refCnt = 3, refCntWtd = 0 V08 tmp5 [ int]: refCnt = 2, refCntWtd = 0 V11 tmp8 [ ref]: refCnt = 3, refCntWtd = 0 V12 tmp9 [ int]: refCnt = 4, refCntWtd = 0 V13 tmp10 [ int]: refCnt = 2, refCntWtd = 0 V14 tmp11 [ int]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={ } DEF(1)={V00} BB03 USE(0)={ } DEF(1)={V05} BB04 USE(1)={V00 } DEF(3)={ V12 V13 V14} BB09 USE(2)={V00 V14} DEF(1)={ V07 } BB10 USE(2)={V00 V14} DEF(1)={ V07 } BB11 USE(2)={ V07 V13} DEF(2)={V01 V08 } BB15 USE(0)={ } DEF(1)={V11} BB16 USE(0)={} DEF(0)={} ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={ } OUT(1)={V00} BB03 IN (0)={} OUT(0)={} BB04 IN (1)={V00 } OUT(3)={V00 V13 V14} BB09 IN (3)={V00 V13 V14} OUT(2)={ V07 V13 } BB10 IN (3)={V00 V13 V14} OUT(2)={ V07 V13 } BB11 IN (2)={V07 V13} OUT(0)={ } BB15 IN (0)={} OUT(0)={} BB16 IN (0)={} OUT(0)={} Store [000010] is dead and has no side effects, removing statement removing useless STMT00004 ( 0x01B[E-] ... ??? ) [000010] DA--------- * STORE_LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 [000009] ----------- \--* CNS_INT int 0 from BB04 *************** 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..01B)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 (last use) ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 [000012] ----------- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 (last use) ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 (last use) ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 (last use) [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) ***** BB11 [0011] STMT00008 ( ??? ... ??? ) [000024] DAC-------- * STORE_LCL_VAR int V01 loc1 [000061] ----------- \--* LCL_VAR int V08 tmp5 (last use) ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 (last use) [000030] ----------- \--* CAST long <- int [000029] ----------- \--* LCL_VAR int V01 loc1 (last use) ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 (last use) ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Forward Substitution ===> BB01 [000004]: next stmt has non-last use ===> BB03 [000044]: next stmt has non-last use ===> BB04 [000014]: next stmt has non-last use [000021]: no next stmt use [000086]: no next stmt use ===> BB09 ===> BB10 ===> BB11 [000059]: [000061] is last use of [000059] (V08) -- fwd subbing [000058]; new next stmt is STMT00008 ( ??? ... ??? ) [000024] DA--------- * STORE_LCL_VAR int V01 loc1 [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) removing useless STMT00017 ( INL04 @ ??? ... ??? ) <- INLRT @ 0x02C[E-] [000059] DA--------- * STORE_LCL_VAR int V08 tmp5 [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) from BB11 [000024]: [000029] is last use of [000024] (V01) -- fwd subbing [000058]; new next stmt is STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 (last use) [000030] ----------- \--* CAST long <- int [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) removing useless STMT00008 ( ??? ... ??? ) [000024] DA--------- * STORE_LCL_VAR int V01 loc1 [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) from BB11 ===> BB15 [000094]: next stmt has non-last use ===> BB16 *************** Finishing PHASE Forward Substitution Trees after Forward Substitution ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 (last use) ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 [000012] ----------- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 (last use) ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 (last use) ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 (last use) [000073] ----------- \--* CNS_INT long 2 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 (last use) [000030] ----------- \--* CAST long <- int [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 (last use) ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 DFS blocks and remove dead code *************** Finishing PHASE DFS blocks and remove dead code [no changes] *************** Starting PHASE Morph - Global Morphing BB01 Assertions in: #NA fgMorphTree BB01, STMT00000 (before) [000001] --C-G------ * CALL void System.Console:WriteLine(System.String) [000000] ----------- arg0 \--* CNS_STR ref Initializing arg info for 1.CALL: Args for call [000001] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000000].CNS_STR ref (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 1.CALL: Sorting the arguments: Deferred argument ('rcx'): [000100] H----+----- * CNS_INT(h) ref '"Running Main..."' Moved to late list Register placement order: rcx Args for [000001].CALL after fgMorphArgs: CallArg[[000100].CNS_INT ref (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 fgMorphTree BB01, STMT00000 (after) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' fgMorphTree BB01, STMT00002 (before) [000004] DAC-------- * STORE_LCL_VAR long V00 loc0 [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn GenTreeNode creates assertion: [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 In BB01 New Local Constant Assertion: V00 == [40000000004230C0], index = #01 fgMorphTree BB01, STMT00012 (before) [000041] ----------- * JTRUE void [000040] N--------U- \--* NE int [000039] ----------- +--* CNS_INT long 0 [000006] ----------- \--* LCL_VAR long V00 loc0 GenTreeNode creates assertion: [000041] -----+----- * JTRUE void In BB01 New Local Constant Assertion: V00 != 0, index = #02 GenTreeNode creates assertion: [000041] -----+----- * JTRUE void In BB01 New Local Constant Assertion: V00 == 0, index = #03 Morphing BB04 Using `if true` assertions from pred BB01 Assertions in: #01 #02 fgMorphTree BB04, STMT00005 (before) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 [000012] ----------- \--* CNS_INT int 85 GenTreeNode creates assertion: [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 In BB04 New Local Constant Assertion: V12 == 85, index = #04 fgMorphTree BB04, STMT00007 (before) [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 MorphCopyBlock: PrepareDst for [000021] have found a local var V04. GenTreeNode creates assertion: [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 In BB04 New Local Copy Assertion: V04 == V02, index = #05 block assignment to morph: [000021] DA--------- * STORE_LCL_VAR struct(P) V04 tmp1 * int field V04.Field (fldOffset=0x0) -> V13 tmp10 [000015] -----+----- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 (m_dstDoFldStore=true) (m_srcDoFldStore=true) using field by field assignments. GenTreeNode creates assertion: [000102] DA--------- * STORE_LCL_VAR int V13 tmp10 In BB04 New Local Copy Assertion: V13 == V12, index = #06 MorphCopyBlock (after): [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 fgMorphTree BB04, STMT00007 (after) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 fgMorphTree BB04, STMT00021 (before) [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] ----------- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 (last use) MorphCopyBlock: PrepareDst for [000086] have found a local var V06. GenTreeNode creates assertion: [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 In BB04 New Local Copy Assertion: V06 == V02, index = #07 block assignment to morph: [000086] DA--------- * STORE_LCL_VAR struct(P) V06 tmp3 * int field V06.Field (fldOffset=0x0) -> V14 tmp11 [000016] -----+----- \--* LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 (last use) (m_dstDoFldStore=true) (m_srcDoFldStore=true) using field by field assignments. GenTreeNode creates assertion: [000104] DA--------- * STORE_LCL_VAR int V14 tmp11 In BB04 New Local Copy Assertion: V14 == V12, index = #08 MorphCopyBlock (after): [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 fgMorphTree BB04, STMT00021 (after) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 fgMorphTree BB04, STMT00018 (before) [000067] ----------- * JTRUE void [000066] ----------- \--* NE int [000064] ----------- +--* AND long [000063] ----------- | +--* LCL_VAR long V00 loc0 [000062] ----------- | \--* CNS_INT long 2 [000065] ----------- \--* CNS_INT long 0 Morphing BB10 Using `if true` assertions from pred BB04 Assertions in: #01 #02 #04 #05 #06 #07 #08 fgMorphTree BB10, STMT00020 (before) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000083] --CXG------ \--* CALL ind int [000081] ---XG------ gctx +--* IND long [000080] ----------- | \--* ADD long [000076] ----------- | +--* SUB long [000077] ----------- | | +--* LCL_VAR long V00 loc0 [000078] ----------- | | \--* CNS_INT long 2 [000079] ----------- | \--* CNS_INT long 8 [000084] ----------- arg1 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000075] ---XG------ calli tgt \--* IND long [000074] ----------- \--* SUB long [000072] ----------- +--* LCL_VAR long V00 loc0 (last use) [000073] ----------- \--* CNS_INT long 2 Initializing arg info for 83.CALL: Args for call [000083] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000081].IND long (By value), 1 reg: rcx, byteAlignment=8, wellKnown[InstParam]] CallArg[[000084].LCL_VAR struct (By value), 1 reg: rdx, byteAlignment=8] Morphing args for 83.CALL: Folding long operator with constant nodes into a constant: [000105] ----------- * ADD long [000078] -----+----- +--* CNS_INT long -2 [000079] -----+----- \--* CNS_INT long 8 Bashed to long constant: [000105] ----------- * CNS_INT long 6 Assertion prop in BB10: Copy Assertion: V06 == V02, index = #07 [000084] ----------- * LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 Sorting the arguments: Deferred argument ('rcx'): [000081] ---XG+----- * IND long [000076] -----+----- \--* ADD long [000077] -----+----- +--* LCL_VAR long V00 loc0 [000078] -----+----- \--* CNS_INT long 6 Moved to late list Deferred argument ('rdx'): [000084] -----+----- * LCL_VAR int V12 tmp9 Moved to late list Register placement order: rcx rdx Args for [000083].CALL after fgMorphArgs: CallArg[[000081].IND long (By value), 1 reg: rcx, byteAlignment=8, isLate, processed, wellKnown[InstParam]] CallArg[[000084].LCL_VAR struct (By value), 1 reg: rdx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 fgMorphTree BB10, STMT00020 (after) [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 (last use) [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 Morphing BB09 Using `if false` assertions from pred BB04 Assertions in: #01 #02 #04 #05 #06 #07 #08 fgMorphTree BB09, STMT00019 (before) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 [000069] --CXG------ \--* CALL ind int [000070] ----------- arg0 +--* LCL_VAR struct(P) V06 tmp3 +--* int field V06.Field (fldOffset=0x0) -> V14 tmp11 (last use) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 (last use) Initializing arg info for 69.CALL: Args for call [000069] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000070].LCL_VAR struct (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 69.CALL: Assertion prop in BB09: Copy Assertion: V06 == V02, index = #07 [000070] ----------- * LCL_VAR struct(P) V02 loc2 * int field V02.Field (fldOffset=0x0) -> V12 tmp9 Sorting the arguments: Deferred argument ('rcx'): [000070] -----+----- * LCL_VAR int V12 tmp9 Moved to late list Register placement order: rcx Args for [000069].CALL after fgMorphArgs: CallArg[[000070].LCL_VAR struct (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 fgMorphTree BB09, STMT00019 (after) [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 (last use) [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 Morphing BB11 Assertions in: #01 #02 #04 #05 #06 #07 #08 fgMorphTree BB11, STMT00022 (before) [000091] ----------- * JTRUE void [000090] ----------- \--* EQ int [000028] ----------- +--* CAST long <- int [000027] ----------- | \--* LCL_VAR int V13 tmp10 (last use) [000030] ----------- \--* CAST long <- int [000058] ----------- \--* LCL_VAR int V07 tmp4 (last use) Assertion prop in BB11: Copy Assertion: V13 == V12, index = #06 [000027] ----------- * LCL_VAR int V12 tmp9 Assertion prop in BB11: Constant Assertion: V12 == 85, index = #04 [000027] ----------- * CNS_INT int 85 Folding long operator with constant nodes into a constant: [000028] ----------- * CAST long <- int [000027] -----+----- \--* CNS_INT int 85 Bashed to long constant: [000028] ----------- * CNS_INT long 85 fgMorphTree BB11, STMT00022 (after) [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 (last use) Morphing BB16 Using `if true` assertions from pred BB11 Assertions in: #01 #02 #04 #05 #06 #07 #08 fgMorphTree BB16, STMT00010 (before) [000032] ----------- * RETURN void Morphing BB15 Using `if false` assertions from pred BB11 Assertions in: #01 #02 #04 #05 #06 #07 #08 fgMorphTree BB15, STMT00023 (before) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 Initializing arg info for 93.CALL: Args for call [000093] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000092].CNS_INT long (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 93.CALL: Sorting the arguments: Deferred argument ('rcx'): [000092] H----+----- * CNS_INT(h) long 0x4000000000421f70 Moved to late list Register placement order: rcx Args for [000093].CALL after fgMorphArgs: CallArg[[000092].CNS_INT long (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 fgMorphTree BB15, STMT00024 (before) [000096] --C-G------ * CALL void System.Exception:.ctor():this [000095] ----------- this \--* LCL_VAR ref V11 tmp8 Initializing arg info for 96.CALL: Args for call [000096] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000095].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, wellKnown[ThisPointer]] Morphing args for 96.CALL: Sorting the arguments: Deferred argument ('rcx'): [000095] -----+----- * LCL_VAR ref V11 tmp8 Moved to late list Register placement order: rcx Args for [000096].CALL after fgMorphArgs: CallArg[[000095].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, isLate, processed, wellKnown[ThisPointer]] OutgoingArgsStackSize is 32 fgMorphTree BB15, STMT00025 (before) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW [000097] ----------- arg0 \--* LCL_VAR ref V11 tmp8 (last use) Initializing arg info for 98.CALL: Args for call [000098] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000097].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 98.CALL: Sorting the arguments: Deferred argument ('rcx'): [000097] -----+----- * LCL_VAR ref V11 tmp8 (last use) Moved to late list Register placement order: rcx Args for [000098].CALL after fgMorphArgs: CallArg[[000097].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 Morphing BB03 Using `if false` assertions from pred BB01 Assertions in: #01 #03 fgMorphTree BB03, STMT00013 (before) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H---------- arg0 \--* CNS_INT(h) long 0x4000000000421f70 Initializing arg info for 43.CALL: Args for call [000043] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000042].CNS_INT long (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 43.CALL: Sorting the arguments: Deferred argument ('rcx'): [000042] H----+----- * CNS_INT(h) long 0x4000000000421f70 Moved to late list Register placement order: rcx Args for [000043].CALL after fgMorphArgs: CallArg[[000042].CNS_INT long (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 fgMorphTree BB03, STMT00014 (before) [000046] --C-G------ * CALL void System.Exception:.ctor():this [000045] ----------- this \--* LCL_VAR ref V05 tmp2 Initializing arg info for 46.CALL: Args for call [000046] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000045].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, wellKnown[ThisPointer]] Morphing args for 46.CALL: Sorting the arguments: Deferred argument ('rcx'): [000045] -----+----- * LCL_VAR ref V05 tmp2 Moved to late list Register placement order: rcx Args for [000046].CALL after fgMorphArgs: CallArg[[000045].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, isLate, processed, wellKnown[ThisPointer]] OutgoingArgsStackSize is 32 fgMorphTree BB03, STMT00015 (before) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW [000047] ----------- arg0 \--* LCL_VAR ref V05 tmp2 (last use) Initializing arg info for 48.CALL: Args for call [000048] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000047].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8] Morphing args for 48.CALL: Sorting the arguments: Deferred argument ('rcx'): [000047] -----+----- * LCL_VAR ref V05 tmp2 (last use) Moved to late list Register placement order: rcx Args for [000048].CALL after fgMorphArgs: CallArg[[000047].LCL_VAR ref (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 morph assertion stats: 64 table size, 8 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..01B)-> BB04,BB03 ( cond ) i hascall gcsafe BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal hascall gcsafe BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal hascall gcsafe q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 (last use) ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 (last use) [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 (last use) [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 (last use) ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 (last use) ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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..01B)-> BB04,BB03 ( cond ) i hascall gcsafe BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal hascall gcsafe BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal hascall gcsafe q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB04,BB03 (cond), preds={} succs={BB03,BB04} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB03 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB03 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB03 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB03 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB04 [0005] [010..043) -> BB10,BB09 (cond), preds={BB01} succs={BB09,BB10} ***** BB04 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB04 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB04 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB04 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB09 [0013] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB09 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB10 [0014] [02C..02D) -> BB11 (always), preds={BB04} succs={BB11} ***** BB10 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB11 [0011] [000..043) -> BB16,BB15 (cond), preds={BB09,BB10} succs={BB15,BB16} ***** BB11 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB15 [0017] [000..000) (throw), preds={BB11} succs={} ***** BB15 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB15 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB15 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB16 [0018] [000..044) (return), preds={BB11} succs={} ***** BB16 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE GS Cookie No GS security needed *************** Finishing PHASE GS Cookie [no changes] *************** Starting PHASE Compute edge weights (1, false) ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i hascall gcsafe BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal hascall gcsafe BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal hascall gcsafe q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (1, false) [no changes] *************** Starting PHASE Create EH funclets *************** Finishing PHASE Create EH funclets [no changes] *************** Starting PHASE Invert loops *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB04,BB03 ( cond ) i hascall gcsafe BB03 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB04 [0005] 1 BB01 1 [010..043)-> BB10,BB09 ( cond ) i BB09 [0013] 1 BB04 0.80 [02C..02D)-> BB11 (always) i internal hascall gcsafe BB10 [0014] 1 BB04 0.20 [02C..02D)-> BB11 (always) i internal hascall gcsafe q BB11 [0011] 2 BB09,BB10 1 [000..043)-> BB16,BB15 ( cond ) i BB15 [0017] 1 BB11 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB16 [0018] 1 BB11 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty Renumber BB03 to BB02 Renumber BB04 to BB03 Renumber BB09 to BB04 Renumber BB10 to BB05 Renumber BB11 to BB06 Renumber BB15 to BB07 Renumber BB16 to BB08 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty New BlockSet epoch 3, # of blocks (including unused BB00): 9, bitset array size: 1 (short) *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- Considering uncond to cond BB04 -> BB06 Considering uncond to cond BB05 -> BB06 *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Optimize control flow Trees after Optimize control flow ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Canonicalize entry *************** Finishing PHASE Canonicalize entry [no changes] *************** Starting PHASE Compute blocks reachability *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.80 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.20 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty =============== No blocks renumbered! Return blocks: BB08 After computing reachability sets: ------------------------------------------------ BBnum Reachable by ------------------------------------------------ BB01 : BB01 BB02 : BB02 BB01 BB03 : BB03 BB01 BB04 : BB04 BB03 BB01 BB05 : BB05 BB03 BB01 BB06 : BB06 BB04 BB05 BB03 BB01 BB07 : BB07 BB06 BB04 BB05 BB03 BB01 BB08 : BB08 BB06 BB04 BB05 BB03 BB01 After computing the dominance tree: BB01 : BB03 BB02 BB03 : BB05 BB04 BB06 BB06 : BB08 BB07 *************** Finishing PHASE Compute blocks reachability [no changes] *************** Starting PHASE Set block weights *************** Finishing PHASE Set block weights Trees after Set block weights ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Find loops *************** In optFindLoopsPhase() *************** In optMarkLoopHeads() 0 loop heads marked Identifying loops in DFS tree with following reverse post order: RPO -> BB [pre, post] 00 -> BB01[0, 7] 01 -> BB03[2, 6] 02 -> BB05[7, 5] 03 -> BB04[3, 4] 04 -> BB06[4, 3] 05 -> BB08[6, 2] 06 -> BB07[5, 1] 07 -> BB02[1, 0] Flow graph has no cycles; skipping identification of natural loops *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty =============== No blocks renumbered! *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 After computing the dominance tree: BB01 : BB03 BB02 BB03 : BB05 BB04 BB06 BB06 : BB08 BB07 *************** 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-] ... 0x00F ) [000001] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000100] H----+----- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' STMT00002 ( 0x00A[E-] ... ??? ) [000004] DA---+----- * STORE_LCL_VAR long V00 loc0 [000037] H----+----- \--* CNS_INT(h) long 0x40000000004230c0 ftn New refCnts for V00: refCnt = 1, refCntWtd = 1 Marking EH Var V00 as a register candidate. STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] [000041] -----+----- * JTRUE void [000040] N----+-N-U- \--* NE int [000039] -----+----- +--* CNS_INT long 0 [000006] -----+----- \--* LCL_VAR long V00 loc0 New refCnts for V00: refCnt = 2, refCntWtd = 2 *** marking local variables in block BB02 (weight=0) STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] [000044] DAC--+----- * STORE_LCL_VAR ref V05 tmp2 [000043] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000042] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 New refCnts for V05: refCnt = 1, refCntWtd = 0 Marking EH Var V05 as a register candidate. STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] [000046] --CXG+----- * CALL void System.Exception:.ctor():this [000045] -----+----- this in rcx \--* LCL_VAR ref V05 tmp2 New refCnts for V05: refCnt = 2, refCntWtd = 0 STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] [000048] --CXG+----- * CALL help void CORINFO_HELP_THROW [000047] -----+----- arg0 in rcx \--* LCL_VAR ref V05 tmp2 New refCnts for V05: refCnt = 3, refCntWtd = 0 *** marking local variables in block BB03 (weight=1) STMT00005 ( 0x023[E-] ... 0x027 ) [000014] DA---+----- * STORE_LCL_VAR int V12 tmp9 [000012] -----+----- \--* CNS_INT int 85 New refCnts for V12: refCnt = 1, refCntWtd = 1 Marking EH Var V12 as a register candidate. STMT00007 ( 0x02C[E-] ... 0x035 ) [000102] DA---+----- * STORE_LCL_VAR int V13 tmp10 [000101] ----------- \--* LCL_VAR int V12 tmp9 New refCnts for V13: refCnt = 1, refCntWtd = 1 Marking EH Var V13 as a register candidate. New refCnts for V12: refCnt = 2, refCntWtd = 2 STMT00021 ( 0x02C[E-] ... ??? ) [000104] DA---+----- * STORE_LCL_VAR int V14 tmp11 [000103] ----------- \--* LCL_VAR int V12 tmp9 New refCnts for V14: refCnt = 1, refCntWtd = 1 Marking EH Var V14 as a register candidate. New refCnts for V12: refCnt = 3, refCntWtd = 3 STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000067] -----+----- * JTRUE void [000066] J----+-N--- \--* NE int [000064] -----+----- +--* AND int [000063] -----+----- | +--* LCL_VAR int V00 loc0 [000062] -----+----- | \--* CNS_INT int 2 [000065] -----+----- \--* CNS_INT int 0 New refCnts for V00: refCnt = 3, refCntWtd = 3 *** marking local variables in block BB04 (weight=0.40) STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000068] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000069] --CXG+----- \--* CALL ind int [000071] -----+----- calli tgt \--* LCL_VAR long V00 loc0 [000070] -----+----- arg0 in rcx \--* LCL_VAR int V12 tmp9 New refCnts for V07: refCnt = 1, refCntWtd = 0.80 V07 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V12: refCnt = 4, refCntWtd = 3.40 New refCnts for V00: refCnt = 4, refCntWtd = 3.40 *** marking local variables in block BB05 (weight=0.10) STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] [000082] DACXG+----- * STORE_LCL_VAR int V07 tmp4 [000083] --CXG+----- \--* CALL ind int [000075] ---XG+----- calli tgt \--* IND long [000074] -----+----- \--* ADD long [000072] -----+----- +--* LCL_VAR long V00 loc0 [000073] -----+----- \--* CNS_INT long -2 [000081] ---XG+----- gctx in rcx +--* IND long [000076] -----+----- | \--* ADD long [000077] -----+----- | +--* LCL_VAR long V00 loc0 [000078] -----+----- | \--* CNS_INT long 6 [000084] -----+----- arg1 in rdx \--* LCL_VAR int V12 tmp9 New refCnts for V07: refCnt = 2, refCntWtd = 1 New refCnts for V00: refCnt = 5, refCntWtd = 3.50 New refCnts for V12: refCnt = 5, refCntWtd = 3.50 New refCnts for V00: refCnt = 6, refCntWtd = 3.60 *** marking local variables in block BB06 (weight=1) STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000091] -----+----- * JTRUE void [000090] J----+-N--- \--* EQ int [000028] -----+----- +--* CNS_INT long 85 [000030] -----+----- \--* CAST long <- int [000058] -----+----- \--* LCL_VAR int V07 tmp4 New refCnts for V07: refCnt = 3, refCntWtd = 3 *** marking local variables in block BB07 (weight=0) STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? [000094] DAC--+----- * STORE_LCL_VAR ref V11 tmp8 [000093] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000092] H----+----- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 New refCnts for V11: refCnt = 1, refCntWtd = 0 Marking EH Var V11 as a register candidate. STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? [000096] --CXG+----- * CALL void System.Exception:.ctor():this [000095] -----+----- this in rcx \--* LCL_VAR ref V11 tmp8 New refCnts for V11: refCnt = 2, refCntWtd = 0 STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? [000098] --CXG+----- * CALL help void CORINFO_HELP_THROW [000097] -----+----- arg0 in rcx \--* LCL_VAR ref V11 tmp8 New refCnts for V11: refCnt = 3, refCntWtd = 0 *** marking local variables in block BB08 (weight=1) STMT00010 ( 0x043[E-] ... ??? ) [000032] -----+----- * RETURN void *** lvaComputeRefCounts -- implicit counts *** *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] ( 5, 5) [000041] ----------- * JTRUE void ( 3, 3) [000040] N------N-U- \--* NE int ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) ( 5, 4) [000102] DA--------- * STORE_LCL_VAR int V13 tmp10 ( 1, 1) [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) ( 5, 4) [000104] DA--------- * STORE_LCL_VAR int V14 tmp11 ( 1, 1) [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] ( 7, 7) [000067] ----------- * JTRUE void ( 5, 5) [000066] J------N--- \--* NE int ( 3, 3) [000064] ----------- +--* AND int ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 ( 19, 5) [000069] --CXG------ \--* CALL ind int ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 ( 26, 13) [000083] --CXG------ \--* CALL ind int ( 4, 4) [000075] ---XG------ calli tgt \--* IND long ( 2, 2) [000074] -------N--- \--* ADD long ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long ( 2, 2) [000076] -------N--- | \--* ADD long ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? ( 6, 7) [000091] ----------- * JTRUE void ( 4, 5) [000090] J------N--- \--* EQ int ( 2, 3) [000030] ----------- +--* CAST long <- int ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) ( 0, 0) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Set block order *************** In fgSetBlockOrder() The biggest BB has 11 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] N004 ( 5, 5) [000041] ----------- * JTRUE void N003 ( 3, 3) [000040] N------N-U- \--* NE int N001 ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 N002 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 ***** BB03 [0005] STMT00007 ( 0x02C[E-] ... 0x035 ) N002 ( 5, 4) [000102] DA--------- * STORE_LCL_VAR int V13 tmp10 N001 ( 1, 1) [000101] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00021 ( 0x02C[E-] ... ??? ) N002 ( 5, 4) [000104] DA--------- * STORE_LCL_VAR int V14 tmp11 N001 ( 1, 1) [000103] ----------- \--* LCL_VAR int V12 tmp9 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void N005 ( 5, 5) [000066] J------N--- \--* NE int N003 ( 3, 3) [000064] ----------- +--* AND int N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void N004 ( 4, 5) [000090] J------N--- \--* EQ int N002 ( 2, 3) [000030] ----------- +--* CAST long <- int N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 (7 out of 15) table: V00 loc0 [ long]: refCnt = 6, refCntWtd = 3.60 V12 tmp9 [ int]: refCnt = 5, refCntWtd = 3.50 V07 tmp4 [ int]: refCnt = 3, refCntWtd = 3 V13 tmp10 [ int]: refCnt = 1, refCntWtd = 1 V14 tmp11 [ int]: refCnt = 1, refCntWtd = 1 V05 tmp2 [ ref]: refCnt = 3, refCntWtd = 0 V11 tmp8 [ ref]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V00} + ByrefExposed* + GcHeap* BB02 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V05} + ByrefExposed* + GcHeap* BB03 USE(1)={V00 } DEF(3)={ V12 V13 V14} BB04 USE(2)={V00 V12 } + ByrefExposed + GcHeap DEF(1)={ V07} + ByrefExposed* + GcHeap* BB05 USE(2)={V00 V12 } + ByrefExposed + GcHeap DEF(1)={ V07} + ByrefExposed* + GcHeap* BB06 USE(1)={V07} DEF(0)={ } BB07 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V11} + ByrefExposed* + GcHeap* BB08 USE(0)={} DEF(0)={} ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={ } + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} BB03 IN (1)={V00 } + ByrefExposed + GcHeap OUT(2)={V00 V12} + ByrefExposed + GcHeap BB04 IN (2)={V00 V12 } + ByrefExposed + GcHeap OUT(1)={ V07} + ByrefExposed + GcHeap BB05 IN (2)={V00 V12 } + ByrefExposed + GcHeap OUT(1)={ V07} + ByrefExposed + GcHeap BB06 IN (1)={V07} + ByrefExposed + GcHeap OUT(0)={ } + ByrefExposed + GcHeap BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} BB08 IN (0)={} OUT(0)={} top level store removing stmt with no side effects removing useless STMT00021 ( 0x02C[E-] ... ??? ) N002 ( 5, 4) [000104] DA--------- * STORE_LCL_VAR int V14 tmp11 N001 ( 1, 1) [000103] ----------- \--* LCL_VAR int V12 tmp9 from BB03 top level store removing stmt with no side effects removing useless STMT00007 ( 0x02C[E-] ... 0x035 ) N002 ( 5, 4) [000102] DA--------- * STORE_LCL_VAR int V13 tmp10 N001 ( 1, 1) [000101] ----------- \--* LCL_VAR int V12 tmp9 from BB03 *************** In optRemoveRedundantZeroInits() Marking V00 as having an explicit init *************** In SsaBuilder::InsertPhiFunctions() Inserting phi functions: Added PHI definition for V07 at start of BB06. Inserting phi definition for ByrefExposed at start of BB06. *************** In SsaBuilder::RenameVariables() V00.1: defined in BB00 0 uses (local) V00.2: defined in BB01 5 uses (global) V05.1: defined in BB00 0 uses (local) V05.2: defined in BB02 2 uses (local) V07.1: defined in BB00 0 uses (local) V07.2: defined in BB05 1 uses (global), has phi uses V07.3: defined in BB04 1 uses (global), has phi uses V07.4: defined in BB06 1 uses (local) V11.1: defined in BB00 0 uses (local) V11.2: defined in BB07 2 uses (local) V12.1: defined in BB00 0 uses (local) V12.2: defined in BB03 2 uses (global) V13.1: defined in BB00 0 uses (local) V14.1: defined in BB00 0 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] N004 ( 5, 5) [000041] ----------- * JTRUE void N003 ( 3, 3) [000040] N------N-U- \--* NE int N001 ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 u:2 N002 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) SSA MEM: ByrefExposed, GcHeap = m:7 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void N005 ( 5, 5) [000066] J------N--- \--* NE int N003 ( 3, 3) [000064] ----------- +--* AND int N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) SSA MEM: ByrefExposed, GcHeap = m:4 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) SSA MEM: ByrefExposed, GcHeap = m:3 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} SSA MEM: ByrefExposed, GcHeap = phi(m:4, m:3) ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 N003 ( 0, 0) [000106] ----------- \--* PHI int N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void N004 ( 4, 5) [000090] J------N--- \--* EQ int N002 ( 2, 3) [000030] ----------- +--* CAST long <- int N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 SSA MEM: ByrefExposed, GcHeap = m:5 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) SSA MEM: ByrefExposed, GcHeap = m:6 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void SSA MEM: ByrefExposed, GcHeap = m:5 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully *************** 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: $100 Visiting BB01 The SSA definition for ByrefExposed (#1) at start of BB01 is $100 {InitVal($42)} The SSA definition for GcHeap (#1) at start of BB01 is $100 {InitVal($42)} ***** BB01, STMT00000(before) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' N001 [000100] CNS_INT(h) '"Running Main..."' => $140 {Hnd const: 0x4000000000423118 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000001] to VN: $101. N002 [000001] CALL => $VN.Void ***** BB01, STMT00000(after) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 --------- ***** BB01, STMT00002(before) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn N001 [000037] CNS_INT(h) 0x40000000004230c0 ftn => $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} Tree [000004] assigned VN to local var V00/2: $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} N002 [000004] STORE_LCL_VAR V00 loc0 d:2 => $VN.Void ***** BB01, STMT00002(after) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 --------- ***** BB01, STMT00012(before) N004 ( 5, 5) [000041] ----------- * JTRUE void N003 ( 3, 3) [000040] N------N-U- \--* NE int N001 ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 u:2 N002 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 N001 [000006] LCL_VAR V00 loc0 u:2 => $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} N002 [000039] CNS_INT 0 => $1c0 {LngCns 0} N003 [000040] NE => $43 {IntCns 1} N004 [000041] JTRUE => $VN.Void ***** BB01, STMT00012(after) N004 ( 5, 5) [000041] ----------- * JTRUE void $VN.Void N003 ( 3, 3) [000040] N------N-U- \--* NE int $43 N001 ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 $1c0 Visiting BB03 Reachable through pred BB01 The SSA definition for ByrefExposed (#2) at start of BB03 is $101 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB03 is $101 {MemOpaque:NotInLoop} ***** BB03, STMT00005(before) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 N001 [000012] CNS_INT 85 => $44 {IntCns 85} Tree [000014] assigned VN to local var V12/2: $44 {IntCns 85} N002 [000014] STORE_LCL_VAR V12 tmp9 d:2 => $VN.Void ***** BB03, STMT00005(after) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 --------- ***** BB03, STMT00018(before) N006 ( 7, 7) [000067] ----------- * JTRUE void N005 ( 5, 5) [000066] J------N--- \--* NE int N003 ( 3, 3) [000064] ----------- +--* AND int N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 N001 [000063] LCL_VAR V00 loc0 u:2 => $200 {$180, int <- long} N002 [000062] CNS_INT 2 => $46 {IntCns 2} N003 [000064] AND => $201 {AND($46, $200)} N004 [000065] CNS_INT 0 => $40 {IntCns 0} N005 [000066] NE => $202 {NE($201, $40)} N006 [000067] JTRUE => $VN.Void ***** BB03, STMT00018(after) N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 Visiting BB05 Reachable through pred BB03 The SSA definition for ByrefExposed (#2) at start of BB05 is $101 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB05 is $101 {MemOpaque:NotInLoop} ***** BB05, STMT00020(before) N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) N001 [000077] LCL_VAR V00 loc0 u:2 => $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} N002 [000078] CNS_INT 6 => $1c1 {LngCns 6} N003 [000076] ADD => $181 {Hnd const: 0x40000000004230C6 GTF_ICON_CONST_PTR} N004 [000081] IND => N005 [000084] LCL_VAR V12 tmp9 u:2 (last use) => $44 {IntCns 85} N006 [000072] LCL_VAR V00 loc0 u:2 (last use) => $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} N007 [000073] CNS_INT -2 => $1c2 {LngCns -2} N008 [000074] ADD => $182 {Hnd const: 0x40000000004230BE GTF_ICON_CONST_PTR} N009 [000075] IND => fgCurMemoryVN[GcHeap] assigned for CALL at [000083] to VN: $102. N010 [000083] CALL ind => $c1 {MemOpaque:NotInLoop} Tree [000082] assigned VN to local var V07/2: $c1 {MemOpaque:NotInLoop} N011 [000082] STORE_LCL_VAR V07 tmp4 d:2 => $VN.Void ***** BB05, STMT00020(after) N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int $c1 N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 Visiting BB04 Reachable through pred BB03 The SSA definition for ByrefExposed (#2) at start of BB04 is $101 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB04 is $101 {MemOpaque:NotInLoop} ***** BB04, STMT00019(before) N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) N001 [000070] LCL_VAR V12 tmp9 u:2 (last use) => $44 {IntCns 85} N002 [000071] LCL_VAR V00 loc0 u:2 (last use) => $180 {Hnd const: 0x40000000004230C0 GTF_ICON_FTN_ADDR} fgCurMemoryVN[GcHeap] assigned for CALL at [000069] to VN: $103. N003 [000069] CALL ind => $c2 {MemOpaque:NotInLoop} Tree [000068] assigned VN to local var V07/3: $c2 {MemOpaque:NotInLoop} N004 [000068] STORE_LCL_VAR V07 tmp4 d:3 => $VN.Void ***** BB04, STMT00019(after) N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 Visiting BB06 Reachable through pred BB04 SSA PHI definition: set VN of local 7/4 to $280 {PhiDef($7, $4, $203)} . Building phi application: $49 = SSA# 4. Building phi application: $48 = SSA# 3. Building phi application: $2c0 = phi($48, $49). The SSA definition for GcHeap (#5) at start of BB06 is $2c1 {PhiMemoryDef($183, $2c0)} ***** BB06, STMT00022(before) N005 ( 6, 7) [000091] ----------- * JTRUE void N004 ( 4, 5) [000090] J------N--- \--* EQ int N002 ( 2, 3) [000030] ----------- +--* CAST long <- int N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 N001 [000058] LCL_VAR V07 tmp4 u:4 (last use) => $280 {PhiDef($7, $4, $203)} N002 [000030] CAST => $300 {$280, long <- int} N003 [000028] CNS_INT 85 => $1c3 {LngCns 85} N004 [000090] EQ => $204 {EQ($300, $1c3)} N005 [000091] JTRUE => $VN.Void ***** BB06, STMT00022(after) N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 Visiting BB08 Reachable through pred BB06 The SSA definition for ByrefExposed (#5) at start of BB08 is $2c1 {PhiMemoryDef($183, $2c0)} The SSA definition for GcHeap (#5) at start of BB08 is $2c1 {PhiMemoryDef($183, $2c0)} ***** BB08, STMT00010(before) N001 ( 0, 0) [000032] ----------- * RETURN void N001 [000032] RETURN => $VN.Void ***** BB08, STMT00010(after) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void Visiting BB07 Reachable through pred BB06 The SSA definition for ByrefExposed (#5) at start of BB07 is $2c1 {PhiMemoryDef($183, $2c0)} The SSA definition for GcHeap (#5) at start of BB07 is $2c1 {PhiMemoryDef($183, $2c0)} ***** BB07, STMT00023(before) N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 N001 [000092] CNS_INT(h) 0x4000000000421f70 => $184 {Hnd const: 0x4000000000421F70 GTF_ICON_CLASS_HDL} N002 [000093] CALL help => $380 {JitNew($184, $340)} Tree [000094] assigned VN to local var V11/2: $380 {JitNew($184, $340)} N003 [000094] STORE_LCL_VAR V11 tmp8 d:2 => $VN.Void ***** BB07, STMT00023(after) N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 --------- ***** BB07, STMT00024(before) N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 N001 [000095] LCL_VAR V11 tmp8 u:2 => $380 {JitNew($184, $340)} fgCurMemoryVN[GcHeap] assigned for CALL at [000096] to VN: $104. N002 [000096] CALL => $VN.Void ***** BB07, STMT00024(after) N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 --------- ***** BB07, STMT00025(before) N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) N001 [000097] LCL_VAR V11 tmp8 u:2 (last use) => $380 {JitNew($184, $340)} N002 [000098] CALL help => $382 {norm=$VN.Void, exc=$381 {HelperMultipleExc()}} ***** BB07, STMT00025(after) N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 Visiting BB02 Unreachable through pred BB01 BB02 was proven unreachable The SSA definition for ByrefExposed (#2) at start of BB02 is $101 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB02 is $101 {MemOpaque:NotInLoop} ***** BB02, STMT00013(before) N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 N001 [000042] CNS_INT(h) 0x4000000000421f70 => $184 {Hnd const: 0x4000000000421F70 GTF_ICON_CLASS_HDL} N002 [000043] CALL help => $383 {JitNew($184, $341)} Tree [000044] assigned VN to local var V05/2: $383 {JitNew($184, $341)} N003 [000044] STORE_LCL_VAR V05 tmp2 d:2 => $VN.Void ***** BB02, STMT00013(after) N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 --------- ***** BB02, STMT00014(before) N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 N001 [000045] LCL_VAR V05 tmp2 u:2 => $383 {JitNew($184, $341)} fgCurMemoryVN[GcHeap] assigned for CALL at [000046] to VN: $105. N002 [000046] CALL => $VN.Void ***** BB02, STMT00014(after) N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 --------- ***** BB02, STMT00015(before) N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) N001 [000047] LCL_VAR V05 tmp2 u:2 (last use) => $383 {JitNew($184, $341)} N002 [000048] CALL help => $382 {norm=$VN.Void, exc=$381 {HelperMultipleExc()}} ***** BB02, STMT00015(after) N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03,BB02 (cond), preds={} succs={BB02,BB03} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ***** BB01 [0000] STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] N004 ( 5, 5) [000041] ----------- * JTRUE void $VN.Void N003 ( 3, 3) [000040] N------N-U- \--* NE int $43 N001 ( 1, 1) [000006] ----------- +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000039] ----------- \--* CNS_INT long 0 $1c0 SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB02 [0004] [010..011) (throw), preds={BB01} succs={} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 SSA MEM: ByrefExposed, GcHeap = m:7 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 SSA MEM: ByrefExposed, GcHeap = m:4 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int $c1 N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 SSA MEM: ByrefExposed, GcHeap = m:3 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} SSA MEM: ByrefExposed, GcHeap = phi(m:4, m:3) ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 SSA MEM: ByrefExposed, GcHeap = m:5 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 SSA MEM: ByrefExposed, GcHeap = m:6 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void SSA MEM: ByrefExposed, GcHeap = m:5 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully *************** 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 [000004]: {} +{V00} => {V00} Copy Assertion for BB03 curSsaName stack: { [000004]:V00/2 } Live vars after [000014]: {V00} +{V12} => {V00 V12} Copy Assertion for BB05 curSsaName stack: { [000004]:V00/2 [000014]:V12/2 } Live vars after [000084]: {V00 V12} -{V12} => {V00} Live vars after [000072]: {V00} -{V00} => {} Live vars after [000082]: {} +{V07} => {V07} Copy Assertion for BB04 curSsaName stack: { [000004]:V00/2 [000014]:V12/2 } Live vars after [000070]: {V00 V12} -{V12} => {V00} Live vars after [000071]: {V00} -{V00} => {} Live vars after [000068]: {} +{V07} => {V07} Copy Assertion for BB06 curSsaName stack: { [000004]:V00/2 [000014]:V12/2 } Live vars after [000058]: {V07} -{V07} => {} Copy Assertion for BB08 curSsaName stack: { [000004]:V00/2 [000014]:V12/2 [000107]:V07/NA } Copy Assertion for BB07 curSsaName stack: { [000004]:V00/2 [000014]:V12/2 [000107]:V07/NA } Live vars after [000094]: {} +{V11} => {V11} Live vars after [000097]: {V11} -{V11} => {} Copy Assertion for BB02 curSsaName stack: { [000004]:V00/2 } Live vars after [000044]: {} +{V05} => {V05} Live vars after [000047]: {V05} -{V05} => {} *************** 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..01B)-> BB03,BB02 ( cond ) i hascall gcsafe BB02 [0004] 1 BB01 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- optRedundantRelop in BB06; jump tree is N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ... checking previous tree N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 -- prev tree is a phi --- Trying RBO in BB06 --- Relop [000090] BB06 value unknown, trying inference No usable PhiDef VNs optRedundantRelop in BB03; jump tree is N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ... checking previous tree N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 -- prev tree VN is not related --- Trying RBO in BB03 --- Relop [000066] BB03 value unknown, trying inference BB03 has side effects; no threading -- no, jump tree cond is constant --- Trying RBO in BB01 --- Relop [000040] BB01 has known value true Redundant branch opt in BB01: removing useless STMT00012 ( INL03 @ 0x000[E-] ... ??? ) <- INLRT @ 0x010[E-] N004 ( 5, 5) [000041] ----------- * JTRUE void $VN.Void N003 ( 3, 3) [000040] ----------- \--* CNS_INT int 1 from BB01 Conditional folded at BB01 BB01 becomes a BBJ_ALWAYS to BB03 Compiler::optRedundantBranch removed tree: N004 ( 5, 5) [000041] ----------- * JTRUE void $VN.Void N003 ( 3, 3) [000040] ----------- \--* CNS_INT int 1 ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03 (always) i hascall gcsafe BB02 [0004] 0 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Redundant branch opts Trees after Redundant branch opts ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01B)-> BB03 (always) i hascall gcsafe BB02 [0004] 0 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03 (always), preds={} succs={BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ------------ BB02 [0004] [010..011) (throw), preds={} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int $c1 N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Optimize Valnum CSEs Using standard CSE heuristic CONST CSE is disabled *************** 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..01B)-> BB03 (always) i hascall gcsafe BB02 [0004] 0 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03 (always), preds={} succs={BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ------------ BB02 [0004] [010..011) (throw), preds={} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000070] ----------- arg0 in rcx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int $c1 N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] ---XG------ gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000084] ----------- arg1 in rdx \--* LCL_VAR int V12 tmp9 u:2 (last use) $44 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Assertion prop After VN-based fold of [000070]: STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 ReMorphing args for 69.CALL: Args for [000069].CALL after fgMorphArgs: CallArg[[000110].CNS_INT struct (By value), 1 reg: rcx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 optVNAssertionPropCurStmt morphed tree: N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 VN based non-null prop in BB05: N004 ( 4, 4) [000081] ---XG------ * IND long After VN-based fold of [000084]: STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXG------ \--* CALL ind int $c1 N009 ( 4, 4) [000075] ---XG------ calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 VN based non-null prop in BB05: N009 ( 4, 4) [000075] ---XG------ * IND long ReMorphing args for 83.CALL: Args for [000083].CALL after fgMorphArgs: CallArg[[000081].IND long (By value), 1 reg: rcx, byteAlignment=8, isLate, processed, wellKnown[InstParam]] CallArg[[000111].CNS_INT struct (By value), 1 reg: rdx, byteAlignment=8, isLate, processed] OutgoingArgsStackSize is 32 optVNAssertionPropCurStmt morphed tree: N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXGO----- \--* CALL ind int $c1 N009 ( 4, 4) [000075] n---GO----- calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 *************** 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..01B)-> BB03 (always) i hascall gcsafe BB02 [0004] 0 0 [010..011) (throw ) i rare hascall gcsafe newobj BB03 [0005] 1 BB01 1 [010..043)-> BB05,BB04 ( cond ) i BB04 [0013] 1 BB03 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB03 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..01B) -> BB03 (always), preds={} succs={BB03} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ------------ BB02 [0004] [010..011) (throw), preds={} succs={} ***** BB02 [0004] STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB02 [0004] STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 ***** BB02 [0004] STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 ------------ BB03 [0005] [010..043) -> BB05,BB04 (cond), preds={BB01} succs={BB04,BB05} ***** BB03 [0005] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB03 [0005] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB03} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXGO----- \--* CALL ind int $c1 N009 ( 4, 4) [000075] n---GO----- calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE VN based intrinsic expansion *************** Finishing PHASE VN based intrinsic expansion [no changes] *************** Starting PHASE Optimize index checks *************** Finishing PHASE Optimize index checks [no changes] *************** Starting PHASE VN-based dead store removal Considering [000004] for removal... -- no; 'explicit init' Considering [000044] for removal... -- no; last def not in the same block Considering [000082] for removal... -- no; last def not in the same block Considering [000068] for removal... -- no; last def not in the same block Considering [000107] for removal... -- no; last def not in the same block Considering [000094] for removal... -- no; last def not in the same block Considering [000014] for removal... -- no; last def not in the same block *************** Finishing PHASE VN-based dead store removal [no changes] *************** Starting PHASE Update flow graph opt pass fgRemoveBlock BB02, unreachable=true Removing unreachable BB02 removing useless STMT00013 ( INL03 @ 0x004[E-] ... ??? ) <- INLRT @ 0x010[E-] N003 ( 19, 13) [000044] DAC-------- * STORE_LCL_VAR ref V05 tmp2 d:2 $VN.Void N002 ( 15, 10) [000043] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $383 N001 ( 1, 4) [000042] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 from BB02 removing useless STMT00014 ( INL03 @ ??? ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000046] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000045] ----------- this in rcx \--* LCL_VAR ref V05 tmp2 u:2 $383 from BB02 removing useless STMT00015 ( INL03 @ 0x009[--] ... ??? ) <- INLRT @ 0x010[E-] N002 ( 17, 8) [000048] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000047] ----------- arg0 in rcx \--* LCL_VAR ref V05 tmp2 u:2 (last use) $383 from BB02 BB02 becomes empty Compacting BB03 into BB01: *************** In fgDebugCheckBBlist *************** Finishing PHASE Update flow graph opt pass Trees after Update flow graph opt pass ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ***** BB01 [0000] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB01 [0000] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXGO----- \--* CALL ind int $c1 N009 ( 4, 4) [000075] n---GO----- calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Compute edge weights (2, false) -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (2, false) [no changes] *************** Starting PHASE Stress gtSplitTree *************** Finishing PHASE Stress gtSplitTree [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 casts *************** Finishing PHASE Expand casts [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, 0 BBJ_RETURN cases in 1 passes *************** Finishing PHASE Optimize bools Trees after Optimize bools ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ***** BB01 [0000] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB01 [0000] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXGO----- \--* CALL ind int $c1 N009 ( 4, 4) [000075] n---GO----- calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 ------------ BB06 [0011] [000..043) -> BB08,BB07 (cond), preds={BB04,BB05} succs={BB07,BB08} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* EQ int $204 N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE If conversion *************** Finishing PHASE If conversion [no changes] *************** Starting PHASE Optimize 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..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB08,BB07 ( cond ) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj BB08 [0018] 1 BB06 1 [000..044) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- Decided to reverse conditional branch at block BB06 branch to BB08 since it falls into a rarely run block Relocated rarely run block BB07 by reversing conditional jump at BB06 Rethreading STMT00022 Relocated block [BB07..BB07] inserted after BB08 at the end of method After this change in fgReorderBlocks the BB graph is: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i BB08 [0018] 1 BB06 1 [000..044) (return) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- *************** 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..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i BB08 [0018] 1 BB06 1 [000..044) (return) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout Trees after Optimize layout ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i BB08 [0018] 1 BB06 1 [000..044) (return) i BB07 [0017] 1 BB06 0 [000..000) (throw ) i rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ***** BB01 [0000] STMT00000 ( 0x000[E-] ... 0x00F ) N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000100] H---------- arg0 in rcx \--* CNS_INT(h) ref '"Running Main..."' $140 ***** BB01 [0000] STMT00002 ( 0x00A[E-] ... ??? ) N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void N001 ( 1, 4) [000037] H---------- \--* CNS_INT(h) long 0x40000000004230c0 ftn $180 ***** BB01 [0000] STMT00005 ( 0x023[E-] ... 0x027 ) N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void N001 ( 1, 1) [000012] ----------- \--* CNS_INT int 85 $44 ***** BB01 [0000] STMT00018 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void N005 ( 5, 5) [000066] J------N--- \--* NE int $202 N003 ( 3, 3) [000064] ----------- +--* AND int $201 N001 ( 1, 1) [000063] ----------- | +--* LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- | \--* CNS_INT int 2 $46 N004 ( 1, 1) [000065] ----------- \--* CNS_INT int 0 $40 ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB04 [0013] STMT00019 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void N003 ( 19, 5) [000069] --CXG------ \--* CALL ind int $c2 N002 ( 1, 1) [000071] ----------- calli tgt \--* LCL_VAR long V00 loc0 u:2 (last use) $180 N001 ( 1, 1) [000110] ----------- arg0 in rcx \--* CNS_INT int 85 $44 ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ***** BB05 [0014] STMT00020 ( INL04 @ 0x007[E-] ... ??? ) <- INLRT @ 0x02C[E-] N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void N010 ( 26, 13) [000083] --CXGO----- \--* CALL ind int $c1 N009 ( 4, 4) [000075] n---GO----- calli tgt \--* IND long N008 ( 2, 2) [000074] -------N--- \--* ADD long $182 N006 ( 1, 1) [000072] ----------- +--* LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- \--* CNS_INT long -2 $1c2 N004 ( 4, 4) [000081] n---GO----- gctx in rcx +--* IND long N003 ( 2, 2) [000076] -------N--- | \--* ADD long $181 N001 ( 1, 1) [000077] ----------- | +--* LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- | \--* CNS_INT long 6 $1c1 N005 ( 1, 1) [000111] ----------- arg1 in rdx \--* CNS_INT int 85 $44 ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} ***** BB06 [0011] STMT00026 ( ??? ... ??? ) N004 ( 0, 0) [000107] DA--------- * STORE_LCL_VAR int V07 tmp4 d:4 $VN.Void N003 ( 0, 0) [000106] ----------- \--* PHI int $280 N001 ( 0, 0) [000109] ----------- pred BB04 +--* PHI_ARG int V07 tmp4 u:3 $c2 N002 ( 0, 0) [000108] ----------- pred BB05 \--* PHI_ARG int V07 tmp4 u:2 $c1 ***** BB06 [0011] STMT00022 ( INL05 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void N004 ( 4, 5) [000090] J------N--- \--* NE int N002 ( 2, 3) [000030] ----------- +--* CAST long <- int $300 N001 ( 1, 1) [000058] ----------- | \--* LCL_VAR int V07 tmp4 u:4 (last use) $280 N003 ( 1, 1) [000028] ----------- \--* CNS_INT long 85 $1c3 ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} ***** BB08 [0018] STMT00010 ( 0x043[E-] ... ??? ) N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} ***** BB07 [0017] STMT00023 ( INL05 @ 0x004[E-] ... ??? ) <- INLRT @ ??? N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N002 ( 15, 10) [000093] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $380 N001 ( 1, 4) [000092] H---------- arg0 in rcx \--* CNS_INT(h) long 0x4000000000421f70 $184 ***** BB07 [0017] STMT00024 ( INL05 @ ??? ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000095] ----------- this in rcx \--* LCL_VAR ref V11 tmp8 u:2 $380 ***** BB07 [0017] STMT00025 ( INL05 @ 0x009[--] ... ??? ) <- INLRT @ ??? N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 N001 ( 3, 2) [000097] ----------- arg0 in rcx \--* LCL_VAR ref V11 tmp8 u:2 (last use) $380 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Recognize Switch *************** Finishing PHASE Recognize Switch [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 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' $140 /--* t100 ref arg0 in rcx N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn $180 /--* t37 long N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] N001 ( 1, 1) [000012] ----------- t12 = CNS_INT int 85 $44 /--* t12 int N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] ----------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N003 ( 3, 3) [000064] ----------- t64 = * AND int $201 N004 ( 1, 1) [000065] ----------- t65 = CNS_INT int 0 $40 /--* t64 int +--* t65 int N005 ( 5, 5) [000066] J------N--- t66 = * NE int $202 /--* t66 int N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t110 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 /--* t69 int N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 N002 ( 1, 1) [000078] ----------- t78 = CNS_INT long 6 $1c1 /--* t77 long +--* t78 long N003 ( 2, 2) [000076] -------N--- t76 = * ADD long $181 /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 N007 ( 1, 1) [000073] ----------- t73 = CNS_INT long -2 $1c2 /--* t72 long +--* t73 long N008 ( 2, 2) [000074] -------N--- t74 = * ADD long $182 /--* t74 long N009 ( 4, 4) [000075] n---GO----- t75 = * IND long /--* t81 long gctx in rcx +--* t111 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 /--* t83 int N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] ----------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] J------N--- t90 = * NE int /--* t90 int N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] N001 ( 0, 0) [000032] ----------- RETURN void $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 /--* t93 ref N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N001 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 $380 /--* t95 ref this in rcx N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? N001 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 (last use) $380 /--* t97 ref arg0 in rcx N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Lowering nodeinfo lowering call (before): N001 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' $140 /--* t100 ref arg0 in rcx N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000100] H---------- * CNS_INT(h) ref '"Running Main..."' $140 new node is : [000122] ----------- * PUTARG_REG ref REG rcx Bumping outgoing arg space size from 0 to 32 for [000001] lowering call (after): N001 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' $140 /--* t100 ref [000122] ----------- t122 = * PUTARG_REG ref REG rcx /--* t122 ref arg0 in rcx N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering store lcl var/field (before): N001 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn $180 /--* t37 long N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void lowering store lcl var/field (after): N001 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn $180 /--* t37 long N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void lowering store lcl var/field (before): N001 ( 1, 1) [000012] ----------- t12 = CNS_INT int 85 $44 /--* t12 int N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void lowering store lcl var/field (after): N001 ( 1, 1) [000012] -c--------- t12 = CNS_INT int 85 $44 /--* t12 int N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void Lowering JTRUE: N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N005 ( 5, 5) [000066] J------N--- t66 = * TEST_NE int $202 /--* t66 int N006 ( 7, 7) [000067] ----------- * JTRUE void $VN.Void Lowering condition: N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N005 ( 5, 5) [000066] J------N--- t66 = * TEST_NE int $202 Lowering JTRUE Result: N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N005 ( 5, 5) [000066] -------N--- * TEST void N006 ( 7, 7) [000067] ----------- JCC void cond=UNE lowering call (before): N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t110 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 args: ====== late: ====== lowering arg : N001 ( 1, 1) [000110] ----------- * CNS_INT int 85 $44 new node is : [000123] ----------- * PUTARG_REG int REG rcx lowering call (after): N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 /--* t110 int [000123] ----------- t123 = * PUTARG_REG int REG rcx N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 lowering store lcl var/field (before): N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 /--* t110 int [000123] ----------- t123 = * PUTARG_REG int REG rcx N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 /--* t69 int N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void lowering store lcl var/field (after): N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 /--* t110 int [000123] ----------- t123 = * PUTARG_REG int REG rcx N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 /--* t69 int N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void Addressing mode: Base N001 ( 1, 1) [000077] ----------- * LCL_VAR long V00 loc0 u:2 $180 + 6 Removing unused node: N002 ( 1, 1) [000078] -c--------- * CNS_INT long 6 $1c1 New addressing mode node: N003 ( 2, 2) [000076] ----------- * LEA(b+6) long Addressing mode: Base N006 ( 1, 1) [000072] ----------- * LCL_VAR long V00 loc0 u:2 (last use) $180 + -2 Removing unused node: N007 ( 1, 1) [000073] -c--------- * CNS_INT long -2 $1c2 New addressing mode node: N008 ( 2, 2) [000074] ----------- * LEA(b+-2) long lowering call (before): N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] n---GO----- t75 = * IND long /--* t81 long gctx in rcx +--* t111 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 args: ====== late: ====== lowering arg : N004 ( 4, 4) [000081] n---GO----- * IND long new node is : [000124] ----GO----- * PUTARG_REG long REG rcx lowering arg : N005 ( 1, 1) [000111] ----------- * CNS_INT int 85 $44 new node is : [000125] ----------- * PUTARG_REG int REG rdx lowering call (after): N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long /--* t81 long [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 /--* t111 int [000125] ----------- t125 = * PUTARG_REG int REG rdx N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 lowering store lcl var/field (before): N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long /--* t81 long [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 /--* t111 int [000125] ----------- t125 = * PUTARG_REG int REG rdx N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 /--* t83 int N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void lowering store lcl var/field (after): N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long /--* t81 long [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 /--* t111 int [000125] ----------- t125 = * PUTARG_REG int REG rdx N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 /--* t83 int N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void Lowering JTRUE: N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] J------N--- t90 = * NE int /--* t90 int N005 ( 6, 7) [000091] ----------- * JTRUE void $VN.Void Lowering condition: N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] J------N--- t90 = * NE int Lowering JTRUE Result: N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] -------N--- * CMP void N005 ( 6, 7) [000091] ----------- JCC void cond=UNE lowering GT_RETURN N001 ( 0, 0) [000032] ----------- * RETURN void $VN.Void ============ lowering call (before): N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 args: ====== late: ====== lowering arg : N001 ( 1, 4) [000092] H---------- * CNS_INT(h) long 0x4000000000421f70 $184 new node is : [000126] ----------- * PUTARG_REG long REG rcx lowering call (after): N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 lowering store lcl var/field (before): N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 /--* t93 ref N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void lowering store lcl var/field (after): N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 /--* t93 ref N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void lowering call (before): N001 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 $380 /--* t95 ref this in rcx N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void args: ====== late: ====== lowering arg : N001 ( 3, 2) [000095] ----------- * LCL_VAR ref V11 tmp8 u:2 $380 new node is : [000127] ----------- * PUTARG_REG ref REG rcx lowering call (after): N001 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 $380 /--* t95 ref [000127] ----------- t127 = * PUTARG_REG ref REG rcx /--* t127 ref this in rcx N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void lowering call (before): N001 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 (last use) $380 /--* t97 ref arg0 in rcx N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 args: ====== late: ====== lowering arg : N001 ( 3, 2) [000097] ----------- * LCL_VAR ref V11 tmp8 u:2 (last use) $380 new node is : [000128] ----------- * PUTARG_REG ref REG rcx lowering call (after): N001 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 (last use) $380 /--* t97 ref [000128] ----------- t128 = * PUTARG_REG ref REG rcx /--* t128 ref arg0 in rcx N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 Lower has completed modifying nodes. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' $140 /--* t100 ref [000122] ----------- t122 = * PUTARG_REG ref REG rcx /--* t122 ref arg0 in rcx N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn $180 /--* t37 long N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] N001 ( 1, 1) [000012] -c--------- t12 = CNS_INT int 85 $44 /--* t12 int N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 $VN.Void [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N005 ( 5, 5) [000066] -------N--- * TEST void N006 ( 7, 7) [000067] ----------- JCC void cond=UNE ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 /--* t110 int [000123] ----------- t123 = * PUTARG_REG int REG rcx N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 /--* t69 int N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long /--* t81 long [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 /--* t111 int [000125] ----------- t125 = * PUTARG_REG int REG rdx N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 /--* t83 int N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] -------N--- * CMP void N005 ( 6, 7) [000091] ----------- JCC void cond=UNE ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] N001 ( 0, 0) [000032] ----------- RETURN void $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 /--* t93 ref N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N001 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 $380 /--* t95 ref [000127] ----------- t127 = * PUTARG_REG ref REG rcx /--* t127 ref this in rcx N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? N001 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 (last use) $380 /--* t97 ref [000128] ----------- t128 = * PUTARG_REG ref REG rcx /--* t128 ref arg0 in rcx N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V12: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 2.40 New refCnts for V07: refCnt = 1, refCntWtd = 0.80 New refCnts for V00: refCnt = 4, refCntWtd = 2.50 New refCnts for V00: refCnt = 5, refCntWtd = 2.60 New refCnts for V07: refCnt = 2, refCntWtd = 1 New refCnts for V07: refCnt = 3, refCntWtd = 3 New refCnts for V11: refCnt = 1, refCntWtd = 0 New refCnts for V11: refCnt = 2, refCntWtd = 0 New refCnts for V11: refCnt = 3, refCntWtd = 0 *** lvaComputeRefCounts -- implicit counts *** *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 loc0 long single-def ; V01 loc1 int ; V02 loc2 struct ld-addr-op ; V03 OutArgs struct <32> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 struct "impAppendStmt" ; V05 tmp2 ref class-hnd exact single-def "NewObj constructor temp" ; V06 tmp3 struct "Inlining Arg" ; V07 tmp4 int "calli" ; V08 tmp5 int ; V09 tmp6 long "Inlining Arg" ; V10 tmp7 long "Inlining Arg" ; V11 tmp8 ref class-hnd exact single-def "NewObj constructor temp" ; V12 tmp9 int single-def "field V02.Field (fldOffset=0x0)" P-INDEP ; V13 tmp10 int single-def "field V04.Field (fldOffset=0x0)" P-INDEP ; V14 tmp11 int single-def "field V06.Field (fldOffset=0x0)" P-INDEP In fgLocalVarLivenessInit Local V03 should not be enregistered because: struct size does not match reg size Tracked variable (4 out of 15) table: V07 tmp4 [ int]: refCnt = 3, refCntWtd = 3 V00 loc0 [ long]: refCnt = 5, refCntWtd = 2.60 V12 tmp9 [ int]: refCnt = 1, refCntWtd = 1 V11 tmp8 [ ref]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={ } + ByrefExposed + GcHeap DEF(2)={V00 V12} + ByrefExposed* + GcHeap* BB04 USE(1)={ V00} + ByrefExposed + GcHeap DEF(1)={V07 } + ByrefExposed* + GcHeap* BB05 USE(1)={ V00} + ByrefExposed + GcHeap DEF(1)={V07 } + ByrefExposed* + GcHeap* BB06 USE(1)={V07} DEF(0)={ } BB08 USE(0)={} DEF(0)={} BB07 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V11} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={ } + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB04 IN (1)={ V00} + ByrefExposed + GcHeap OUT(1)={V07 } + ByrefExposed + GcHeap BB05 IN (1)={ V00} + ByrefExposed + GcHeap OUT(1)={V07 } + ByrefExposed + GcHeap BB06 IN (1)={V07} + ByrefExposed + GcHeap OUT(0)={ } + ByrefExposed + GcHeap BB08 IN (0)={} OUT(0)={} BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} Removing dead local store: N002 ( 1, 3) [000014] DA--------- * STORE_LCL_VAR int V12 tmp9 d:2 (last use) $VN.Void Removing dead node: N001 ( 1, 1) [000012] ----------- * CNS_INT int 85 $44 *************** 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgRemoveDeadBlocks() Removing unreachable blocks for fgRemoveDeadBlocks iteration #1 *************** 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 V00: refCnt = 3, refCntWtd = 2.40 New refCnts for V07: refCnt = 1, refCntWtd = 0.80 New refCnts for V00: refCnt = 4, refCntWtd = 2.50 New refCnts for V00: refCnt = 5, refCntWtd = 2.60 New refCnts for V07: refCnt = 2, refCntWtd = 1 New refCnts for V07: refCnt = 3, refCntWtd = 3 New refCnts for V11: refCnt = 1, refCntWtd = 0 New refCnts for V11: refCnt = 2, refCntWtd = 0 New refCnts for V11: refCnt = 3, refCntWtd = 0 *** lvaComputeRefCounts -- implicit counts *** *************** 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' $140 /--* t100 ref [000122] ----------- t122 = * PUTARG_REG ref REG rcx /--* t122 ref arg0 in rcx N002 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn $180 /--* t37 long N002 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 $VN.Void [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 $200 N002 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 $46 /--* t63 int +--* t62 int N005 ( 5, 5) [000066] -------N--- * TEST void N006 ( 7, 7) [000067] ----------- JCC void cond=UNE ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 $44 /--* t110 int [000123] ----------- t123 = * PUTARG_REG int REG rcx N002 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N003 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int $c2 /--* t69 int N004 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 $VN.Void ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 $180 /--* t77 long N003 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long /--* t76 long N004 ( 4, 4) [000081] n---GO----- t81 = * IND long /--* t81 long [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N005 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 $44 /--* t111 int [000125] ----------- t125 = * PUTARG_REG int REG rdx N006 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 (last use) $180 /--* t72 long N008 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long /--* t74 long N009 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N010 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int $c1 /--* t83 int N011 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 $VN.Void ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? N001 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 (last use) $280 /--* t58 int N002 ( 2, 3) [000030] ----------- t30 = * CAST long <- int $300 N003 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 $1c3 /--* t30 long +--* t28 long N004 ( 4, 5) [000090] -------N--- * CMP void N005 ( 6, 7) [000091] ----------- JCC void cond=UNE ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] N001 ( 0, 0) [000032] ----------- RETURN void $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? N001 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 $184 /--* t92 long [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N002 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST $380 /--* t93 ref N003 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 $VN.Void N001 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 $380 /--* t95 ref [000127] ----------- t127 = * PUTARG_REG ref REG rcx /--* t127 ref this in rcx N002 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? N001 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 (last use) $380 /--* t97 ref [000128] ----------- t128 = * PUTARG_REG ref REG rcx /--* t128 ref arg0 in rcx N002 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW $382 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Calculate stack level slots *************** Finishing PHASE Calculate stack level slots [no changes] *************** Starting PHASE Linear scan register alloc Clearing modified regs. buildIntervals ======== ----------------- LIVENESS: ----------------- BB01 use: {} def: {V00 V12} in: {} out: {V00} BB04 use: {V00} def: {V07} in: {V00} out: {V07} BB05 use: {V00} def: {V07} in: {V00} out: {V07} BB06 use: {V07} def: {} in: {V07} out: {} BB08 use: {} def: {} in: {} out: {} BB07 use: {} def: {V11} in: {} out: {} Interval 0: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 0: (V00) long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 1: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 1: (V07) int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: (V11) ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] FP callee save candidate vars: None floatVarCount = 0; hasLoops = false, singleExit = true TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB01 Succ block: BB04, Criteria: weight, Worklist: [BB04 ] Succ block: BB05, Criteria: bbNum, Worklist: [BB04 BB05 ] Current block: BB04 Succ block: BB06, Criteria: weight, Worklist: [BB05 BB06 ] Current block: BB05 Current block: BB06 Succ block: BB08, Criteria: bbNum, Worklist: [BB08 ] Succ block: BB07, Criteria: weight, Worklist: [BB08 BB07 ] Current block: BB08 Current block: BB07 Final LSRA Block Sequence: BB01 ( 1 ) BB04 ( 0.40) BB05 ( 0.10) BB06 ( 1 ) BB08 ( 1 ) BB07 ( 0 ) BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. t100 = CNS_INT(h) '"Running Main..."' N000. t122 = PUTARG_REG; t100 N002. CALL ; t122 N000. IL_OFFSET INLRT @ 0x00A[E-] N001. t37 = CNS_INT(h) 0x40000000004230c0 ftn N002. V00(t4); t37 N000. IL_OFFSET INLRT @ 0x023[E-] N000. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001. V00(t63) N002. CNS_INT 2 N005. TEST ; t63 N006. JCC cond=UNE BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== N000. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001. t110 = CNS_INT 85 N000. t123 = PUTARG_REG; t110 N002. V00(t71*) N003. t69 = CALL ind ; t123,t71* N004. V07(t68); t69 BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== N000. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N001. V00(t77) N003. t76 = LEA(b+6) ; t77 N004. t81 = IND ; t76 N000. t124 = PUTARG_REG; t81 N005. t111 = CNS_INT 85 N000. t125 = PUTARG_REG; t111 N006. V00(t72*) N008. t74 = LEA(b+-2); t72* N009. t75 = IND ; t74 N010. t83 = CALL ind ; t124,t125,t75 N011. V07(t82); t83 BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} ===== N000. IL_OFFSET INL05 @ 0x000[E-] <- INLRT @ ??? N001. V07(t58*) N002. t30 = CAST ; t58* N003. CNS_INT 85 N004. CMP ; t30 N005. JCC cond=UNE BB08 [0018] [000..044) (return), preds={BB06} succs={} ===== N000. IL_OFFSET INLRT @ 0x043[E-] N001. RETURN BB07 [0017] [000..000) (throw), preds={BB06} succs={} ===== N000. IL_OFFSET INL05 @ 0x004[E-] <- INLRT @ ??? N001. t92 = CNS_INT(h) 0x4000000000421f70 N000. t126 = PUTARG_REG; t92 N002. t93 = CALL help; t126 N003. V11(t94); t93 N001. V11(t95) N000. t127 = PUTARG_REG; t95 N002. CALL ; t127 N000. IL_OFFSET INL05 @ 0x009[--] <- INLRT @ ??? N001. V11(t97*) N000. t128 = PUTARG_REG; t97* N002. CALL help; t128 buildIntervals second part ======== NEW BLOCK BB01 DefList: { } N003 (???,???) [000112] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N005 ( 1, 4) [000100] H---------- * CNS_INT(h) ref '"Running Main..."' REG NA $140 Interval 3: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00> DefList: { N005.t100. CNS_INT } N007 (???,???) [000122] ----------- * PUTARG_REG ref REG rcx BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> Interval 4: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB01 regmask=[rcx] minReg=1 wt=100.00> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> DefList: { N007.t122. PUTARG_REG } N009 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rax] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rdx] minReg=1 wt=100.00> BB01 regmask=[r8] minReg=1 wt=100.00> BB01 regmask=[r9] minReg=1 wt=100.00> BB01 regmask=[r10] minReg=1 wt=100.00> BB01 regmask=[r11] minReg=1 wt=100.00> DefList: { } N011 (???,???) [000113] ----------- * IL_OFFSET void INLRT @ 0x00A[E-] REG NA DefList: { } N013 ( 1, 4) [000037] H---------- * CNS_INT(h) long 0x40000000004230c0 ftn REG NA $180 Interval 5: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00> DefList: { N013.t37. CNS_INT } N015 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 NA REG NA $VN.Void BB01 regmask=[allInt] minReg=1 last wt=100.00> Assigning related to STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=260.00> DefList: { } N017 (???,???) [000114] ----------- * IL_OFFSET void INLRT @ 0x023[E-] REG NA DefList: { } N019 (???,???) [000115] ----------- * IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA DefList: { } N021 ( 1, 1) [000063] ----------- * LCL_VAR int V00 loc0 u:2 NA REG NA $200 DefList: { } N023 ( 1, 1) [000062] -c--------- * CNS_INT int 2 REG NA $46 Contained DefList: { } N025 ( 5, 5) [000066] -------N--- * TEST void REG NA LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=260.00> DefList: { } N027 ( 7, 7) [000067] ----------- * JCC void cond=UNE REG NA CHECKING LAST USES for BB01, liveout={V00} ============================== use: {} def: {V00 V12} NEW BLOCK BB04 Setting BB01 as the predecessor for determining incoming variable registers of BB04 DefList: { } N031 (???,???) [000116] ----------- * IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA DefList: { } N033 ( 1, 1) [000110] ----------- * CNS_INT int 85 REG NA $44 Interval 6: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB04 regmask=[allInt] minReg=1 wt=160.00> DefList: { N033.t110. CNS_INT } N035 (???,???) [000123] ----------- * PUTARG_REG int REG rcx BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> Interval 7: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB04 regmask=[rcx] minReg=1 wt=40.00> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=160.00> DefList: { N035.t123. PUTARG_REG } N037 ( 1, 1) [000071] ----------- * LCL_VAR long V00 loc0 u:2 NA (last use) REG NA $180 DefList: { N035.t123. PUTARG_REG } N039 ( 19, 5) [000069] --CXG------ * CALL ind int REG NA $c2 BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> Last use of V00 between PUTARG and CALL. Removing occupied arg regs from preferences: [rcx] LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=260.00> BB04 regmask=[rax] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rdx] minReg=1 wt=40.00> BB04 regmask=[r8] minReg=1 wt=40.00> BB04 regmask=[r9] minReg=1 wt=40.00> BB04 regmask=[r10] minReg=1 wt=40.00> BB04 regmask=[r11] minReg=1 wt=40.00> Interval 8: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB04 regmask=[rax] minReg=1 wt=40.00> CALL BB04 regmask=[rax] minReg=1 fixed wt=160.00> DefList: { N039.t69. CALL } N041 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 NA REG NA $VN.Void BB04 regmask=[allInt] minReg=1 last wt=40.00> Assigning related to STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=300.00> CHECKING LAST USES for BB04, liveout={V07} ============================== use: {V00} def: {V07} NEW BLOCK BB05 Setting BB01 as the predecessor for determining incoming variable registers of BB05 DefList: { } N045 (???,???) [000117] ----------- * IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA DefList: { } N047 ( 1, 1) [000077] ----------- * LCL_VAR long V00 loc0 u:2 NA REG NA $180 DefList: { } N049 ( 2, 2) [000076] -c--------- * LEA(b+6) long REG NA Contained DefList: { } N051 ( 4, 4) [000081] n---GO----- * IND long REG NA LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> Interval 9: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] IND BB05 regmask=[allInt] minReg=1 wt=40.00> DefList: { N051.t81. IND } N053 (???,???) [000124] ----GO----- * PUTARG_REG long REG rcx BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> Interval 10: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB05 regmask=[rcx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=40.00> DefList: { N053.t124. PUTARG_REG } N055 ( 1, 1) [000111] ----------- * CNS_INT int 85 REG NA $44 Interval 11: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB05 regmask=[allInt] minReg=1 wt=40.00> DefList: { N053.t124. PUTARG_REG; N055.t111. CNS_INT } N057 (???,???) [000125] ----------- * PUTARG_REG int REG rdx BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> Interval 12: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB05 regmask=[rdx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed wt=40.00> DefList: { N053.t124. PUTARG_REG; N057.t125. PUTARG_REG } N059 ( 1, 1) [000072] ----------- * LCL_VAR long V00 loc0 u:2 NA (last use) REG NA $180 DefList: { N053.t124. PUTARG_REG; N057.t125. PUTARG_REG } N061 ( 2, 2) [000074] -c--------- * LEA(b+-2) long REG NA Contained DefList: { N053.t124. PUTARG_REG; N057.t125. PUTARG_REG } N063 ( 4, 4) [000075] nc--GO----- * IND long REG NA Contained DefList: { N053.t124. PUTARG_REG; N057.t125. PUTARG_REG } N065 ( 26, 13) [000083] --CXGO----- * CALL ind int REG NA $c1 BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> Last use of V00 between PUTARG and CALL. Removing occupied arg regs from preferences: [rcx rdx] LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> BB05 regmask=[rax] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[r8] minReg=1 wt=10.00> BB05 regmask=[r9] minReg=1 wt=10.00> BB05 regmask=[r10] minReg=1 wt=10.00> BB05 regmask=[r11] minReg=1 wt=10.00> Interval 13: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB05 regmask=[rax] minReg=1 wt=10.00> CALL BB05 regmask=[rax] minReg=1 fixed wt=40.00> DefList: { N065.t83. CALL } N067 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 NA REG NA $VN.Void BB05 regmask=[allInt] minReg=1 last wt=10.00> Assigning related to STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=300.00> CHECKING LAST USES for BB05, liveout={V07} ============================== use: {V00} def: {V07} NEW BLOCK BB06 Setting BB04 as the predecessor for determining incoming variable registers of BB06 DefList: { } N071 (???,???) [000118] ----------- * IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? REG NA DefList: { } N073 ( 1, 1) [000058] ----------- * LCL_VAR int V07 tmp4 u:4 NA (last use) REG NA $280 DefList: { } N075 ( 2, 3) [000030] ----------- * CAST long <- int REG NA $300 LCL_VAR BB06 regmask=[allInt] minReg=1 last wt=300.00> Interval 14: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CAST BB06 regmask=[allInt] minReg=1 wt=400.00> DefList: { N075.t30. CAST } N077 ( 1, 1) [000028] -c--------- * CNS_INT long 85 REG NA $1c3 Contained DefList: { N075.t30. CAST } N079 ( 4, 5) [000090] -------N--- * CMP void REG NA BB06 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N081 ( 6, 7) [000091] ----------- * JCC void cond=UNE REG NA CHECKING LAST USES for BB06, liveout={} ============================== use: {V07} def: {} NEW BLOCK BB08 Setting BB06 as the predecessor for determining incoming variable registers of BB08 DefList: { } N085 (???,???) [000119] ----------- * IL_OFFSET void INLRT @ 0x043[E-] REG NA DefList: { } N087 ( 0, 0) [000032] ----------- * RETURN void REG NA $VN.Void CHECKING LAST USES for BB08, liveout={} ============================== use: {} def: {} NEW BLOCK BB07 Setting BB06 as the predecessor for determining incoming variable registers of BB07 firstColdLoc = 91 DefList: { } N091 (???,???) [000120] ----------- * IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? REG NA DefList: { } N093 ( 1, 4) [000092] H---------- * CNS_INT(h) long 0x4000000000421f70 REG NA $184 Interval 15: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB07 regmask=[allInt] minReg=1 wt=0.00> DefList: { N093.t92. CNS_INT } N095 (???,???) [000126] ----------- * PUTARG_REG long REG rcx BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> Interval 16: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> DefList: { N095.t126. PUTARG_REG } N097 ( 15, 10) [000093] --C-------- * CALL help ref CORINFO_HELP_NEWSFAST REG NA $380 BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rdx] minReg=1 wt=0.00> BB07 regmask=[r8] minReg=1 wt=0.00> BB07 regmask=[r9] minReg=1 wt=0.00> BB07 regmask=[r10] minReg=1 wt=0.00> BB07 regmask=[r11] minReg=1 wt=0.00> Interval 17: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[rax] minReg=1 wt=0.00> CALL BB07 regmask=[rax] minReg=1 fixed wt=0.00> DefList: { N097.t93. CALL } N099 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 NA REG NA $VN.Void BB07 regmask=[allInt] minReg=1 last wt=0.00> Assigning related to STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 last wt=0.00> DefList: { } N101 ( 3, 2) [000095] ----------- * LCL_VAR ref V11 tmp8 u:2 NA REG NA $380 DefList: { } N103 (???,???) [000127] ----------- * PUTARG_REG ref REG rcx BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> Setting putarg_reg as a pass-through of a non-last use lclVar Interval 18: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> Assigning related to DefList: { N103.t127. PUTARG_REG } N105 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rdx] minReg=1 wt=0.00> BB07 regmask=[r8] minReg=1 wt=0.00> BB07 regmask=[r9] minReg=1 wt=0.00> BB07 regmask=[r10] minReg=1 wt=0.00> BB07 regmask=[r11] minReg=1 wt=0.00> DefList: { } N107 (???,???) [000121] ----------- * IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? REG NA DefList: { } N109 ( 3, 2) [000097] ----------- * LCL_VAR ref V11 tmp8 u:2 NA (last use) REG NA $380 DefList: { } N111 (???,???) [000128] ----------- * PUTARG_REG ref REG rcx BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> Interval 19: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> DefList: { N111.t128. PUTARG_REG } N113 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $382 BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rdx] minReg=1 wt=0.00> BB07 regmask=[r8] minReg=1 wt=0.00> BB07 regmask=[r9] minReg=1 wt=0.00> BB07 regmask=[r10] minReg=1 wt=0.00> BB07 regmask=[r11] minReg=1 wt=0.00> CHECKING LAST USES for BB07, liveout={} ============================== use: {} def: {V11} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V00) long RefPositions {#17@16 #18@25 #27@39 #40@51 #55@65} physReg:NA Preferences=[rax rbx rbp rsi rdi r8-r15] Aversions=[rcx rdx] Interval 1: (V07) int RefPositions {#38@42 #66@68 #68@75} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: (V11) ref RefPositions {#90@100 #92@103 #105@111} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11] Interval 3: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 4: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 5: long (constant) RefPositions {#15@14 #16@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 6: int (constant) RefPositions {#20@34 #22@35} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 7: int RefPositions {#24@36 #26@39} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 8: int RefPositions {#36@40 #37@41} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 9: long RefPositions {#41@52 #43@53} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 10: long RefPositions {#45@54 #52@65} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 11: int (constant) RefPositions {#46@56 #48@57} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 12: int RefPositions {#50@58 #54@65} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 13: int RefPositions {#64@66 #65@67} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 14: long RefPositions {#69@76 #70@79} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: long (constant) RefPositions {#73@94 #75@95} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 16: long RefPositions {#77@96 #79@97} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 17: ref RefPositions {#88@98 #89@99} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 18: ref (specialPutArg) RefPositions {#94@104 #96@105} physReg:NA Preferences=[rcx] Aversions=[allMask] RelatedInterval Interval 19: ref RefPositions {#107@112 #109@113} physReg:NA Preferences=[rcx] Aversions=[allMask] ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rcx] minReg=1 wt=100.00> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rax] minReg=1 last wt=100.00> BB01 regmask=[rcx] minReg=1 last wt=100.00> BB01 regmask=[rdx] minReg=1 last wt=100.00> BB01 regmask=[r8] minReg=1 last wt=100.00> BB01 regmask=[r9] minReg=1 last wt=100.00> BB01 regmask=[r10] minReg=1 last wt=100.00> BB01 regmask=[r11] minReg=1 last wt=100.00> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00> BB01 regmask=[allInt] minReg=1 last wt=100.00> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=260.00> CNS_INT BB04 regmask=[rcx] minReg=1 wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> BB04 regmask=[rcx] minReg=1 wt=40.00> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=260.00> BB04 regmask=[rax] minReg=1 last wt=40.00> BB04 regmask=[rcx] minReg=1 last wt=40.00> BB04 regmask=[rdx] minReg=1 last wt=40.00> BB04 regmask=[r8] minReg=1 last wt=40.00> BB04 regmask=[r9] minReg=1 last wt=40.00> BB04 regmask=[r10] minReg=1 last wt=40.00> BB04 regmask=[r11] minReg=1 last wt=40.00> BB04 regmask=[rax] minReg=1 wt=40.00> CALL BB04 regmask=[rax] minReg=1 fixed wt=160.00> BB04 regmask=[allInt] minReg=1 last wt=40.00> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=260.00> IND BB05 regmask=[rcx] minReg=1 wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rcx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=40.00> CNS_INT BB05 regmask=[rdx] minReg=1 wt=40.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> BB05 regmask=[rax] minReg=1 last wt=10.00> BB05 regmask=[rcx] minReg=1 last wt=10.00> BB05 regmask=[rdx] minReg=1 last wt=10.00> BB05 regmask=[r8] minReg=1 last wt=10.00> BB05 regmask=[r9] minReg=1 last wt=10.00> BB05 regmask=[r10] minReg=1 last wt=10.00> BB05 regmask=[r11] minReg=1 last wt=10.00> BB05 regmask=[rax] minReg=1 wt=10.00> CALL BB05 regmask=[rax] minReg=1 fixed wt=40.00> BB05 regmask=[allInt] minReg=1 last wt=10.00> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[allInt] minReg=1 last regOptional wt=300.00> CAST BB06 regmask=[allInt] minReg=1 wt=400.00> BB06 regmask=[allInt] minReg=1 last regOptional wt=100.00> CNS_INT BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> CALL BB07 regmask=[rax] minReg=1 fixed wt=0.00> BB07 regmask=[allInt] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> ------------ REFPOSITIONS DURING VALIDATE INTERVALS (RefPositions per interval) ------------ ----------------- STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=300.00> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[allInt] minReg=1 last regOptional wt=300.00> ----------------- STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=260.00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=260.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> ----------------- STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 fixed wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. CNS_INT(h) '"Running Main..."' Def:(#1) N007. PUTARG_REG Use:(#3) Fixed:rcx(#2) * Def:(#5) rcx N009. CALL Use:(#7) Fixed:rcx(#6) * Kill: rax rcx rdx r8 r9 r10 r11 N011. IL_OFFSET INLRT @ 0x00A[E-] N013. CNS_INT(h) 0x40000000004230c0 ftn Def:(#15) Pref: N015. V00(L0) Use:(#16) * Def:(#17) N017. IL_OFFSET INLRT @ 0x023[E-] N019. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N021. V00(L0) N023. CNS_INT 2 N025. TEST Use:(#18) N027. JCC cond=UNE BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== N031. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N033. CNS_INT 85 Def:(#20) N035. PUTARG_REG Use:(#22) Fixed:rcx(#21) * Def:(#24) rcx N037. V00(L0) N039. CALL ind Use:(#26) Fixed:rcx(#25) * Use:(#27) * Kill: rax rcx rdx r8 r9 r10 r11 Def:(#36) rax Pref: N041. V07(L1) Use:(#37) * Def:(#38) BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== N045. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N047. V00(L0) N049. LEA(b+6) N051. IND Use:(#40) Def:(#41) N053. PUTARG_REG Use:(#43) Fixed:rcx(#42) * Def:(#45) rcx N055. CNS_INT 85 Def:(#46) N057. PUTARG_REG Use:(#48) Fixed:rdx(#47) * Def:(#50) rdx N059. V00(L0) N061. LEA(b+-2) N063. IND N065. CALL ind Use:(#52) Fixed:rcx(#51) * Use:(#54) Fixed:rdx(#53) * Use:(#55) * Kill: rax rcx rdx r8 r9 r10 r11 Def:(#64) rax Pref: N067. V07(L1) Use:(#65) * Def:(#66) BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} ===== N071. IL_OFFSET INL05 @ 0x000[E-] <- INLRT @ ??? N073. V07(L1) N075. CAST Use:(#68) * Def:(#69) N077. CNS_INT 85 N079. CMP Use:(#70) * N081. JCC cond=UNE BB08 [0018] [000..044) (return), preds={BB06} succs={} ===== N085. IL_OFFSET INLRT @ 0x043[E-] N087. RETURN BB07 [0017] [000..000) (throw), preds={BB06} succs={} ===== N091. IL_OFFSET INL05 @ 0x004[E-] <- INLRT @ ??? N093. CNS_INT(h) 0x4000000000421f70 Def:(#73) N095. PUTARG_REG Use:(#75) Fixed:rcx(#74) * Def:(#77) rcx N097. CALL help Use:(#79) Fixed:rcx(#78) * Kill: rax rcx rdx r8 r9 r10 r11 Def:(#88) rax Pref: N099. V11(L2) Use:(#89) * Def:(#90) N101. V11(L2) N103. PUTARG_REG Use:(#92) Fixed:rcx(#91) Def:(#94) rcx Pref: N105. CALL Use:(#96) Fixed:rcx(#95) * Kill: rax rcx rdx r8 r9 r10 r11 N107. IL_OFFSET INL05 @ 0x009[--] <- INLRT @ ??? N109. V11(L2) N111. PUTARG_REG Use:(#105) Fixed:rcx(#104) * Def:(#107) rcx N113. CALL help Use:(#109) Fixed:rcx(#108) * Kill: rax rcx rdx r8 r9 r10 r11 Linear scan intervals after buildIntervals: Interval 0: (V00) long RefPositions {#17@16 #18@25 #27@39 #40@51 #55@65} physReg:NA Preferences=[rax rbx rbp rsi rdi r8-r15] Aversions=[rcx rdx] Interval 1: (V07) int RefPositions {#38@42 #66@68 #68@75} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: (V11) ref RefPositions {#90@100 #92@103 #105@111} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11] Interval 3: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 4: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 5: long (constant) RefPositions {#15@14 #16@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 6: int (constant) RefPositions {#20@34 #22@35} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 7: int RefPositions {#24@36 #26@39} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 8: int RefPositions {#36@40 #37@41} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 9: long RefPositions {#41@52 #43@53} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 10: long RefPositions {#45@54 #52@65} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 11: int (constant) RefPositions {#46@56 #48@57} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 12: int RefPositions {#50@58 #54@65} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 13: int RefPositions {#64@66 #65@67} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 14: long RefPositions {#69@76 #70@79} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: long (constant) RefPositions {#73@94 #75@95} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 16: long RefPositions {#77@96 #79@97} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 17: ref RefPositions {#88@98 #89@99} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 18: ref (specialPutArg) RefPositions {#94@104 #96@105} physReg:NA Preferences=[rcx] Aversions=[allMask] RelatedInterval Interval 19: ref RefPositions {#107@112 #109@113} physReg:NA Preferences=[rcx] Aversions=[allMask] *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V00) long RefPositions {#17@16 #18@25 #27@39 #40@51 #55@65} physReg:NA Preferences=[rax rbx rbp rsi rdi r8-r15] Aversions=[rcx rdx] Interval 1: (V07) int RefPositions {#38@42 #66@68 #68@75} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: (V11) ref RefPositions {#90@100 #92@103 #105@111} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11] Interval 3: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 4: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 5: long (constant) RefPositions {#15@14 #16@15} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 6: int (constant) RefPositions {#20@34 #22@35} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 7: int RefPositions {#24@36 #26@39} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 8: int RefPositions {#36@40 #37@41} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 9: long RefPositions {#41@52 #43@53} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 10: long RefPositions {#45@54 #52@65} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 11: int (constant) RefPositions {#46@56 #48@57} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 12: int RefPositions {#50@58 #54@65} physReg:NA Preferences=[rdx] Aversions=[allMask] Interval 13: int RefPositions {#64@66 #65@67} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 14: long RefPositions {#69@76 #70@79} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: long (constant) RefPositions {#73@94 #75@95} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 16: long RefPositions {#77@96 #79@97} physReg:NA Preferences=[rcx] Aversions=[allMask] Interval 17: ref RefPositions {#88@98 #89@99} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval Interval 18: ref (specialPutArg) RefPositions {#94@104 #96@105} physReg:NA Preferences=[rcx] Aversions=[allMask] RelatedInterval Interval 19: ref RefPositions {#107@112 #109@113} physReg:NA Preferences=[rcx] Aversions=[allMask] ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rcx] minReg=1 wt=100.00> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rax] minReg=1 last wt=100.00> BB01 regmask=[rcx] minReg=1 last wt=100.00> BB01 regmask=[rdx] minReg=1 last wt=100.00> BB01 regmask=[r8] minReg=1 last wt=100.00> BB01 regmask=[r9] minReg=1 last wt=100.00> BB01 regmask=[r10] minReg=1 last wt=100.00> BB01 regmask=[r11] minReg=1 last wt=100.00> CNS_INT BB01 regmask=[allInt] minReg=1 wt=400.00> BB01 regmask=[allInt] minReg=1 last wt=100.00> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=260.00> CNS_INT BB04 regmask=[rcx] minReg=1 wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> BB04 regmask=[rcx] minReg=1 wt=40.00> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=260.00> BB04 regmask=[rax] minReg=1 last wt=40.00> BB04 regmask=[rcx] minReg=1 last wt=40.00> BB04 regmask=[rdx] minReg=1 last wt=40.00> BB04 regmask=[r8] minReg=1 last wt=40.00> BB04 regmask=[r9] minReg=1 last wt=40.00> BB04 regmask=[r10] minReg=1 last wt=40.00> BB04 regmask=[r11] minReg=1 last wt=40.00> BB04 regmask=[rax] minReg=1 wt=40.00> CALL BB04 regmask=[rax] minReg=1 fixed wt=160.00> BB04 regmask=[allInt] minReg=1 last wt=40.00> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=260.00> IND BB05 regmask=[rcx] minReg=1 wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rcx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=40.00> CNS_INT BB05 regmask=[rdx] minReg=1 wt=40.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> BB05 regmask=[rax] minReg=1 last wt=10.00> BB05 regmask=[rcx] minReg=1 last wt=10.00> BB05 regmask=[rdx] minReg=1 last wt=10.00> BB05 regmask=[r8] minReg=1 last wt=10.00> BB05 regmask=[r9] minReg=1 last wt=10.00> BB05 regmask=[r10] minReg=1 last wt=10.00> BB05 regmask=[r11] minReg=1 last wt=10.00> BB05 regmask=[rax] minReg=1 wt=10.00> CALL BB05 regmask=[rax] minReg=1 fixed wt=40.00> BB05 regmask=[allInt] minReg=1 last wt=10.00> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[allInt] minReg=1 last regOptional wt=300.00> CAST BB06 regmask=[allInt] minReg=1 wt=400.00> BB06 regmask=[allInt] minReg=1 last regOptional wt=100.00> CNS_INT BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> CALL BB07 regmask=[rax] minReg=1 fixed wt=0.00> BB07 regmask=[allInt] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 (Interval 0) STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=260.00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=260.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=260.00> LCL_VAR BB05 regmask=[allInt] minReg=1 last wt=260.00> --- V01 --- V02 --- V03 --- V04 --- V05 --- V06 --- V07 (Interval 1) STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=300.00> STORE_LCL_VAR BB05 regmask=[allInt] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[allInt] minReg=1 last regOptional wt=300.00> --- V08 --- V09 --- V10 --- V11 (Interval 2) STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 fixed wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> --- V12 --- V13 --- V14 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 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ | | | | | | | | | | 1.#0 BB1 PredBB0 | | | | | | | | | | [000100] 6.#1 C3 Def Alloc rcx | |C3 a| | | | | | | | [000122] 7.#2 rcx Fixd Keep rcx | |C3 a| | | | | | | | 7.#3 C3 Use * Keep rcx | |C3 a| | | | | | | | 8.#4 rcx Fixd Keep rcx | | | | | | | | | | 8.#5 I4 Def Alloc rcx | |I4 a| | | | | | | | [000001] 9.#6 rcx Fixd Keep rcx | |I4 a| | | | | | | | 9.#7 I4 Use * Keep rcx | |I4 a| | | | | | | | 10.#8 rax Kill Keep rax | | | | | | | | | | 10.#9 rcx Kill Keep rcx | | | | | | | | | | 10.#10 rdx Kill Keep rdx | | | | | | | | | | 10.#11 r8 Kill Keep r8 | | | | | | | | | | 10.#12 r9 Kill Keep r9 | | | | | | | | | | 10.#13 r10 Kill Keep r10 | | | | | | | | | | 10.#14 r11 Kill Keep r11 | | | | | | | | | | [000037] 14.#15 C5 Def ORDER(A) rbx | | | |C5 a| | | | | | [000004] 15.#16 C5 Use * Keep rbx | | | |C5 a| | | | | | 16.#17 V00 Def COVRS(A) rbx | | | |V00a| | | | | | [000066] 25.#18 V00 Use Keep rbx | | | |V00a| | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 29.#19 BB4 PredBB1 | | | |V00a| | | | | | [000110] 34.#20 C6 Def Alloc rcx | |C6 a| |V00a| | | | | | [000123] 35.#21 rcx Fixd Keep rcx | |C6 a| |V00a| | | | | | 35.#22 C6 Use * Keep rcx | |C6 a| |V00a| | | | | | 36.#23 rcx Fixd Keep rcx | | | |V00a| | | | | | 36.#24 I7 Def Alloc rcx | |I7 a| |V00a| | | | | | [000069] 39.#25 rcx Fixd Keep rcx | |I7 a| |V00a| | | | | | 39.#26 I7 Use * Keep rcx | |I7 a| |V00a| | | | | | 39.#27 V00 Use * Keep rbx | |I7 a| |V00i| | | | | | 40.#28 rax Kill Keep rax | | | |V00i| | | | | | 40.#29 rcx Kill Keep rcx | | | |V00i| | | | | | 40.#30 rdx Kill Keep rdx | | | |V00i| | | | | | 40.#31 r8 Kill Keep r8 | | | |V00i| | | | | | 40.#32 r9 Kill Keep r9 | | | |V00i| | | | | | 40.#33 r10 Kill Keep r10 | | | |V00i| | | | | | 40.#34 r11 Kill Keep r11 | | | |V00i| | | | | | 40.#35 rax Fixd Keep rax | | | |V00i| | | | | | 40.#36 I8 Def Alloc rax |I8 a| | |V00i| | | | | | [000068] 41.#37 I8 Use * Keep rax |I8 a| | |V00i| | | | | | 42.#38 V07 Def OWNPR(A) rax |V07a| | |V00i| | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 43.#39 BB5 PredBB1 |V07i| | |V00a| | | | | | [000081] 51.#40 V00 Use Keep rbx |V07i| | |V00a| | | | | | 52.#41 I9 Def Alloc rcx |V07i|I9 a| |V00a| | | | | | [000124] 53.#42 rcx Fixd Keep rcx |V07i|I9 a| |V00a| | | | | | 53.#43 I9 Use * Keep rcx |V07i|I9 a| |V00a| | | | | | 54.#44 rcx Fixd Keep rcx |V07i| | |V00a| | | | | | 54.#45 I10 Def Alloc rcx |V07i|I10a| |V00a| | | | | | [000111] 56.#46 C11 Def Alloc rdx |V07i|I10a|C11a|V00a| | | | | | [000125] 57.#47 rdx Fixd Keep rdx |V07i|I10a|C11a|V00a| | | | | | 57.#48 C11 Use * Keep rdx |V07i|I10a|C11a|V00a| | | | | | 58.#49 rdx Fixd Keep rdx |V07i|I10a| |V00a| | | | | | 58.#50 I12 Def Alloc rdx |V07i|I10a|I12a|V00a| | | | | | [000083] 65.#51 rcx Fixd Keep rcx |V07i|I10a|I12a|V00a| | | | | | 65.#52 I10 Use * Keep rcx |V07i|I10a|I12a|V00a| | | | | | 65.#53 rdx Fixd Keep rdx |V07i|I10a|I12a|V00a| | | | | | 65.#54 I12 Use * Keep rdx |V07i|I10a|I12a|V00a| | | | | | 65.#55 V00 Use * Keep rbx |V07i|I10a|I12a|V00a| | | | | | 66.#56 rax Kill Keep rax | | | | | | | | | | 66.#57 rcx Kill Keep rcx | | | | | | | | | | 66.#58 rdx Kill Keep rdx | | | | | | | | | | 66.#59 r8 Kill Keep r8 | | | | | | | | | | 66.#60 r9 Kill Keep r9 | | | | | | | | | | 66.#61 r10 Kill Keep r10 | | | | | | | | | | 66.#62 r11 Kill Keep r11 | | | | | | | | | | 66.#63 rax Fixd Keep rax | | | | | | | | | | 66.#64 I13 Def Alloc rax |I13a| | | | | | | | | [000082] 67.#65 I13 Use * Keep rax |I13a| | | | | | | | | 68.#66 V07 Def THISA(A) rax |V07a| | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 69.#67 BB6 PredBB4 |V07a| | | | | | | | | [000030] 75.#68 V07 Use * Keep rax |V07a| | | | | | | | | 76.#69 I14 Def BSFIT(A) rcx | |I14a| | | | | | | | [000090] 79.#70 I14 Use * Keep rcx | |I14a| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 83.#71 BB8 PredBB6 | | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 89.#72 BB7 PredBB6 | | | | | | | | | | [000092] 94.#73 C15 Def Alloc rcx | |C15a| | | | | | | | [000126] 95.#74 rcx Fixd Keep rcx | |C15a| | | | | | | | 95.#75 C15 Use * Keep rcx | |C15a| | | | | | | | 96.#76 rcx Fixd Keep rcx | | | | | | | | | | 96.#77 I16 Def Alloc rcx | |I16a| | | | | | | | [000093] 97.#78 rcx Fixd Keep rcx | |I16a| | | | | | | | 97.#79 I16 Use * Keep rcx | |I16a| | | | | | | | 98.#80 rax Kill Keep rax | | | | | | | | | | 98.#81 rcx Kill Keep rcx | | | | | | | | | | 98.#82 rdx Kill Keep rdx | | | | | | | | | | 98.#83 r8 Kill Keep r8 | | | | | | | | | | 98.#84 r9 Kill Keep r9 | | | | | | | | | | 98.#85 r10 Kill Keep r10 | | | | | | | | | | 98.#86 r11 Kill Keep r11 | | | | | | | | | | 98.#87 rax Fixd Keep rax | | | | | | | | | | 98.#88 I17 Def Alloc rax |I17a| | | | | | | | | [000094] 99.#89 I17 Use * Keep rax |I17a| | | | | | | | | 100.#90 V11 Def ORDER(A) rbx | | | |V11a| | | | | | [000127] 103.#91 rcx Fixd Keep rcx | | | |V11a| | | | | | 103.#92 V11 Use Copy rcx | |V11a| |V11a| | | | | | 104.#93 rcx Fixd Keep rcx | |V11a| |V11a| | | | | | 104.#94 I18 Def Alloc rcx | |I18a| |V11a| | | | | | [000096] 105.#95 rcx Fixd Keep rcx | |I18a| |V11a| | | | | | 105.#96 I18 Use * Keep rcx | |I18a| |V11a| | | | | | 106.#97 rax Kill Keep rax | | | |V11a| | | | | | 106.#98 rcx Kill Keep rcx | | | |V11a| | | | | | 106.#99 rdx Kill Keep rdx | | | |V11a| | | | | | 106.#100 r8 Kill Keep r8 | | | |V11a| | | | | | 106.#101 r9 Kill Keep r9 | | | |V11a| | | | | | 106.#102 r10 Kill Keep r10 | | | |V11a| | | | | | 106.#103 r11 Kill Keep r11 | | | |V11a| | | | | | [000128] 111.#104 rcx Fixd Keep rcx | | | |V11a| | | | | | 111.#105 V11 Use * Copy rcx | |V11a| |V11a| | | | | | 112.#106 rcx Fixd Keep rcx | | | | | | | | | | 112.#107 I19 Def Alloc rcx | |I19a| | | | | | | | [000098] 113.#108 rcx Fixd Keep rcx | |I19a| | | | | | | | 113.#109 I19 Use * Keep rcx | |I19a| | | | | | | | 114.#110 rax Kill Keep rax | | | | | | | | | | 114.#111 rcx Kill Keep rcx | | | | | | | | | | 114.#112 rdx Kill Keep rdx | | | | | | | | | | 114.#113 r8 Kill Keep r8 | | | | | | | | | | 114.#114 r9 Kill Keep r9 | | | | | | | | | | 114.#115 r10 Kill Keep r10 | | | | | | | | | | 114.#116 r11 Kill Keep r11 | | | | | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rcx] minReg=1 wt=100.00> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> BB01 regmask=[rcx] minReg=1 wt=100.00> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> BB01 regmask=[rax] minReg=1 last wt=100.00> BB01 regmask=[rcx] minReg=1 last wt=100.00> BB01 regmask=[rdx] minReg=1 last wt=100.00> BB01 regmask=[r8] minReg=1 last wt=100.00> BB01 regmask=[r9] minReg=1 last wt=100.00> BB01 regmask=[r10] minReg=1 last wt=100.00> BB01 regmask=[r11] minReg=1 last wt=100.00> CNS_INT BB01 regmask=[rbx] minReg=1 wt=400.00> BB01 regmask=[rbx] minReg=1 last wt=100.00> STORE_LCL_VAR BB01 regmask=[rbx] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[rbx] minReg=1 regOptional wt=260.00> CNS_INT BB04 regmask=[rcx] minReg=1 wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> BB04 regmask=[rcx] minReg=1 wt=40.00> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=160.00> BB04 regmask=[rcx] minReg=1 wt=40.00> BB04 regmask=[rcx] minReg=1 last fixed wt=40.00> LCL_VAR BB04 regmask=[rbx] minReg=1 last wt=260.00> BB04 regmask=[rax] minReg=1 last wt=40.00> BB04 regmask=[rcx] minReg=1 last wt=40.00> BB04 regmask=[rdx] minReg=1 last wt=40.00> BB04 regmask=[r8] minReg=1 last wt=40.00> BB04 regmask=[r9] minReg=1 last wt=40.00> BB04 regmask=[r10] minReg=1 last wt=40.00> BB04 regmask=[r11] minReg=1 last wt=40.00> BB04 regmask=[rax] minReg=1 wt=40.00> CALL BB04 regmask=[rax] minReg=1 fixed wt=160.00> BB04 regmask=[rax] minReg=1 last wt=40.00> STORE_LCL_VAR BB04 regmask=[rax] minReg=1 wt=300.00> LCL_VAR BB05 regmask=[rbx] minReg=1 wt=260.00> IND BB05 regmask=[rcx] minReg=1 wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rcx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=40.00> CNS_INT BB05 regmask=[rdx] minReg=1 wt=40.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> PUTARG_REG BB05 regmask=[rdx] minReg=1 fixed wt=40.00> BB05 regmask=[rcx] minReg=1 wt=10.00> BB05 regmask=[rcx] minReg=1 last fixed wt=10.00> BB05 regmask=[rdx] minReg=1 wt=10.00> BB05 regmask=[rdx] minReg=1 last fixed wt=10.00> LCL_VAR BB05 regmask=[rbx] minReg=1 last wt=260.00> BB05 regmask=[rax] minReg=1 last wt=10.00> BB05 regmask=[rcx] minReg=1 last wt=10.00> BB05 regmask=[rdx] minReg=1 last wt=10.00> BB05 regmask=[r8] minReg=1 last wt=10.00> BB05 regmask=[r9] minReg=1 last wt=10.00> BB05 regmask=[r10] minReg=1 last wt=10.00> BB05 regmask=[r11] minReg=1 last wt=10.00> BB05 regmask=[rax] minReg=1 wt=10.00> CALL BB05 regmask=[rax] minReg=1 fixed wt=40.00> BB05 regmask=[rax] minReg=1 last wt=10.00> STORE_LCL_VAR BB05 regmask=[rax] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[rax] minReg=1 last regOptional wt=300.00> CAST BB06 regmask=[rcx] minReg=1 wt=400.00> BB06 regmask=[rcx] minReg=1 last regOptional wt=100.00> CNS_INT BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rax] minReg=1 wt=0.00> CALL BB07 regmask=[rax] minReg=1 fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[rbx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 copy fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last copy fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[rcx] minReg=1 fixed wt=0.00> BB07 regmask=[rcx] minReg=1 wt=0.00> BB07 regmask=[rcx] minReg=1 last fixed wt=0.00> BB07 regmask=[rax] minReg=1 last wt=0.00> BB07 regmask=[rcx] minReg=1 last wt=0.00> BB07 regmask=[rdx] minReg=1 last wt=0.00> BB07 regmask=[r8] minReg=1 last wt=0.00> BB07 regmask=[r9] minReg=1 last wt=0.00> BB07 regmask=[r10] minReg=1 last wt=0.00> BB07 regmask=[r11] minReg=1 last wt=0.00> VAR REFPOSITIONS AFTER ALLOCATION --- V00 (Interval 0) STORE_LCL_VAR BB01 regmask=[rbx] minReg=1 wt=260.00> LCL_VAR BB01 regmask=[rbx] minReg=1 regOptional wt=260.00> LCL_VAR BB04 regmask=[rbx] minReg=1 last wt=260.00> LCL_VAR BB05 regmask=[rbx] minReg=1 wt=260.00> LCL_VAR BB05 regmask=[rbx] minReg=1 last wt=260.00> --- V01 --- V02 --- V03 --- V04 --- V05 --- V06 --- V07 (Interval 1) STORE_LCL_VAR BB04 regmask=[rax] minReg=1 wt=300.00> STORE_LCL_VAR BB05 regmask=[rax] minReg=1 wt=300.00> LCL_VAR BB06 regmask=[rax] minReg=1 last regOptional wt=300.00> --- V08 --- V09 --- V10 --- V11 (Interval 2) STORE_LCL_VAR BB07 regmask=[rbx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 copy fixed wt=0.00> LCL_VAR BB07 regmask=[rcx] minReg=1 last copy fixed wt=0.00> --- V12 --- V13 --- V14 Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {V00 V07} Has No Critical Edges Prior to Resolution BB01 use: {} def: {V00 V12} in: {} out: {V00} Var=Reg beg of BB01: none Var=Reg end of BB01: V00=rbx BB04 use: {V00} def: {V07} in: {V00} out: {V07} Var=Reg beg of BB04: V00=rbx Var=Reg end of BB04: V07=rax BB05 use: {V00} def: {V07} in: {V00} out: {V07} Var=Reg beg of BB05: V00=rbx Var=Reg end of BB05: V07=rax BB06 use: {V07} def: {} in: {V07} out: {} Var=Reg beg of BB06: V07=rax Var=Reg end of BB06: none BB08 use: {} def: {} in: {} out: {} Var=Reg beg of BB08: none Var=Reg end of BB08: none BB07 use: {} def: {V11} in: {} out: {} Var=Reg beg of BB07: none Var=Reg end of BB07: none RESOLVING EDGES 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} N003 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' REG rcx $140 /--* t100 ref N007 (???,???) [000122] ----------- t122 = * PUTARG_REG ref REG rcx /--* t122 ref arg0 in rcx N009 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N011 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA N013 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn REG rbx $180 /--* t37 long N015 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 rbx REG rbx $VN.Void N017 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA N019 (???,???) [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N021 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 rbx REG rbx $200 N023 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 REG NA $46 /--* t63 int +--* t62 int N025 ( 5, 5) [000066] -------N--- * TEST void REG NA N027 ( 7, 7) [000067] ----------- JCC void cond=UNE REG NA ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} N031 (???,???) [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N033 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 REG rcx $44 /--* t110 int N035 (???,???) [000123] ----------- t123 = * PUTARG_REG int REG rcx N037 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N039 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int REG rax $c2 /--* t69 int N041 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 rax REG rax $VN.Void ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} N045 (???,???) [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N047 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 rbx REG rbx $180 /--* t77 long N049 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long REG NA /--* t76 long N051 ( 4, 4) [000081] n---GO----- t81 = * IND long REG rcx /--* t81 long N053 (???,???) [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N055 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 REG rdx $44 /--* t111 int N057 (???,???) [000125] ----------- t125 = * PUTARG_REG int REG rdx N059 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t72 long N061 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long REG NA /--* t74 long N063 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N065 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int REG rax $c1 /--* t83 int N067 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 rax REG rax $VN.Void ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} N071 (???,???) [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? REG NA N073 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 rax (last use) REG rax $280 /--* t58 int N075 ( 2, 3) [000030] ----------- t30 = * CAST long <- int REG rcx $300 N077 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 REG NA $1c3 /--* t30 long +--* t28 long N079 ( 4, 5) [000090] -------N--- * CMP void REG NA N081 ( 6, 7) [000091] ----------- JCC void cond=UNE REG NA ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} N085 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] REG NA N087 ( 0, 0) [000032] ----------- RETURN void REG NA $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} N091 (???,???) [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? REG NA N093 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 REG rcx $184 /--* t92 long N095 (???,???) [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N097 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST REG rax $380 /--* t93 ref N099 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 rbx REG rbx $VN.Void N101 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 rbx REG rbx $380 /--* t95 ref N103 (???,???) [000127] ----------- t127 = * PUTARG_REG ref REG rcx /--* t127 ref this in rcx N105 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void N107 (???,???) [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? REG NA N109 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 rbx (last use) REG rbx $380 /--* t97 ref N111 (???,???) [000128] ----------- t128 = * PUTARG_REG ref REG rcx /--* t128 ref arg0 in rcx N113 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $382 ------------------------------------------------------------------------------------------------------------------- Final allocation --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 1.#0 BB1 PredBB0 | | | | | | | | | | [000100] 6.#1 C3 Def Alloc rcx | |C3 a| | | | | | | | [000122] 7.#2 rcx Fixd Keep rcx | |C3 a| | | | | | | | 7.#3 C3 Use * Keep rcx | |C3 i| | | | | | | | 8.#4 rcx Fixd Keep rcx | | | | | | | | | | 8.#5 I4 Def Alloc rcx | |I4 a| | | | | | | | [000001] 9.#6 rcx Fixd Keep rcx | |I4 a| | | | | | | | 9.#7 I4 Use * Keep rcx | |I4 i| | | | | | | | 10.#8 rax Kill Keep rax | | | | | | | | | | 10.#9 rcx Kill Keep rcx | | | | | | | | | | 10.#10 rdx Kill Keep rdx | | | | | | | | | | 10.#11 r8 Kill Keep r8 | | | | | | | | | | 10.#12 r9 Kill Keep r9 | | | | | | | | | | 10.#13 r10 Kill Keep r10 | | | | | | | | | | 10.#14 r11 Kill Keep r11 | | | | | | | | | | [000037] 14.#15 C5 Def Alloc rbx | | | |C5 a| | | | | | [000004] 15.#16 C5 Use * Keep rbx | | | |C5 i| | | | | | 16.#17 V00 Def Alloc rbx | | | |V00a| | | | | | [000066] 25.#18 V00 Use Keep rbx | | | |V00a| | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 29.#19 BB4 PredBB1 | | | |V00a| | | | | | [000110] 34.#20 C6 Def Alloc rcx | |C6 a| |V00a| | | | | | [000123] 35.#21 rcx Fixd Keep rcx | |C6 a| |V00a| | | | | | 35.#22 C6 Use * Keep rcx | |C6 i| |V00a| | | | | | 36.#23 rcx Fixd Keep rcx | | | |V00a| | | | | | 36.#24 I7 Def Alloc rcx | |I7 a| |V00a| | | | | | [000069] 39.#25 rcx Fixd Keep rcx | |I7 a| |V00a| | | | | | 39.#26 I7 Use * Keep rcx | |I7 i| |V00a| | | | | | 39.#27 V00 Use * Keep rbx | | | |V00i| | | | | | 40.#28 rax Kill Keep rax | | | | | | | | | | 40.#29 rcx Kill Keep rcx | | | | | | | | | | 40.#30 rdx Kill Keep rdx | | | | | | | | | | 40.#31 r8 Kill Keep r8 | | | | | | | | | | 40.#32 r9 Kill Keep r9 | | | | | | | | | | 40.#33 r10 Kill Keep r10 | | | | | | | | | | 40.#34 r11 Kill Keep r11 | | | | | | | | | | 40.#35 rax Fixd Keep rax | | | | | | | | | | 40.#36 I8 Def Alloc rax |I8 a| | | | | | | | | [000068] 41.#37 I8 Use * Keep rax |I8 i| | | | | | | | | 42.#38 V07 Def Alloc rax |V07a| | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 43.#39 BB5 PredBB1 | | | |V00a| | | | | | [000081] 51.#40 V00 Use Keep rbx | | | |V00a| | | | | | 52.#41 I9 Def Alloc rcx | |I9 a| |V00a| | | | | | [000124] 53.#42 rcx Fixd Keep rcx | |I9 a| |V00a| | | | | | 53.#43 I9 Use * Keep rcx | |I9 i| |V00a| | | | | | 54.#44 rcx Fixd Keep rcx | | | |V00a| | | | | | 54.#45 I10 Def Alloc rcx | |I10a| |V00a| | | | | | [000111] 56.#46 C11 Def Alloc rdx | |I10a|C11a|V00a| | | | | | [000125] 57.#47 rdx Fixd Keep rdx | |I10a|C11a|V00a| | | | | | 57.#48 C11 Use * Keep rdx | |I10a|C11i|V00a| | | | | | 58.#49 rdx Fixd Keep rdx | |I10a| |V00a| | | | | | 58.#50 I12 Def Alloc rdx | |I10a|I12a|V00a| | | | | | [000083] 65.#51 rcx Fixd Keep rcx | |I10a|I12a|V00a| | | | | | 65.#52 I10 Use * Keep rcx | |I10i|I12a|V00a| | | | | | 65.#53 rdx Fixd Keep rdx | | |I12a|V00a| | | | | | 65.#54 I12 Use * Keep rdx | | |I12i|V00a| | | | | | 65.#55 V00 Use * Keep rbx | | | |V00i| | | | | | 66.#56 rax Kill Keep rax | | | | | | | | | | 66.#57 rcx Kill Keep rcx | | | | | | | | | | 66.#58 rdx Kill Keep rdx | | | | | | | | | | 66.#59 r8 Kill Keep r8 | | | | | | | | | | 66.#60 r9 Kill Keep r9 | | | | | | | | | | 66.#61 r10 Kill Keep r10 | | | | | | | | | | 66.#62 r11 Kill Keep r11 | | | | | | | | | | 66.#63 rax Fixd Keep rax | | | | | | | | | | 66.#64 I13 Def Alloc rax |I13a| | | | | | | | | [000082] 67.#65 I13 Use * Keep rax |I13i| | | | | | | | | 68.#66 V07 Def Alloc rax |V07a| | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 69.#67 BB6 PredBB4 |V07a| | | | | | | | | [000030] 75.#68 V07 Use * Keep rax |V07i| | | | | | | | | 76.#69 I14 Def Alloc rcx | |I14a| | | | | | | | [000090] 79.#70 I14 Use * Keep rcx | |I14i| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 83.#71 BB8 PredBB6 | | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | --------------------------------------------+----+----+----+----+----+----+----+----+----+ 89.#72 BB7 PredBB6 | | | | | | | | | | [000092] 94.#73 C15 Def Alloc rcx | |C15a| | | | | | | | [000126] 95.#74 rcx Fixd Keep rcx | |C15a| | | | | | | | 95.#75 C15 Use * Keep rcx | |C15i| | | | | | | | 96.#76 rcx Fixd Keep rcx | | | | | | | | | | 96.#77 I16 Def Alloc rcx | |I16a| | | | | | | | [000093] 97.#78 rcx Fixd Keep rcx | |I16a| | | | | | | | 97.#79 I16 Use * Keep rcx | |I16i| | | | | | | | 98.#80 rax Kill Keep rax | | | | | | | | | | 98.#81 rcx Kill Keep rcx | | | | | | | | | | 98.#82 rdx Kill Keep rdx | | | | | | | | | | 98.#83 r8 Kill Keep r8 | | | | | | | | | | 98.#84 r9 Kill Keep r9 | | | | | | | | | | 98.#85 r10 Kill Keep r10 | | | | | | | | | | 98.#86 r11 Kill Keep r11 | | | | | | | | | | 98.#87 rax Fixd Keep rax | | | | | | | | | | 98.#88 I17 Def Alloc rax |I17a| | | | | | | | | [000094] 99.#89 I17 Use * Keep rax |I17i| | | | | | | | | 100.#90 V11 Def Alloc rbx | | | |V11a| | | | | | [000127] 103.#91 rcx Fixd Keep rcx | | | |V11a| | | | | | 103.#92 V11 Use Copy rcx | |V11a| |V11a| | | | | | 104.#93 rcx Fixd Keep rcx | | | |V11a| | | | | | 104.#94 I18 Def Alloc rcx | |I18a| |V11a| | | | | | [000096] 105.#95 rcx Fixd Keep rcx | |I18a| |V11a| | | | | | 105.#96 I18 Use * Keep rcx | |I18i| |V11a| | | | | | 106.#97 rax Kill Keep rax | | | |V11a| | | | | | 106.#98 rcx Kill Keep rcx | | | |V11a| | | | | | 106.#99 rdx Kill Keep rdx | | | |V11a| | | | | | 106.#100 r8 Kill Keep r8 | | | |V11a| | | | | | 106.#101 r9 Kill Keep r9 | | | |V11a| | | | | | 106.#102 r10 Kill Keep r10 | | | |V11a| | | | | | 106.#103 r11 Kill Keep r11 | | | |V11a| | | | | | [000128] 111.#104 rcx Fixd Keep rcx | | | |V11a| | | | | | 111.#105 V11 Use * Copy rcx | |V11i| |V11i| | | | | | 112.#106 rcx Fixd Keep rcx | | | | | | | | | | 112.#107 I19 Def Alloc rcx | |I19a| | | | | | | | [000098] 113.#108 rcx Fixd Keep rcx | |I19a| | | | | | | | 113.#109 I19 Use * Keep rcx | |I19i| | | | | | | | 114.#110 rax Kill Keep rax | | | | | | | | | | 114.#111 rcx Kill Keep rcx | | | | | | | | | | 114.#112 rdx Kill Keep rdx | | | | | | | | | | 114.#113 r8 Kill Keep r8 | | | | | | | | | | 114.#114 r9 Kill Keep r9 | | | | | | | | | | 114.#115 r10 Kill Keep r10 | | | | | | | | | | 114.#116 r11 Kill Keep r11 | | | | | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 4 Total Reg Cand Vars: 3 Total number of Intervals: 19 Total number of RefPositions: 116 Total Number of spill temps created: 0 .......... BB01 [ 100.00]: COVERS = 1, REG_ORDER = 1 BB04 [ 40.00]: OWN_PREFERENCE = 1 BB05 [ 10.00]: THIS_ASSIGNED = 1 BB06 [ 100.00]: BEST_FIT = 1 BB07 [ 0.00]: REG_ORDER = 1 .......... Total SpillCount : 0 Weighted: 0.000000 Total CopyReg : 0 Weighted: 0.000000 Total ResolutionMovs : 0 Weighted: 0.000000 Total SplitEdges : 0 Weighted: 0.000000 .......... Total THIS_ASSIGNED [# 3] : 1 Weighted: 10.000000 Total COVERS [# 4] : 1 Weighted: 100.000000 Total OWN_PREFERENCE [# 5] : 1 Weighted: 40.000000 Total BEST_FIT [#11] : 1 Weighted: 100.000000 Total REG_ORDER [#13] : 2 Weighted: 100.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. rcx = CNS_INT(h) '"Running Main..."' N007. rcx = PUTARG_REG; rcx N009. CALL ; rcx N011. IL_OFFSET INLRT @ 0x00A[E-] N013. rbx = CNS_INT(h) 0x40000000004230c0 ftn * N015. V00(rbx); rbx N017. IL_OFFSET INLRT @ 0x023[E-] N019. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N021. V00(rbx) N023. CNS_INT 2 N025. TEST ; rbx N027. JCC cond=UNE Var=Reg end of BB01: V00=rbx BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB04: V00=rbx N031. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N033. rcx = CNS_INT 85 N035. rcx = PUTARG_REG; rcx N037. V00(rbx*) N039. rax = CALL ind ; rcx,rbx* * N041. V07(rax); rax Var=Reg end of BB04: V07=rax BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB05: V00=rbx N045. IL_OFFSET INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] N047. V00(rbx) N049. STK = LEA(b+6) ; rbx N051. rcx = IND ; STK N053. rcx = PUTARG_REG; rcx N055. rdx = CNS_INT 85 N057. rdx = PUTARG_REG; rdx N059. V00(rbx*) N061. STK = LEA(b+-2); rbx* N063. STK = IND ; STK N065. rax = CALL ind ; rcx,rdx,STK * N067. V07(rax); rax Var=Reg end of BB05: V07=rax BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} ===== Predecessor for variable locations: BB04 Var=Reg beg of BB06: V07=rax N071. IL_OFFSET INL05 @ 0x000[E-] <- INLRT @ ??? N073. V07(rax*) N075. rcx = CAST ; rax* N077. CNS_INT 85 N079. CMP ; rcx N081. JCC cond=UNE Var=Reg end of BB06: none BB08 [0018] [000..044) (return), preds={BB06} succs={} ===== Predecessor for variable locations: BB06 Var=Reg beg of BB08: none N085. IL_OFFSET INLRT @ 0x043[E-] N087. RETURN Var=Reg end of BB08: none BB07 [0017] [000..000) (throw), preds={BB06} succs={} ===== Predecessor for variable locations: BB06 Var=Reg beg of BB07: none N091. IL_OFFSET INL05 @ 0x004[E-] <- INLRT @ ??? N093. rcx = CNS_INT(h) 0x4000000000421f70 N095. rcx = PUTARG_REG; rcx N097. rax = CALL help; rcx * N099. V11(rbx); rax N101. V11(rbx) N103. rcx = PUTARG_REG; rbx N105. CALL ; rcx N107. IL_OFFSET INL05 @ 0x009[--] <- INLRT @ ??? N109. V11(rbx*) N111. rcx = PUTARG_REG; rbx* N113. CALL help; rcx Var=Reg end of BB07: 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} N003 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' REG rcx $140 /--* t100 ref N007 (???,???) [000122] ----------- t122 = * PUTARG_REG ref REG rcx /--* t122 ref arg0 in rcx N009 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N011 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA N013 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn REG rbx $180 /--* t37 long N015 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 rbx REG rbx $VN.Void N017 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA N019 (???,???) [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N021 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 rbx REG rbx $200 N023 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 REG NA $46 /--* t63 int +--* t62 int N025 ( 5, 5) [000066] -------N--- * TEST void REG NA N027 ( 7, 7) [000067] ----------- JCC void cond=UNE REG NA ------------ BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} N031 (???,???) [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N033 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 REG rcx $44 /--* t110 int N035 (???,???) [000123] ----------- t123 = * PUTARG_REG int REG rcx N037 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt N039 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int REG rax $c2 /--* t69 int N041 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 rax REG rax $VN.Void ------------ BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} N045 (???,???) [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA N047 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 rbx REG rbx $180 /--* t77 long N049 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long REG NA /--* t76 long N051 ( 4, 4) [000081] n---GO----- t81 = * IND long REG rcx /--* t81 long N053 (???,???) [000124] ----GO----- t124 = * PUTARG_REG long REG rcx N055 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 REG rdx $44 /--* t111 int N057 (???,???) [000125] ----------- t125 = * PUTARG_REG int REG rdx N059 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t72 long N061 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long REG NA /--* t74 long N063 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt N065 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int REG rax $c1 /--* t83 int N067 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 rax REG rax $VN.Void ------------ BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} N071 (???,???) [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? REG NA N073 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 rax (last use) REG rax $280 /--* t58 int N075 ( 2, 3) [000030] ----------- t30 = * CAST long <- int REG rcx $300 N077 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 REG NA $1c3 /--* t30 long +--* t28 long N079 ( 4, 5) [000090] -------N--- * CMP void REG NA N081 ( 6, 7) [000091] ----------- JCC void cond=UNE REG NA ------------ BB08 [0018] [000..044) (return), preds={BB06} succs={} N085 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] REG NA N087 ( 0, 0) [000032] ----------- RETURN void REG NA $VN.Void ------------ BB07 [0017] [000..000) (throw), preds={BB06} succs={} N091 (???,???) [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? REG NA N093 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 REG rcx $184 /--* t92 long N095 (???,???) [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx N097 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST REG rax $380 /--* t93 ref N099 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 rbx REG rbx $VN.Void N101 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 rbx REG rbx $380 /--* t95 ref N103 (???,???) [000127] ----------- t127 = * PUTARG_REG ref REG rcx /--* t127 ref this in rcx N105 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void N107 (???,???) [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? REG NA N109 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 rbx (last use) REG rbx $380 /--* t97 ref N111 (???,???) [000128] ----------- t128 = * PUTARG_REG ref REG rcx /--* t128 ref arg0 in rcx N113 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $382 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Place 'align' instructions *************** In placeLoopAlignInstructions() Identifying loops in DFS tree with following reverse post order: RPO -> BB [pre, post] 00 -> BB01[0, 5] 01 -> BB05[5, 4] 02 -> BB04[1, 3] 03 -> BB06[2, 2] 04 -> BB07[4, 1] 05 -> BB08[3, 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..043)-> BB05,BB04 ( cond ) i LIR hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB01 Modified regs: [rax rcx rdx rbx r8-r11] Callee-saved registers pushed: 1 [rbx] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Assign V03 OutArgs, size=32, stkOffs=-0x30 --- delta bump 8 for RA --- delta bump 40 for RSP frame --- virtual stack offset to actual stack offset delta is 48 -- V03 was -48, now 0 ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 5, 2.60) long -> rbx single-def ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref ;* V02 loc2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V07 tmp4 [V07,T00] ( 3, 3 ) int -> rax "calli" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 tmp8 [V11,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ;* V12 tmp9 [V12,T02] ( 0, 0 ) int -> zero-ref single-def "field V02.Field (fldOffset=0x0)" P-INDEP ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V04.Field (fldOffset=0x0)" P-INDEP ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V06.Field (fldOffset=0x0)" P-INDEP ; ; Lcl frame size = 32 Created: G_M44239_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} Mark labels for codegen BB01 : first block BB05 : branch target BB06 : branch target BB07 : branch target *************** After genMarkLabelsForCodegen() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..043)-> BB05,BB04 ( cond ) i LIR label hascall gcsafe BB04 [0013] 1 BB01 0.40 [02C..02D)-> BB06 (always) i LIR internal hascall gcsafe BB05 [0014] 1 BB01 0.10 [02C..02D)-> BB06 (always) i LIR internal label hascall gcsafe q BB06 [0011] 2 BB04,BB05 1 [000..043)-> BB07,BB08 ( cond ) i LIR label BB08 [0018] 1 BB06 1 [000..044) (return) i LIR BB07 [0017] 1 BB06 0 [000..000) (throw ) i LIR rare internal label hascall gcsafe newobj ---------------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB01 [0000] [000..043) -> BB05,BB04 (cond), preds={} succs={BB04,BB05} flags=0x00000000.10088011: i LIR label hascall gcsafe BB01 IN (0)={ } + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap Recording Var Locations at start of BB01 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 0000000000000000 {} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB01: Label: G_M44239_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB01, IL range [000..043) Added IP mapping: 0x0000 STACK_EMPTY (G_M44239_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N005 ( 1, 4) [000100] H---------- t100 = CNS_INT(h) ref '"Running Main..."' REG rcx $140 Mapped BB01 to G_M44239_IG02 IN0001: lea rcx, gword ptr [(reloc 0x4000000000423118)] ; '"Running Main..."' GC regs: 0000 {} => 0002 {rcx} /--* t100 ref Generating: N007 (???,???) [000122] ----------- t122 = * PUTARG_REG ref REG rcx GC regs: 0002 {rcx} => 0000 {} GC regs: 0000 {} => 0002 {rcx} /--* t122 ref arg0 in rcx Generating: N009 ( 15, 10) [000001] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 0002 {rcx} => 0000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN0002: call System.Console:WriteLine(System.String) Added IP mapping: 0x000A STACK_EMPTY (G_M44239_IG02,ins#2,ofs#12) Generating: N011 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA Generating: N013 ( 1, 4) [000037] H---------- t37 = CNS_INT(h) long 0x40000000004230c0 ftn REG rbx $180 IN0003: lea rbx, [(reloc 0x40000000004230c0)] /--* t37 long Generating: N015 ( 1, 4) [000004] DA--------- * STORE_LCL_VAR long V00 loc0 d:2 rbx REG rbx $VN.Void V00 in reg rbx is becoming live [000004] Live regs: 0000000000000000 {} + {rbx} => 0000000000000008 {rbx} Debug: New V00 debug range: first Live vars after [000004]: {} +{V00} => {V00} Added IP mapping: 0x0023 STACK_EMPTY (G_M44239_IG02,ins#3,ofs#19) Generating: N017 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA Added IP mapping: 0x002C STACK_EMPTY (G_M44239_IG02,ins#3,ofs#19) Generating: N019 (???,???) [000115] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA Generating: N021 ( 1, 1) [000063] ----------- t63 = LCL_VAR int V00 loc0 u:2 rbx REG rbx $200 Generating: N023 ( 1, 1) [000062] -c--------- t62 = CNS_INT int 2 REG NA $46 /--* t63 int +--* t62 int Generating: N025 ( 5, 5) [000066] -------N--- * TEST void REG NA IN0004: test bl, 2 Generating: N027 ( 7, 7) [000067] ----------- JCC void cond=UNE REG NA IN0005: jne L_M44239_BB05 Variable Live Range History Dump for BB01 V00 loc0: rbx [(G_M44239_IG02,ins#3,ofs#19), ...] =============== Generating BB04 [0013] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} flags=0x00000000.10080031: i LIR internal hascall gcsafe BB04 IN (1)={ V00} + ByrefExposed + GcHeap OUT(1)={V07 } + ByrefExposed + GcHeap Recording Var Locations at start of BB04 V00(rbx) Liveness not changing: 0000000000000002 {V00} Live regs: 0000000000000000 {} + {rbx} => 0000000000000008 {rbx} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB04: Adding label due to BB weight difference: BBJ_COND BB01 with weight 100 different from BB04 with weight 40 Saved: G_M44239_IG02: ; offs=0x000000, size=0x001C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref Created: G_M44239_IG03: ; offs=0x00001C, size=0x0000, bbWeight=0.40, gcrefRegs=0000 {} Label: G_M44239_IG03, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB04, IL range [02C..02D) Added IP mapping: NO_MAP (G_M44239_IG03,ins#0,ofs#0) label Added IP mapping: 0x002C STACK_EMPTY (G_M44239_IG03,ins#0,ofs#0) label Generating: N031 (???,???) [000116] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA Generating: N033 ( 1, 1) [000110] ----------- t110 = CNS_INT int 85 REG rcx $44 Mapped BB04 to G_M44239_IG03 IN0006: mov ecx, 85 /--* t110 int Generating: N035 (???,???) [000123] ----------- t123 = * PUTARG_REG int REG rcx Generating: N037 ( 1, 1) [000071] ----------- t71 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t123 int arg0 in rcx +--* t71 long calli tgt Generating: N039 ( 19, 5) [000069] --CXG------ t69 = * CALL ind int REG rax $c2 V00 in reg rbx is becoming dead [000071] Live regs: 0000000000000008 {rbx} - {rbx} => 0000000000000000 {} Debug: Closing V00 debug range. Live vars after [000071]: {V00} -{V00} => {} Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN0007: call rbx /--* t69 int Generating: N041 ( 19, 5) [000068] DACXG------ * STORE_LCL_VAR int V07 tmp4 d:3 rax REG rax $VN.Void V07 in reg rax is becoming live [000068] Live regs: 0000000000000000 {} + {rax} => 0000000000000001 {rax} Live vars after [000068]: {} +{V07} => {V07} IN0008: jmp L_M44239_BB06 Variable Live Range History Dump for BB04 V00 loc0: rbx [(G_M44239_IG02,ins#3,ofs#19), (G_M44239_IG03,ins#1,ofs#5)] =============== Generating BB05 [0014] [02C..02D) -> BB06 (always), preds={BB01} succs={BB06} flags=0x00000100.10088031: i LIR internal label hascall gcsafe q BB05 IN (1)={ V00} + ByrefExposed + GcHeap OUT(1)={V07 } + ByrefExposed + GcHeap Recording Var Locations at start of BB05 V00(rbx) Change life 0000000000000001 {V07} -> 0000000000000002 {V00} V07 in reg rax is becoming dead [------] Live regs: (unchanged) 0000000000000000 {} V00 in reg rbx is becoming live [------] Live regs: 0000000000000000 {} + {rbx} => 0000000000000008 {rbx} Debug: New V00 debug range: new var or location Live regs: (unchanged) 0000000000000008 {rbx} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB05: Saved: G_M44239_IG03: ; offs=0x00001C, size=0x000C, bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref Created: G_M44239_IG04: ; offs=0x000028, size=0x0000, bbWeight=0.10, gcrefRegs=0000 {} Label: G_M44239_IG04, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB05, IL range [02C..02D) Added IP mapping: NO_MAP (G_M44239_IG04,ins#0,ofs#0) label Added IP mapping: 0x002C STACK_EMPTY (G_M44239_IG04,ins#0,ofs#0) label Generating: N045 (???,???) [000117] ----------- IL_OFFSET void INL04 @ 0x007[E-] <- INLRT @ 0x02C[E-] REG NA Generating: N047 ( 1, 1) [000077] ----------- t77 = LCL_VAR long V00 loc0 u:2 rbx REG rbx $180 /--* t77 long Generating: N049 ( 2, 2) [000076] -c--------- t76 = * LEA(b+6) long REG NA /--* t76 long Generating: N051 ( 4, 4) [000081] n---GO----- t81 = * IND long REG rcx Mapped BB05 to G_M44239_IG04 IN0009: mov rcx, qword ptr [rbx+0x06] /--* t81 long Generating: N053 (???,???) [000124] ----GO----- t124 = * PUTARG_REG long REG rcx Generating: N055 ( 1, 1) [000111] ----------- t111 = CNS_INT int 85 REG rdx $44 IN000a: mov edx, 85 /--* t111 int Generating: N057 (???,???) [000125] ----------- t125 = * PUTARG_REG int REG rdx Generating: N059 ( 1, 1) [000072] ----------- t72 = LCL_VAR long V00 loc0 u:2 rbx (last use) REG rbx $180 /--* t72 long Generating: N061 ( 2, 2) [000074] -c--------- t74 = * LEA(b+-2) long REG NA /--* t74 long Generating: N063 ( 4, 4) [000075] nc--GO----- t75 = * IND long REG NA /--* t124 long gctx in rcx +--* t125 int arg1 in rdx +--* t75 long calli tgt Generating: N065 ( 26, 13) [000083] --CXGO----- t83 = * CALL ind int REG rax $c1 V00 in reg rbx is becoming dead [000072] Live regs: 0000000000000008 {rbx} - {rbx} => 0000000000000000 {} Debug: Closing V00 debug range. Live vars after [000072]: {V00} -{V00} => {} Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN000b: call [rbx-0x02] /--* t83 int Generating: N067 ( 26, 13) [000082] DACXGO----- * STORE_LCL_VAR int V07 tmp4 d:2 rax REG rax $VN.Void V07 in reg rax is becoming live [000082] Live regs: 0000000000000000 {} + {rax} => 0000000000000001 {rax} Live vars after [000082]: {} +{V07} => {V07} Variable Live Range History Dump for BB05 V00 loc0: rbx [(G_M44239_IG03,ins#3,ofs#12), (G_M44239_IG04,ins#2,ofs#9)] =============== Generating BB06 [0011] [000..043) -> BB07,BB08 (cond), preds={BB04,BB05} succs={BB08,BB07} flags=0x00000000.00008011: i LIR label BB06 IN (1)={V07} + ByrefExposed + GcHeap OUT(0)={ } + ByrefExposed + GcHeap Recording Var Locations at start of BB06 V07(rax) Liveness not changing: 0000000000000001 {V07} Live regs: 0000000000000000 {} + {rax} => 0000000000000001 {rax} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB06: Saved: G_M44239_IG04: ; offs=0x000028, size=0x000C, bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref Created: G_M44239_IG05: ; offs=0x000034, size=0x0000, bbWeight=1, gcrefRegs=0000 {} Label: G_M44239_IG05, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB06, IL range [000..043) Generating: N071 (???,???) [000118] ----------- IL_OFFSET void INL05 @ 0x000[E-] <- INLRT @ ??? REG NA Generating: N073 ( 1, 1) [000058] ----------- t58 = LCL_VAR int V07 tmp4 u:4 rax (last use) REG rax $280 /--* t58 int Generating: N075 ( 2, 3) [000030] ----------- t30 = * CAST long <- int REG rcx $300 V07 in reg rax is becoming dead [000058] Live regs: 0000000000000001 {rax} - {rax} => 0000000000000000 {} Live vars after [000058]: {V07} -{V07} => {} Mapped BB06 to G_M44239_IG05 IN000c: movsxd rcx, eax Generating: N077 ( 1, 1) [000028] -c--------- t28 = CNS_INT long 85 REG NA $1c3 /--* t30 long +--* t28 long Generating: N079 ( 4, 5) [000090] -------N--- * CMP void REG NA IN000d: cmp rcx, 85 Generating: N081 ( 6, 7) [000091] ----------- JCC void cond=UNE REG NA IN000e: jne L_M44239_BB07 Variable Live Range History Dump for BB06 ..None.. =============== Generating BB08 [0018] [000..044) (return), preds={BB06} succs={} flags=0x00000000.00000011: i LIR BB08 IN (0)={} OUT(0)={} Recording Var Locations at start of BB08 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 0000000000000000 {} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB08: Scope info: begin block BB08, IL range [000..044) Added IP mapping: 0x0043 STACK_EMPTY (G_M44239_IG05,ins#3,ofs#13) label Generating: N085 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x043[E-] REG NA Generating: N087 ( 0, 0) [000032] ----------- RETURN void REG NA $VN.Void Added IP mapping: EPILOG (G_M44239_IG05,ins#3,ofs#13) label Reserving epilog IG for block BB08 Saved: G_M44239_IG05: ; offs=0x000034, size=0x000D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref Created: G_M44239_IG06: ; offs=0x000041, size=0x0000, bbWeight=1, gcrefRegs=0000 {} Created: G_M44239_IG07: ; offs=0x000141, size=0x0000, bbWeight=1, gcrefRegs=0000 {}, epilog *************** After placeholder IG creation G_M44239_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG G_M44239_IG02: ; offs=0x000000, size=0x001C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref G_M44239_IG03: ; offs=0x00001C, size=0x000C, bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref G_M44239_IG04: ; offs=0x000028, size=0x000C, bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref G_M44239_IG05: ; offs=0x000034, size=0x000D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref G_M44239_IG06: ; epilog placeholder, next placeholder=, BB08 [0018], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} G_M44239_IG07: ; offs=0x000141, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Current IG Variable Live Range History Dump for BB08 ..None.. =============== Generating BB07 [0017] [000..000) (throw), preds={BB06} succs={} flags=0x00000000.1088a031: i LIR rare internal label hascall gcsafe newobj BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} Recording Var Locations at start of BB07 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 0000000000000000 {} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M44239_BB07: Label: G_M44239_IG07, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB07, IL range [000..000) Added IP mapping: NO_MAP (G_M44239_IG07,ins#0,ofs#0) label Generating: N091 (???,???) [000120] ----------- IL_OFFSET void INL05 @ 0x004[E-] <- INLRT @ ??? REG NA Generating: N093 ( 1, 4) [000092] H---------- t92 = CNS_INT(h) long 0x4000000000421f70 REG rcx $184 Mapped BB07 to G_M44239_IG07 IN000f: lea rcx, [(reloc 0x4000000000421f70)] ; System.Exception /--* t92 long Generating: N095 (???,???) [000126] ----------- t126 = * PUTARG_REG long REG rcx /--* t126 long arg0 in rcx Generating: N097 ( 15, 10) [000093] --C-------- t93 = * CALL help ref CORINFO_HELP_NEWSFAST REG rax $380 Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN0010: call CORINFO_HELP_NEWSFAST GC regs: 0000 {} => 0001 {rax} /--* t93 ref Generating: N099 ( 19, 13) [000094] DAC-------- * STORE_LCL_VAR ref V11 tmp8 d:2 rbx REG rbx $VN.Void GC regs: 0001 {rax} => 0000 {} IN0011: mov rbx, rax V11 in reg rbx is becoming live [000094] Live regs: 0000000000000000 {} + {rbx} => 0000000000000008 {rbx} Live vars after [000094]: {} +{V11} => {V11} GC regs: 0000 {} => 0008 {rbx} Generating: N101 ( 3, 2) [000095] ----------- t95 = LCL_VAR ref V11 tmp8 u:2 rbx REG rbx $380 /--* t95 ref Generating: N103 (???,???) [000127] ----------- t127 = * PUTARG_REG ref REG rcx IN0012: mov rcx, rbx GC regs: 0008 {rbx} => 000A {rcx rbx} /--* t127 ref this in rcx Generating: N105 ( 17, 8) [000096] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void GC regs: 000A {rcx rbx} => 0008 {rbx} Call: GCvars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {} IN0013: call System.Exception:.ctor():this Generating: N107 (???,???) [000121] ----------- IL_OFFSET void INL05 @ 0x009[--] <- INLRT @ ??? REG NA Generating: N109 ( 3, 2) [000097] ----------- t97 = LCL_VAR ref V11 tmp8 u:2 rbx (last use) REG rbx $380 /--* t97 ref Generating: N111 (???,???) [000128] ----------- t128 = * PUTARG_REG ref REG rcx V11 in reg rbx is becoming dead [000097] Live regs: 0000000000000008 {rbx} - {rbx} => 0000000000000000 {} Live vars after [000097]: {V11} -{V11} => {} GC regs: 0008 {rbx} => 0000 {} IN0014: mov rcx, rbx GC regs: 0000 {} => 0002 {rcx} /--* t128 ref arg0 in rcx Generating: N113 ( 17, 8) [000098] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $382 GC regs: 0002 {rcx} => 0000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN0015: call CORINFO_HELP_THROW IN0016: int3 Variable Live Range History Dump for BB07 ..None.. Liveness not changing: 0000000000000000 {} # compCycleEstimate = 128, compSizeEstimate = 78 punning:Main() ; Final local variable assignments ; ; V00 loc0 [V00,T01] ( 5, 2.60) long -> rbx single-def ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref ;* V02 loc2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V07 tmp4 [V07,T00] ( 3, 3 ) int -> rax "calli" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V11 tmp8 [V11,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ;* V12 tmp9 [V12,T02] ( 0, 0 ) int -> zero-ref single-def "field V02.Field (fldOffset=0x0)" P-INDEP ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V04.Field (fldOffset=0x0)" P-INDEP ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V06.Field (fldOffset=0x0)" P-INDEP ; ; Lcl frame size = 32 *************** Before prolog / epilog generation G_M44239_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG G_M44239_IG02: ; offs=0x000000, size=0x001C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref G_M44239_IG03: ; offs=0x00001C, size=0x000C, bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref G_M44239_IG04: ; offs=0x000028, size=0x000C, bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref G_M44239_IG05: ; offs=0x000034, size=0x000D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref G_M44239_IG06: ; epilog placeholder, next placeholder=, BB08 [0018], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} G_M44239_IG07: ; offs=0x000141, size=0x0000, bbWeight=0, gcrefRegs=0000 {}, BB07 [0017] <-- Current IG Recording Var Locations at start of BB01 Saved: G_M44239_IG07: ; offs=0x000141, size=0x0020, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0017], gcvars, byref *************** In genFnProlog() Added IP mapping to front: PROLOG (G_M44239_IG01,ins#0,ofs#0) label __prolog: IN0017: push rbx IN0018: sub rsp, 32 *************** In genEnregisterIncomingStackArgs() Saved: G_M44239_IG01: ; offs=0x000000, size=0x0005, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0000 {} IN0019: add rsp, 32 IN001a: pop rbx IN001b: ret Saved: G_M44239_IG06: ; offs=0x000041, size=0x0006, bbWeight=1, epilog, nogc, extend 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs *************** After prolog / epilog generation G_M44239_IG01: ; func=00, offs=0x000000, size=0x0005, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG G_M44239_IG02: ; offs=0x000005, size=0x001C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref G_M44239_IG03: ; offs=0x000021, size=0x000C, bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref G_M44239_IG04: ; offs=0x00002D, size=0x000C, bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref G_M44239_IG05: ; offs=0x000039, size=0x000D, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref G_M44239_IG06: ; offs=0x000046, size=0x0006, bbWeight=1, epilog, nogc, extend G_M44239_IG07: ; offs=0x00004C, size=0x0020, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0017], gcvars, byref *************** In emitRemoveJumpToNextInst() Emitter Jump List: IG02 IN0005 jne[6] -> IG04 IG03 IN0008 jmp[5] -> IG05 ; removal candidate ; after call before epilog IG05 IN000e jne[6] -> IG07 total jump count: 3 IG03 IN0008 does not jump to the next instruction group, keeping. emitRemoveJumpToNextInst removed no unconditional jumps *************** In emitJumpDistBind() Emitter Jump List: IG02 IN0005 jne[6] -> IG04 IG03 IN0008 jmp[5] -> IG05 ; after call before epilog IG05 IN000e jne[6] -> IG07 total jump count: 3 Binding: IN0005: 000000 jne L_M44239_BB05 Binding L_M44239_BB05 to G_M44239_IG04 Estimate of fwd jump [8437D29C/005]: 001B -> 002D = 0010 Shrinking jump [8437D29C/005] Adjusted offset of BB03 from 0021 to 001D Binding: IN0008: 000000 jmp L_M44239_BB06 Binding L_M44239_BB06 to G_M44239_IG05 Estimate of fwd jump [8437D664/008]: 0024 -> 0035 = 000F Shrinking jump [8437D664/008] Adjusted offset of BB04 from 002D to 0026 Adjusted offset of BB05 from 0039 to 0032 Binding: IN000e: 000000 jne L_M44239_BB07 Binding L_M44239_BB07 to G_M44239_IG07 Estimate of fwd jump [8437DBDC/014]: 0039 -> 0045 = 000A Shrinking jump [8437DBDC/014] Adjusted offset of BB06 from 0046 to 003B Adjusted offset of BB07 from 004C to 0041 Total shrinkage = 11, min extra jump size = 4294967295 *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0x61 bytes Cold code size = 0x0 bytes reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8) *************** In emitEndCodeGen() Converting emitMaxStackDepth from bytes (0) to elements (0) *************************************************************************** Instructions as they come out of the scheduler G_M44239_IG01: ; offs=0x000000, size=0x0005, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG IN0017: 000000 push rbx IN0018: 000001 sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M44239_IG02: ; offs=0x000005, size=0x0018, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref, isz recordRelocation: 000001D6FC1689A8 (rw: 000001D6FC1689A8) => 4000000000423118, type 16 (IMAGE_REL_BASED_DISP32), delta 0 IN0001: 000005 lea rcx, gword ptr [(reloc 0x4000000000423118)] ; '"Running Main..."' ; gcrRegs +[rcx] recordRelocation: 000001D6FC1689AD (rw: 000001D6FC1689AD) => 4000000000423020, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0002: 00000C call System.Console:WriteLine(System.String) ; gcrRegs -[rcx] ; gcr arg pop 0 recordRelocation: 000001D6FC1689B4 (rw: 000001D6FC1689B4) => 40000000004230C0, type 16 (IMAGE_REL_BASED_DISP32), delta 0 IN0003: 000011 lea rbx, [(reloc 0x40000000004230c0)] IN0004: 000018 test bl, 2 IN0005: 00001B jne SHORT G_M44239_IG04 ;; size=24 bbWeight=1 PerfScore 3.25 G_M44239_IG03: ; offs=0x00001D, size=0x0009, bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref, isz IN0006: 00001D mov ecx, 85 IN0007: 000022 call rbx ; gcr arg pop 0 IN0008: 000024 jmp SHORT G_M44239_IG05 ;; size=9 bbWeight=0.40 PerfScore 2.10 G_M44239_IG04: ; offs=0x000026, size=0x000C, bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref IN0009: 000026 mov rcx, qword ptr [rbx+0x06] IN000a: 00002A mov edx, 85 IN000b: 00002F call [rbx-0x02] ; gcr arg pop 0 ;; size=12 bbWeight=0.10 PerfScore 0.53 G_M44239_IG05: ; offs=0x000032, size=0x0009, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref, isz IN000c: 000032 movsxd rcx, eax IN000d: 000035 cmp rcx, 85 IN000e: 000039 jne SHORT G_M44239_IG07 ;; size=9 bbWeight=1 PerfScore 1.50 G_M44239_IG06: ; offs=0x00003B, size=0x0006, bbWeight=1, epilog, nogc, extend IN0019: 00003B add rsp, 32 IN001a: 00003F pop rbx IN001b: 000040 ret ;; size=6 bbWeight=1 PerfScore 1.75 G_M44239_IG07: ; offs=0x000041, size=0x0020, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0017], gcvars, byref recordRelocation: 000001D6FC1689E4 (rw: 000001D6FC1689E4) => 4000000000421F70, type 16 (IMAGE_REL_BASED_DISP32), delta 0 IN000f: 000041 lea rcx, [(reloc 0x4000000000421f70)] ; System.Exception recordRelocation: 000001D6FC1689E9 (rw: 000001D6FC1689E9) => 4000000000421EE8, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0010: 000048 call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0 IN0011: 00004D mov rbx, rax ; gcrRegs +[rbx] IN0012: 000050 mov rcx, rbx ; gcrRegs +[rcx] recordRelocation: 000001D6FC1689F4 (rw: 000001D6FC1689F4) => 40000000004230F8, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0013: 000053 call System.Exception:.ctor():this ; gcrRegs -[rax rcx] ; gcr arg pop 0 IN0014: 000058 mov rcx, rbx ; gcrRegs +[rcx] recordRelocation: 000001D6FC1689FC (rw: 000001D6FC1689FC) => 40000000004208E0, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0015: 00005B call CORINFO_HELP_THROW ; gcrRegs -[rcx rbx] ; gcr arg pop 0 IN0016: 000060 int3 ;; size=32 bbWeight=0 PerfScore 0.00 Allocated method code size = 97 , actual size = 97, unused size = 0 ; Total bytes of code 97, prolog size 5, PerfScore 10.38, instruction count 27, allocated bytes for code 97 (MethodHash=5b585330) for method punning:Main() (FullOpts) ; ============================================================ *************** After end code gen, before unwindEmit() G_M44239_IG01: ; func=00, offs=0x000000, size=0x0005, bbWeight=1, PerfScore 1.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG IN0017: 000000 push rbx IN0018: 000001 sub rsp, 32 G_M44239_IG02: ; offs=0x000005, size=0x0018, bbWeight=1, PerfScore 3.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], byref, isz IN0001: 000005 lea rcx, gword ptr [(reloc 0x4000000000423118)] ; '"Running Main..."' IN0002: 00000C call System.Console:WriteLine(System.String) IN0003: 000011 lea rbx, [(reloc 0x40000000004230c0)] IN0004: 000018 test bl, 2 IN0005: 00001B jne SHORT G_M44239_IG04 G_M44239_IG03: ; offs=0x00001D, size=0x0009, bbWeight=0.40, PerfScore 2.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0013], byref, isz IN0006: 00001D mov ecx, 85 IN0007: 000022 call rbx IN0008: 000024 jmp SHORT G_M44239_IG05 G_M44239_IG04: ; offs=0x000026, size=0x000C, bbWeight=0.10, PerfScore 0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0014], byref IN0009: 000026 mov rcx, qword ptr [rbx+0x06] IN000a: 00002A mov edx, 85 IN000b: 00002F call [rbx-0x02] G_M44239_IG05: ; offs=0x000032, size=0x0009, bbWeight=1, PerfScore 1.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0011], byref, isz IN000c: 000032 movsxd rcx, eax IN000d: 000035 cmp rcx, 85 IN000e: 000039 jne SHORT G_M44239_IG07 G_M44239_IG06: ; offs=0x00003B, size=0x0006, bbWeight=1, PerfScore 1.75, epilog, nogc, extend IN0019: 00003B add rsp, 32 IN001a: 00003F pop rbx IN001b: 000040 ret G_M44239_IG07: ; offs=0x000041, size=0x0020, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0017], gcvars, byref IN000f: 000041 lea rcx, [(reloc 0x4000000000421f70)] ; System.Exception IN0010: 000048 call CORINFO_HELP_NEWSFAST IN0011: 00004D mov rbx, rax IN0012: 000050 mov rcx, rbx IN0013: 000053 call System.Exception:.ctor():this IN0014: 000058 mov rcx, rbx IN0015: 00005B call CORINFO_HELP_THROW IN0016: 000060 int3 *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0x000061 (not in unwind data) Version : 1 Flags : 0x00 SizeOfProlog : 0x05 CountOfUnwindCodes: 2 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) allocUnwindInfo(pHotCode=0x000001D6FC1689A0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x61, unwindSize=0x8, pUnwindBlock=0x000001D6842D54B8, funKind=0 (main function)) *************** In genIPmappingGen() IP mapping count : 9 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x00000005 ( STACK_EMPTY ) IL offs 0x000A : 0x00000011 ( STACK_EMPTY ) IL offs 0x002C : 0x00000018 ( STACK_EMPTY ) IL offs 0x002C : 0x0000001D ( STACK_EMPTY ) IL offs 0x002C : 0x00000026 ( STACK_EMPTY ) IL offs 0x0043 : 0x0000003B ( STACK_EMPTY ) IL offs EPILOG : 0x0000003B ( STACK_EMPTY ) IL offs NO_MAP : 0x00000041 ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 2 ; Variable debug info: 2 live ranges, 1 vars for method punning:Main() (V00 loc0) : From 00000018h to 00000022h, in rbx (V00 loc0) : From 00000026h to 0000002Fh, in rbx *************** In gcInfoBlockHdrSave() Set code length to 97. Set ReturnKind to Scalar. Set Outgoing stack arg area size to 32. Register slot id for reg rbx = 0. Set state of slot 0 at instr offset 0x53 to Live. Set state of slot 0 at instr offset 0x58 to Dead. Defining 6 call sites: Offset 0xc, size 5. Offset 0x22, size 2. Offset 0x2f, size 3. Offset 0x48, size 5. Offset 0x53, size 5. Offset 0x5b, size 5. *************** Finishing PHASE Emit GC+EH tables Method code size: 97 Allocations for punning:Main() (MethodHash=5b585330) count: 2022, size: 180768, max = 5488 allocateMemory: 196608, nraUsed: 186664 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6620 | 3.66% ASTNode | 20216 | 11.18% InstDesc | 4560 | 2.52% ImpStack | 408 | 0.23% BasicBlock | 6464 | 3.58% CallArgs | 1600 | 0.89% FlowEdge | 1344 | 0.74% DepthFirstSearch | 248 | 0.14% Loops | 128 | 0.07% TreeStatementList | 0 | 0.00% SiScope | 0 | 0.00% DominatorMemory | 448 | 0.25% LSRA | 8044 | 4.45% LSRA_Interval | 1760 | 0.97% LSRA_RefPosition | 9360 | 5.18% Reachability | 264 | 0.15% SSA | 1416 | 0.78% ValueNumber | 15288 | 8.46% LvaTable | 1596 | 0.88% UnwindInfo | 0 | 0.00% hashBv | 40 | 0.02% bitset | 888 | 0.49% FixedBitVect | 112 | 0.06% Generic | 932 | 0.52% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 40 | 0.02% MemorySsaMap | 40 | 0.02% MemoryPhiArg | 32 | 0.02% CSE | 1624 | 0.90% GC | 2882 | 1.59% CorTailCallInfo | 0 | 0.00% Inlining | 5568 | 3.08% ArrayStack | 0 | 0.00% DebugInfo | 696 | 0.39% DebugOnly | 82131 | 45.43% Codegen | 2448 | 1.35% LoopOpt | 0 | 0.00% LoopClone | 0 | 0.00% LoopUnroll | 0 | 0.00% LoopHoist | 0 | 0.00% Unknown | 483 | 0.27% RangeCheck | 0 | 0.00% CopyProp | 1304 | 0.72% Promotion | 720 | 0.40% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 664 | 0.37% ClassLayout | 224 | 0.12% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 176 | 0.10% Pgo | 0 | 0.00% ****** DONE compiling punning:Main()