From a54bd68b71de044c07a81b1152a758a0415e0aea Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Thu, 26 Feb 2026 21:39:42 +0100 Subject: [PATCH 01/15] Use specialized stelem/ldelem instructions for primitive types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When emitting IL for I_stelem_any and I_ldelem_any with primitive element types (bool, byte, char, int16, int32, etc.), emit the specialized instructions (stelem.i1, stelem.i4, ldelem.u1, etc.) instead of the generic stelem / ldelem form. This matches C# compiler behavior and eliminates 306 ILVerify StackUnexpected errors caused by asymmetric verification type handling in ILVerify (ECMA-335 §I.8.7). ILVerify baseline changes: - FSharp.Core: 32 → 20 errors (Release), 37 → 25 (Debug) - FSharp.Compiler.Service: 125 → 18 (Release ns2.0), 99 → 18 (net10) 98 → 16 (Debug ns2.0), 73 → 16 (Debug net10) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Compiler/AbstractIL/ilwrite.fs | 28 +- .../ForXInArray_ToArray.fs.il.bsl | 73 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 43 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 43 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 37 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 37 +- ...ealInternalSignatureOff.OptimizeOff.il.bsl | 69 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 75 +- ...RealInternalSignatureOn.OptimizeOff.il.bsl | 69 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 75 +- ...ealInternalSignatureOff.OptimizeOff.il.bsl | 69 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 75 +- ...RealInternalSignatureOn.OptimizeOff.il.bsl | 69 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 75 +- ...ealInternalSignatureOff.OptimizeOff.il.bsl | 67 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 73 +- ...RealInternalSignatureOn.OptimizeOff.il.bsl | 67 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 73 +- ...ealInternalSignatureOff.OptimizeOff.il.bsl | 67 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 73 +- ...RealInternalSignatureOn.OptimizeOff.il.bsl | 67 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 73 +- ...ealInternalSignatureOff.OptimizeOff.il.bsl | 95 ++- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 99 +-- ...RealInternalSignatureOn.OptimizeOff.il.bsl | 95 ++- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 99 +-- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 35 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 35 +- ...RealInternalSignatureOff.OptimizeOn.il.bsl | 35 +- ....RealInternalSignatureOn.OptimizeOn.il.bsl | 35 +- ...mings01.fs.RealInternalSignatureOff.il.bsl | 411 +++++---- ...amings01.fs.RealInternalSignatureOn.il.bsl | 347 ++++---- ...alInternalSignatureOff.il.net472.debug.bsl | 72 +- ...InternalSignatureOff.il.net472.release.bsl | 72 +- ...lInternalSignatureOff.il.netcore.debug.bsl | 73 +- ...nternalSignatureOff.il.netcore.release.bsl | 72 +- ...ealInternalSignatureOn.il.net472.debug.bsl | 72 +- ...lInternalSignatureOn.il.net472.release.bsl | 72 +- ...alInternalSignatureOn.il.netcore.debug.bsl | 73 +- ...InternalSignatureOn.il.netcore.release.bsl | 72 +- ...gnatureOff.OptimizeOff.il.net472.debug.bsl | 278 +++--- ...atureOff.OptimizeOff.il.net472.release.bsl | 224 ++--- ...natureOff.OptimizeOff.il.netcore.debug.bsl | 799 ++++++++---------- ...tureOff.OptimizeOff.il.netcore.release.bsl | 224 ++--- ...ignatureOff.OptimizeOn.il.net472.debug.bsl | 214 ++--- ...natureOff.OptimizeOn.il.net472.release.bsl | 214 ++--- ...gnatureOff.OptimizeOn.il.netcore.debug.bsl | 262 +++--- ...atureOff.OptimizeOn.il.netcore.release.bsl | 214 ++--- ...ignatureOn.OptimizeOff.il.net472.debug.bsl | 278 +++--- ...natureOn.OptimizeOff.il.net472.release.bsl | 224 ++--- ...gnatureOn.OptimizeOff.il.netcore.debug.bsl | 799 ++++++++---------- ...atureOn.OptimizeOff.il.netcore.release.bsl | 224 ++--- ...SignatureOn.OptimizeOn.il.net472.debug.bsl | 214 ++--- ...gnatureOn.OptimizeOn.il.net472.release.bsl | 214 ++--- ...ignatureOn.OptimizeOn.il.netcore.debug.bsl | 262 +++--- ...natureOn.OptimizeOn.il.netcore.release.bsl | 214 ++--- ..._FSharp.Compiler.Service_Debug_net10.0.bsl | 65 +- ....Compiler.Service_Debug_netstandard2.0.bsl | 90 +- ...Sharp.Compiler.Service_Release_net10.0.bsl | 87 +- ...ompiler.Service_Release_netstandard2.0.bsl | 113 +-- ...erify_FSharp.Core_Debug_netstandard2.0.bsl | 17 - ...erify_FSharp.Core_Debug_netstandard2.1.bsl | 17 - ...ify_FSharp.Core_Release_netstandard2.0.bsl | 16 - ...ify_FSharp.Core_Release_netstandard2.1.bsl | 16 - 64 files changed, 3855 insertions(+), 4685 deletions(-) diff --git a/src/Compiler/AbstractIL/ilwrite.fs b/src/Compiler/AbstractIL/ilwrite.fs index 40254a11965..7c49ec199d2 100644 --- a/src/Compiler/AbstractIL/ilwrite.fs +++ b/src/Compiler/AbstractIL/ilwrite.fs @@ -1924,6 +1924,26 @@ module Codebuf = | Unaligned2 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x2 | Unaligned4 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x4 + /// Map ILType to ILBasicType for primitive types that have specialized stelem/ldelem instructions. + /// This avoids emitting `stelem ` / `ldelem ` for these types, + /// which triggers ILVerify StackUnexpected errors due to asymmetric verification type handling. + let tryPrimitiveAsBasicType (ilg: ILGlobals) (ty: ILType) = + if isILBoolTy ilg ty then Some DT_U1 + elif isILSByteTy ilg ty then Some DT_I1 + elif isILByteTy ilg ty then Some DT_U1 + elif isILCharTy ilg ty then Some DT_U2 + elif isILInt16Ty ilg ty then Some DT_I2 + elif isILUInt16Ty ilg ty then Some DT_U2 + elif isILInt32Ty ilg ty then Some DT_I4 + elif isILUInt32Ty ilg ty then Some DT_U4 + elif isILInt64Ty ilg ty then Some DT_I8 + elif isILUInt64Ty ilg ty then Some DT_U8 + elif isILSingleTy ilg ty then Some DT_R4 + elif isILDoubleTy ilg ty then Some DT_R8 + elif isILIntPtrTy ilg ty then Some DT_I + elif isILUIntPtrTy ilg ty then Some DT_U + else None + let rec emitInstr cenv codebuf env instr = match instr with | si when isNoArgInstr si -> @@ -2108,14 +2128,18 @@ module Codebuf = | I_stelem_any (shape, ty) -> if (shape = ILArrayShape.SingleDimensional) then - emitTypeInstr cenv codebuf env i_stelem_any ty + match tryPrimitiveAsBasicType cenv.ilg ty with + | Some dt -> emitInstr cenv codebuf env (I_stelem dt) + | None -> emitTypeInstr cenv codebuf env i_stelem_any ty else let args = List.init (shape.Rank+1) (fun i -> if i < shape.Rank then cenv.ilg.typ_Int32 else ty) emitMethodSpecInfoInstr cenv codebuf env i_call ("Set", mkILArrTy(ty, shape), ILCallingConv.Instance, args, ILType.Void, None, []) | I_ldelem_any (shape, ty) -> if (shape = ILArrayShape.SingleDimensional) then - emitTypeInstr cenv codebuf env i_ldelem_any ty + match tryPrimitiveAsBasicType cenv.ilg ty with + | Some dt -> emitInstr cenv codebuf env (I_ldelem dt) + | None -> emitTypeInstr cenv codebuf env i_ldelem_any ty else let args = List.init shape.Rank (fun _ -> cenv.ilg.typ_Int32) emitMethodSpecInfoInstr cenv codebuf env i_call ("Get", mkILArrTy(ty, shape), ILCallingConv.Instance, args, ty, None, []) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ComputedCollections/ForXInArray_ToArray.fs.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ComputedCollections/ForXInArray_ToArray.fs.il.bsl index f0ff9a65a6e..19ba4afb086 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ComputedCollections/ForXInArray_ToArray.fs.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ComputedCollections/ForXInArray_ToArray.fs.il.bsl @@ -1679,32 +1679,32 @@ IL_000e: stloc.1 IL_000f: ldc.i4.0 IL_0010: stloc.2 - IL_0011: br.s IL_0027 + IL_0011: br.s IL_0023 IL_0013: ldloc.1 IL_0014: ldloc.2 IL_0015: ldloc.0 IL_0016: ldloc.2 - IL_0017: ldelem [runtime]System.Boolean - IL_001c: stloc.3 - IL_001d: ldloc.3 - IL_001e: brfalse.s IL_0020 + IL_0017: ldelem.u1 + IL_0018: stloc.3 + IL_0019: ldloc.3 + IL_001a: brfalse.s IL_001c - IL_0020: ldc.i4.0 - IL_0021: nop - IL_0022: stelem.i4 + IL_001c: ldc.i4.0 + IL_001d: nop + IL_001e: stelem.i4 + IL_001f: ldloc.2 + IL_0020: ldc.i4.1 + IL_0021: add + IL_0022: stloc.2 IL_0023: ldloc.2 - IL_0024: ldc.i4.1 - IL_0025: add - IL_0026: stloc.2 - IL_0027: ldloc.2 - IL_0028: ldloc.1 - IL_0029: ldlen - IL_002a: conv.i4 - IL_002b: blt.s IL_0013 + IL_0024: ldloc.1 + IL_0025: ldlen + IL_0026: conv.i4 + IL_0027: blt.s IL_0013 - IL_002d: ldloc.1 - IL_002e: ret + IL_0029: ldloc.1 + IL_002a: ret } .method public static int32[] 'for true | _ in ...'() cil managed @@ -1724,32 +1724,32 @@ IL_000e: stloc.1 IL_000f: ldc.i4.0 IL_0010: stloc.2 - IL_0011: br.s IL_0027 + IL_0011: br.s IL_0023 IL_0013: ldloc.1 IL_0014: ldloc.2 IL_0015: ldloc.0 IL_0016: ldloc.2 - IL_0017: ldelem [runtime]System.Boolean - IL_001c: stloc.3 - IL_001d: ldloc.3 - IL_001e: brfalse.s IL_0020 + IL_0017: ldelem.u1 + IL_0018: stloc.3 + IL_0019: ldloc.3 + IL_001a: brfalse.s IL_001c - IL_0020: ldc.i4.0 - IL_0021: nop - IL_0022: stelem.i4 + IL_001c: ldc.i4.0 + IL_001d: nop + IL_001e: stelem.i4 + IL_001f: ldloc.2 + IL_0020: ldc.i4.1 + IL_0021: add + IL_0022: stloc.2 IL_0023: ldloc.2 - IL_0024: ldc.i4.1 - IL_0025: add - IL_0026: stloc.2 - IL_0027: ldloc.2 - IL_0028: ldloc.1 - IL_0029: ldlen - IL_002a: conv.i4 - IL_002b: blt.s IL_0013 + IL_0024: ldloc.1 + IL_0025: ldlen + IL_0026: conv.i4 + IL_0027: blt.s IL_0013 - IL_002d: ldloc.1 - IL_002e: ret + IL_0029: ldloc.1 + IL_002a: ret } .method public static int32[] 'for _ | true in ...'() cil managed @@ -2340,4 +2340,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index a0af1067d16..d4e0e1c0c90 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -54,27 +44,27 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0016 + IL_0004: br.s IL_0012 IL_0006: ldarg.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldloc.0 - IL_000f: ldloc.2 + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldloc.0 + IL_000b: ldloc.2 + IL_000c: add + IL_000d: stloc.0 + IL_000e: ldloc.1 + IL_000f: ldc.i4.1 IL_0010: add - IL_0011: stloc.0 + IL_0011: stloc.1 IL_0012: ldloc.1 - IL_0013: ldc.i4.1 - IL_0014: add - IL_0015: stloc.1 - IL_0016: ldloc.1 - IL_0017: ldarg.0 - IL_0018: ldlen - IL_0019: conv.i4 - IL_001a: blt.s IL_0006 - - IL_001c: ret + IL_0013: ldarg.0 + IL_0014: ldlen + IL_0015: conv.i4 + IL_0016: blt.s IL_0006 + + IL_0018: ret } } @@ -96,4 +86,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index a0af1067d16..d4e0e1c0c90 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -54,27 +44,27 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0016 + IL_0004: br.s IL_0012 IL_0006: ldarg.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldloc.0 - IL_000f: ldloc.2 + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldloc.0 + IL_000b: ldloc.2 + IL_000c: add + IL_000d: stloc.0 + IL_000e: ldloc.1 + IL_000f: ldc.i4.1 IL_0010: add - IL_0011: stloc.0 + IL_0011: stloc.1 IL_0012: ldloc.1 - IL_0013: ldc.i4.1 - IL_0014: add - IL_0015: stloc.1 - IL_0016: ldloc.1 - IL_0017: ldarg.0 - IL_0018: ldlen - IL_0019: conv.i4 - IL_001a: blt.s IL_0006 - - IL_001c: ret + IL_0013: ldarg.0 + IL_0014: ldlen + IL_0015: conv.i4 + IL_0016: blt.s IL_0006 + + IL_0018: ret } } @@ -96,4 +86,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 6a5f1aabbdc..0d0b1ad1645 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -62,7 +52,7 @@ IL_000c: stloc.2 IL_000d: ldloc.2 IL_000e: ldloc.3 - IL_000f: blt.s IL_0027 + IL_000f: blt.s IL_0023 IL_0011: ldloc.1 IL_0012: ldc.i4.1 @@ -71,19 +61,19 @@ IL_0015: ldloc.0 IL_0016: ldloc.1 IL_0017: ldloc.3 - IL_0018: stelem [runtime]System.Int32 + IL_0018: stelem.i4 + IL_0019: ldloc.3 + IL_001a: ldc.i4.1 + IL_001b: add + IL_001c: stloc.3 IL_001d: ldloc.3 - IL_001e: ldc.i4.1 - IL_001f: add - IL_0020: stloc.3 - IL_0021: ldloc.3 - IL_0022: ldloc.2 - IL_0023: ldc.i4.1 - IL_0024: add - IL_0025: bne.un.s IL_0011 - - IL_0027: ldloc.0 - IL_0028: ret + IL_001e: ldloc.2 + IL_001f: ldc.i4.1 + IL_0020: add + IL_0021: bne.un.s IL_0011 + + IL_0023: ldloc.0 + IL_0024: ret } } @@ -105,4 +95,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index 6a5f1aabbdc..0d0b1ad1645 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -62,7 +52,7 @@ IL_000c: stloc.2 IL_000d: ldloc.2 IL_000e: ldloc.3 - IL_000f: blt.s IL_0027 + IL_000f: blt.s IL_0023 IL_0011: ldloc.1 IL_0012: ldc.i4.1 @@ -71,19 +61,19 @@ IL_0015: ldloc.0 IL_0016: ldloc.1 IL_0017: ldloc.3 - IL_0018: stelem [runtime]System.Int32 + IL_0018: stelem.i4 + IL_0019: ldloc.3 + IL_001a: ldc.i4.1 + IL_001b: add + IL_001c: stloc.3 IL_001d: ldloc.3 - IL_001e: ldc.i4.1 - IL_001f: add - IL_0020: stloc.3 - IL_0021: ldloc.3 - IL_0022: ldloc.2 - IL_0023: ldc.i4.1 - IL_0024: add - IL_0025: bne.un.s IL_0011 - - IL_0027: ldloc.0 - IL_0028: ret + IL_001e: ldloc.2 + IL_001f: ldc.i4.1 + IL_0020: add + IL_0021: bne.un.s IL_0011 + + IL_0023: ldloc.0 + IL_0024: ret } } @@ -105,4 +95,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl index 0689c964faf..fa3fc55d025 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl @@ -123,47 +123,47 @@ IL_0040: stloc.2 IL_0041: ldloc.2 IL_0042: ldloc.3 - IL_0043: blt.s IL_0071 + IL_0043: blt.s IL_0065 IL_0045: call int32[] assembly::get_r() IL_004a: ldloc.3 IL_004b: call int32[] assembly::get_r() IL_0050: ldloc.3 - IL_0051: ldelem [runtime]System.Int32 - IL_0056: call int32[] assembly::get_w() + IL_0051: ldelem.i4 + IL_0052: call int32[] assembly::get_w() + IL_0057: ldloc.3 + IL_0058: ldelem.i4 + IL_0059: add + IL_005a: stelem.i4 IL_005b: ldloc.3 - IL_005c: ldelem [runtime]System.Int32 - IL_0061: add - IL_0062: stelem [runtime]System.Int32 - IL_0067: ldloc.3 - IL_0068: ldc.i4.1 - IL_0069: add - IL_006a: stloc.3 - IL_006b: ldloc.3 - IL_006c: ldloc.2 - IL_006d: ldc.i4.1 - IL_006e: add - IL_006f: bne.un.s IL_0045 - - IL_0071: nop + IL_005c: ldc.i4.1 + IL_005d: add + IL_005e: stloc.3 + IL_005f: ldloc.3 + IL_0060: ldloc.2 + IL_0061: ldc.i4.1 + IL_0062: add + IL_0063: bne.un.s IL_0045 + + IL_0065: nop + IL_0066: nop + IL_0067: call int32[] assembly::get_r() + IL_006c: ldc.i4.0 + IL_006d: ldelem.i4 + IL_006e: ldc.i4.3 + IL_006f: bne.un.s IL_0075 + + IL_0071: ldc.i4.0 IL_0072: nop - IL_0073: call int32[] assembly::get_r() - IL_0078: ldc.i4.0 - IL_0079: ldelem [runtime]System.Int32 - IL_007e: ldc.i4.3 - IL_007f: bne.un.s IL_0085 - - IL_0081: ldc.i4.0 - IL_0082: nop - IL_0083: br.s IL_0087 - - IL_0085: ldc.i4.1 - IL_0086: nop - IL_0087: stloc.s V_6 - IL_0089: ldloc.s V_6 - IL_008b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0090: pop - IL_0091: ret + IL_0073: br.s IL_0077 + + IL_0075: ldc.i4.1 + IL_0076: nop + IL_0077: stloc.s V_6 + IL_0079: ldloc.s V_6 + IL_007b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0080: pop + IL_0081: ret } } @@ -172,4 +172,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 7e035bf8d61..fb46aa57c78 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -126,45 +116,45 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_0067 + IL_0039: blt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: add - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: add - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: add + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: add + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0082: pop - IL_0083: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0072: pop + IL_0073: ret } } @@ -173,4 +163,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl index 813692fac56..5b4c53fb3c3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl @@ -108,47 +108,47 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_0067 + IL_0039: blt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: add - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: add - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: add + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: add + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: stloc.s V_4 - IL_007f: ldloc.s V_4 - IL_0081: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0086: pop - IL_0087: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: stloc.s V_4 + IL_006f: ldloc.s V_4 + IL_0071: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0076: pop + IL_0077: ret } .property int32[] r() @@ -185,4 +185,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index fd8662b1ca5..971a666a343 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -117,45 +107,45 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_0067 + IL_0039: blt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: add - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: add - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: add + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: add + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0082: pop - IL_0083: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0072: pop + IL_0073: ret } .property int32[] r() @@ -192,4 +182,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl index b86ee2d4a2c..6d8aec750c0 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl @@ -123,47 +123,47 @@ IL_0040: stloc.2 IL_0041: ldloc.2 IL_0042: ldloc.3 - IL_0043: bgt.s IL_0071 + IL_0043: bgt.s IL_0065 IL_0045: call int32[] assembly::get_r() IL_004a: ldloc.3 IL_004b: call int32[] assembly::get_r() IL_0050: ldloc.3 - IL_0051: ldelem [runtime]System.Int32 - IL_0056: call int32[] assembly::get_w() + IL_0051: ldelem.i4 + IL_0052: call int32[] assembly::get_w() + IL_0057: ldloc.3 + IL_0058: ldelem.i4 + IL_0059: add + IL_005a: stelem.i4 IL_005b: ldloc.3 - IL_005c: ldelem [runtime]System.Int32 - IL_0061: add - IL_0062: stelem [runtime]System.Int32 - IL_0067: ldloc.3 - IL_0068: ldc.i4.1 - IL_0069: sub - IL_006a: stloc.3 - IL_006b: ldloc.3 - IL_006c: ldloc.2 - IL_006d: ldc.i4.1 - IL_006e: sub - IL_006f: bne.un.s IL_0045 - - IL_0071: nop + IL_005c: ldc.i4.1 + IL_005d: sub + IL_005e: stloc.3 + IL_005f: ldloc.3 + IL_0060: ldloc.2 + IL_0061: ldc.i4.1 + IL_0062: sub + IL_0063: bne.un.s IL_0045 + + IL_0065: nop + IL_0066: nop + IL_0067: call int32[] assembly::get_r() + IL_006c: ldc.i4.0 + IL_006d: ldelem.i4 + IL_006e: ldc.i4.3 + IL_006f: bne.un.s IL_0075 + + IL_0071: ldc.i4.0 IL_0072: nop - IL_0073: call int32[] assembly::get_r() - IL_0078: ldc.i4.0 - IL_0079: ldelem [runtime]System.Int32 - IL_007e: ldc.i4.3 - IL_007f: bne.un.s IL_0085 - - IL_0081: ldc.i4.0 - IL_0082: nop - IL_0083: br.s IL_0087 - - IL_0085: ldc.i4.1 - IL_0086: nop - IL_0087: stloc.s V_6 - IL_0089: ldloc.s V_6 - IL_008b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0090: pop - IL_0091: ret + IL_0073: br.s IL_0077 + + IL_0075: ldc.i4.1 + IL_0076: nop + IL_0077: stloc.s V_6 + IL_0079: ldloc.s V_6 + IL_007b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0080: pop + IL_0081: ret } } @@ -172,4 +172,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 91f26499736..46991d7b3f7 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -124,45 +114,45 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: bgt.s IL_0067 + IL_0039: bgt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: sub - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: sub - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: sub + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: sub + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0082: pop - IL_0083: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0072: pop + IL_0073: ret } } @@ -171,4 +161,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl index 860527ca19e..288641de0ff 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl @@ -108,47 +108,47 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: bgt.s IL_0067 + IL_0039: bgt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: sub - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: sub - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: sub + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: sub + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: stloc.s V_4 - IL_007f: ldloc.s V_4 - IL_0081: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0086: pop - IL_0087: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: stloc.s V_4 + IL_006f: ldloc.s V_4 + IL_0071: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0076: pop + IL_0077: ret } .property int32[] r() @@ -185,4 +185,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index f89292af139..e636e439fa5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -115,45 +105,45 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: bgt.s IL_0067 + IL_0039: bgt.s IL_005b IL_003b: call int32[] assembly::get_r() IL_0040: ldloc.1 IL_0041: call int32[] assembly::get_r() IL_0046: ldloc.1 - IL_0047: ldelem [runtime]System.Int32 - IL_004c: call int32[] assembly::get_w() + IL_0047: ldelem.i4 + IL_0048: call int32[] assembly::get_w() + IL_004d: ldloc.1 + IL_004e: ldelem.i4 + IL_004f: add + IL_0050: stelem.i4 IL_0051: ldloc.1 - IL_0052: ldelem [runtime]System.Int32 - IL_0057: add - IL_0058: stelem [runtime]System.Int32 - IL_005d: ldloc.1 - IL_005e: ldc.i4.1 - IL_005f: sub - IL_0060: stloc.1 - IL_0061: ldloc.1 - IL_0062: ldloc.0 - IL_0063: ldc.i4.1 - IL_0064: sub - IL_0065: bne.un.s IL_003b - - IL_0067: nop + IL_0052: ldc.i4.1 + IL_0053: sub + IL_0054: stloc.1 + IL_0055: ldloc.1 + IL_0056: ldloc.0 + IL_0057: ldc.i4.1 + IL_0058: sub + IL_0059: bne.un.s IL_003b + + IL_005b: nop + IL_005c: nop + IL_005d: call int32[] assembly::get_r() + IL_0062: ldc.i4.0 + IL_0063: ldelem.i4 + IL_0064: ldc.i4.3 + IL_0065: bne.un.s IL_006b + + IL_0067: ldc.i4.0 IL_0068: nop - IL_0069: call int32[] assembly::get_r() - IL_006e: ldc.i4.0 - IL_006f: ldelem [runtime]System.Int32 - IL_0074: ldc.i4.3 - IL_0075: bne.un.s IL_007b - - IL_0077: ldc.i4.0 - IL_0078: nop - IL_0079: br.s IL_007d - - IL_007b: ldc.i4.1 - IL_007c: nop - IL_007d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0082: pop - IL_0083: ret + IL_0069: br.s IL_006d + + IL_006b: ldc.i4.1 + IL_006c: nop + IL_006d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0072: pop + IL_0073: ret } .property int32[] r() @@ -190,4 +180,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl index 1c526104b4f..cd3877d6b9e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl @@ -173,7 +173,7 @@ IL_0080: ldloc.2 IL_0081: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0086: stloc.s V_10 - IL_0088: br.s IL_00c2 + IL_0088: br.s IL_00b6 IL_008a: ldloc.2 IL_008b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -182,39 +182,39 @@ IL_0097: ldloc.s V_11 IL_0099: call int32[] assembly::get_r() IL_009e: ldloc.s V_11 - IL_00a0: ldelem [runtime]System.Int32 - IL_00a5: call int32[] assembly::get_w() - IL_00aa: ldloc.s V_11 - IL_00ac: ldelem [runtime]System.Int32 - IL_00b1: add - IL_00b2: stelem [runtime]System.Int32 - IL_00b7: ldloc.s V_10 - IL_00b9: stloc.2 - IL_00ba: ldloc.2 - IL_00bb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00c0: stloc.s V_10 - IL_00c2: ldloc.s V_10 - IL_00c4: brtrue.s IL_008a - - IL_00c6: nop + IL_00a0: ldelem.i4 + IL_00a1: call int32[] assembly::get_w() + IL_00a6: ldloc.s V_11 + IL_00a8: ldelem.i4 + IL_00a9: add + IL_00aa: stelem.i4 + IL_00ab: ldloc.s V_10 + IL_00ad: stloc.2 + IL_00ae: ldloc.2 + IL_00af: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00b4: stloc.s V_10 + IL_00b6: ldloc.s V_10 + IL_00b8: brtrue.s IL_008a + + IL_00ba: nop + IL_00bb: nop + IL_00bc: call int32[] assembly::get_r() + IL_00c1: ldc.i4.0 + IL_00c2: ldelem.i4 + IL_00c3: ldc.i4.3 + IL_00c4: bne.un.s IL_00ca + + IL_00c6: ldc.i4.0 IL_00c7: nop - IL_00c8: call int32[] assembly::get_r() - IL_00cd: ldc.i4.0 - IL_00ce: ldelem [runtime]System.Int32 - IL_00d3: ldc.i4.3 - IL_00d4: bne.un.s IL_00da - - IL_00d6: ldc.i4.0 - IL_00d7: nop - IL_00d8: br.s IL_00dc - - IL_00da: ldc.i4.1 - IL_00db: nop - IL_00dc: stloc.s V_12 - IL_00de: ldloc.s V_12 - IL_00e0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00e5: pop - IL_00e6: ret + IL_00c8: br.s IL_00cc + + IL_00ca: ldc.i4.1 + IL_00cb: nop + IL_00cc: stloc.s V_12 + IL_00ce: ldloc.s V_12 + IL_00d0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00d5: pop + IL_00d6: ret } } @@ -223,4 +223,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 618ba09189f..abe62238ce6 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -253,7 +243,7 @@ IL_008c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0096: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$assembly::next@9 - IL_009b: br.s IL_00e3 + IL_009b: br.s IL_00d7 IL_009d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_00a2: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -262,37 +252,37 @@ IL_00ad: ldloc.0 IL_00ae: call int32[] assembly::get_r() IL_00b3: ldloc.0 - IL_00b4: ldelem [runtime]System.Int32 - IL_00b9: call int32[] assembly::get_w() - IL_00be: ldloc.0 - IL_00bf: ldelem [runtime]System.Int32 - IL_00c4: add - IL_00c5: stelem [runtime]System.Int32 - IL_00ca: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00cf: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00d4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() - IL_00d9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00de: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00e3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00e8: brtrue.s IL_009d - - IL_00ea: nop + IL_00b4: ldelem.i4 + IL_00b5: call int32[] assembly::get_w() + IL_00ba: ldloc.0 + IL_00bb: ldelem.i4 + IL_00bc: add + IL_00bd: stelem.i4 + IL_00be: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00c3: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00c8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() + IL_00cd: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00d2: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00d7: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00dc: brtrue.s IL_009d + + IL_00de: nop + IL_00df: nop + IL_00e0: call int32[] assembly::get_r() + IL_00e5: ldc.i4.0 + IL_00e6: ldelem.i4 + IL_00e7: ldc.i4.3 + IL_00e8: bne.un.s IL_00ee + + IL_00ea: ldc.i4.0 IL_00eb: nop - IL_00ec: call int32[] assembly::get_r() - IL_00f1: ldc.i4.0 - IL_00f2: ldelem [runtime]System.Int32 - IL_00f7: ldc.i4.3 - IL_00f8: bne.un.s IL_00fe - - IL_00fa: ldc.i4.0 - IL_00fb: nop - IL_00fc: br.s IL_0100 - - IL_00fe: ldc.i4.1 - IL_00ff: nop - IL_0100: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0105: pop - IL_0106: ret + IL_00ec: br.s IL_00f0 + + IL_00ee: ldc.i4.1 + IL_00ef: nop + IL_00f0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00f5: pop + IL_00f6: ret } } @@ -301,4 +291,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOff.il.bsl index c8c389a198a..9481d05f3c6 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOff.il.bsl @@ -158,7 +158,7 @@ IL_0076: ldloc.0 IL_0077: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_007c: stloc.s V_8 - IL_007e: br.s IL_00b8 + IL_007e: br.s IL_00ac IL_0080: ldloc.0 IL_0081: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -167,39 +167,39 @@ IL_008d: ldloc.s V_9 IL_008f: call int32[] assembly::get_r() IL_0094: ldloc.s V_9 - IL_0096: ldelem [runtime]System.Int32 - IL_009b: call int32[] assembly::get_w() - IL_00a0: ldloc.s V_9 - IL_00a2: ldelem [runtime]System.Int32 - IL_00a7: add - IL_00a8: stelem [runtime]System.Int32 - IL_00ad: ldloc.s V_8 - IL_00af: stloc.0 - IL_00b0: ldloc.0 - IL_00b1: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00b6: stloc.s V_8 - IL_00b8: ldloc.s V_8 - IL_00ba: brtrue.s IL_0080 - - IL_00bc: nop + IL_0096: ldelem.i4 + IL_0097: call int32[] assembly::get_w() + IL_009c: ldloc.s V_9 + IL_009e: ldelem.i4 + IL_009f: add + IL_00a0: stelem.i4 + IL_00a1: ldloc.s V_8 + IL_00a3: stloc.0 + IL_00a4: ldloc.0 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: stloc.s V_8 + IL_00ac: ldloc.s V_8 + IL_00ae: brtrue.s IL_0080 + + IL_00b0: nop + IL_00b1: nop + IL_00b2: call int32[] assembly::get_r() + IL_00b7: ldc.i4.0 + IL_00b8: ldelem.i4 + IL_00b9: ldc.i4.3 + IL_00ba: bne.un.s IL_00c0 + + IL_00bc: ldc.i4.0 IL_00bd: nop - IL_00be: call int32[] assembly::get_r() - IL_00c3: ldc.i4.0 - IL_00c4: ldelem [runtime]System.Int32 - IL_00c9: ldc.i4.3 - IL_00ca: bne.un.s IL_00d0 - - IL_00cc: ldc.i4.0 - IL_00cd: nop - IL_00ce: br.s IL_00d2 - - IL_00d0: ldc.i4.1 - IL_00d1: nop - IL_00d2: stloc.s V_10 - IL_00d4: ldloc.s V_10 - IL_00d6: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00db: pop - IL_00dc: ret + IL_00be: br.s IL_00c2 + + IL_00c0: ldc.i4.1 + IL_00c1: nop + IL_00c2: stloc.s V_10 + IL_00c4: ldloc.s V_10 + IL_00c6: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00cb: pop + IL_00cc: ret } .property int32[] r() @@ -236,4 +236,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index 7838a9c7d69..5eaed2d4f19 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -220,7 +210,7 @@ IL_008c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0096: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::next@9 - IL_009b: br.s IL_00e3 + IL_009b: br.s IL_00d7 IL_009d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_00a2: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -229,37 +219,37 @@ IL_00ad: ldloc.0 IL_00ae: call int32[] assembly::get_r() IL_00b3: ldloc.0 - IL_00b4: ldelem [runtime]System.Int32 - IL_00b9: call int32[] assembly::get_w() - IL_00be: ldloc.0 - IL_00bf: ldelem [runtime]System.Int32 - IL_00c4: add - IL_00c5: stelem [runtime]System.Int32 - IL_00ca: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00cf: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00d4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() - IL_00d9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00de: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00e3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00e8: brtrue.s IL_009d - - IL_00ea: nop + IL_00b4: ldelem.i4 + IL_00b5: call int32[] assembly::get_w() + IL_00ba: ldloc.0 + IL_00bb: ldelem.i4 + IL_00bc: add + IL_00bd: stelem.i4 + IL_00be: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00c3: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00c8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() + IL_00cd: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00d2: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00d7: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00dc: brtrue.s IL_009d + + IL_00de: nop + IL_00df: nop + IL_00e0: call int32[] assembly::get_r() + IL_00e5: ldc.i4.0 + IL_00e6: ldelem.i4 + IL_00e7: ldc.i4.3 + IL_00e8: bne.un.s IL_00ee + + IL_00ea: ldc.i4.0 IL_00eb: nop - IL_00ec: call int32[] assembly::get_r() - IL_00f1: ldc.i4.0 - IL_00f2: ldelem [runtime]System.Int32 - IL_00f7: ldc.i4.3 - IL_00f8: bne.un.s IL_00fe - - IL_00fa: ldc.i4.0 - IL_00fb: nop - IL_00fc: br.s IL_0100 - - IL_00fe: ldc.i4.1 - IL_00ff: nop - IL_0100: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0105: pop - IL_0106: ret + IL_00ec: br.s IL_00f0 + + IL_00ee: ldc.i4.1 + IL_00ef: nop + IL_00f0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00f5: pop + IL_00f6: ret } .property int32[] r() @@ -320,4 +310,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOff.il.bsl index 926e5db3845..b3846d77531 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOff.il.bsl @@ -173,7 +173,7 @@ IL_0080: ldloc.2 IL_0081: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0086: stloc.s V_10 - IL_0088: br.s IL_00c2 + IL_0088: br.s IL_00b6 IL_008a: ldloc.2 IL_008b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -182,39 +182,39 @@ IL_0097: ldloc.s V_11 IL_0099: call int32[] assembly::get_r() IL_009e: ldloc.s V_11 - IL_00a0: ldelem [runtime]System.Int32 - IL_00a5: call int32[] assembly::get_w() - IL_00aa: ldloc.s V_11 - IL_00ac: ldelem [runtime]System.Int32 - IL_00b1: add - IL_00b2: stelem [runtime]System.Int32 - IL_00b7: ldloc.s V_10 - IL_00b9: stloc.2 - IL_00ba: ldloc.2 - IL_00bb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00c0: stloc.s V_10 - IL_00c2: ldloc.s V_10 - IL_00c4: brtrue.s IL_008a - - IL_00c6: nop + IL_00a0: ldelem.i4 + IL_00a1: call int32[] assembly::get_w() + IL_00a6: ldloc.s V_11 + IL_00a8: ldelem.i4 + IL_00a9: add + IL_00aa: stelem.i4 + IL_00ab: ldloc.s V_10 + IL_00ad: stloc.2 + IL_00ae: ldloc.2 + IL_00af: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00b4: stloc.s V_10 + IL_00b6: ldloc.s V_10 + IL_00b8: brtrue.s IL_008a + + IL_00ba: nop + IL_00bb: nop + IL_00bc: call int32[] assembly::get_r() + IL_00c1: ldc.i4.0 + IL_00c2: ldelem.i4 + IL_00c3: ldc.i4.3 + IL_00c4: bne.un.s IL_00ca + + IL_00c6: ldc.i4.0 IL_00c7: nop - IL_00c8: call int32[] assembly::get_r() - IL_00cd: ldc.i4.0 - IL_00ce: ldelem [runtime]System.Int32 - IL_00d3: ldc.i4.3 - IL_00d4: bne.un.s IL_00da - - IL_00d6: ldc.i4.0 - IL_00d7: nop - IL_00d8: br.s IL_00dc - - IL_00da: ldc.i4.1 - IL_00db: nop - IL_00dc: stloc.s V_12 - IL_00de: ldloc.s V_12 - IL_00e0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00e5: pop - IL_00e6: ret + IL_00c8: br.s IL_00cc + + IL_00ca: ldc.i4.1 + IL_00cb: nop + IL_00cc: stloc.s V_12 + IL_00ce: ldloc.s V_12 + IL_00d0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00d5: pop + IL_00d6: ret } } @@ -223,4 +223,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index cdb60cf3f61..13e37dbc512 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -253,7 +243,7 @@ IL_008c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0096: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$assembly::next@9 - IL_009b: br.s IL_00e3 + IL_009b: br.s IL_00d7 IL_009d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_00a2: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -262,37 +252,37 @@ IL_00ad: ldloc.0 IL_00ae: call int32[] assembly::get_r() IL_00b3: ldloc.0 - IL_00b4: ldelem [runtime]System.Int32 - IL_00b9: call int32[] assembly::get_w() - IL_00be: ldloc.0 - IL_00bf: ldelem [runtime]System.Int32 - IL_00c4: add - IL_00c5: stelem [runtime]System.Int32 - IL_00ca: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00cf: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00d4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() - IL_00d9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00de: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00e3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00e8: brtrue.s IL_009d - - IL_00ea: nop + IL_00b4: ldelem.i4 + IL_00b5: call int32[] assembly::get_w() + IL_00ba: ldloc.0 + IL_00bb: ldelem.i4 + IL_00bc: add + IL_00bd: stelem.i4 + IL_00be: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00c3: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00c8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() + IL_00cd: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00d2: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00d7: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00dc: brtrue.s IL_009d + + IL_00de: nop + IL_00df: nop + IL_00e0: call int32[] assembly::get_r() + IL_00e5: ldc.i4.0 + IL_00e6: ldelem.i4 + IL_00e7: ldc.i4.3 + IL_00e8: bne.un.s IL_00ee + + IL_00ea: ldc.i4.0 IL_00eb: nop - IL_00ec: call int32[] assembly::get_r() - IL_00f1: ldc.i4.0 - IL_00f2: ldelem [runtime]System.Int32 - IL_00f7: ldc.i4.3 - IL_00f8: bne.un.s IL_00fe - - IL_00fa: ldc.i4.0 - IL_00fb: nop - IL_00fc: br.s IL_0100 - - IL_00fe: ldc.i4.1 - IL_00ff: nop - IL_0100: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0105: pop - IL_0106: ret + IL_00ec: br.s IL_00f0 + + IL_00ee: ldc.i4.1 + IL_00ef: nop + IL_00f0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00f5: pop + IL_00f6: ret } } @@ -301,4 +291,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOff.il.bsl index dc19fd30e6e..90df5879111 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOff.il.bsl @@ -158,7 +158,7 @@ IL_0076: ldloc.0 IL_0077: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_007c: stloc.s V_8 - IL_007e: br.s IL_00b8 + IL_007e: br.s IL_00ac IL_0080: ldloc.0 IL_0081: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -167,39 +167,39 @@ IL_008d: ldloc.s V_9 IL_008f: call int32[] assembly::get_r() IL_0094: ldloc.s V_9 - IL_0096: ldelem [runtime]System.Int32 - IL_009b: call int32[] assembly::get_w() - IL_00a0: ldloc.s V_9 - IL_00a2: ldelem [runtime]System.Int32 - IL_00a7: add - IL_00a8: stelem [runtime]System.Int32 - IL_00ad: ldloc.s V_8 - IL_00af: stloc.0 - IL_00b0: ldloc.0 - IL_00b1: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00b6: stloc.s V_8 - IL_00b8: ldloc.s V_8 - IL_00ba: brtrue.s IL_0080 - - IL_00bc: nop + IL_0096: ldelem.i4 + IL_0097: call int32[] assembly::get_w() + IL_009c: ldloc.s V_9 + IL_009e: ldelem.i4 + IL_009f: add + IL_00a0: stelem.i4 + IL_00a1: ldloc.s V_8 + IL_00a3: stloc.0 + IL_00a4: ldloc.0 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: stloc.s V_8 + IL_00ac: ldloc.s V_8 + IL_00ae: brtrue.s IL_0080 + + IL_00b0: nop + IL_00b1: nop + IL_00b2: call int32[] assembly::get_r() + IL_00b7: ldc.i4.0 + IL_00b8: ldelem.i4 + IL_00b9: ldc.i4.3 + IL_00ba: bne.un.s IL_00c0 + + IL_00bc: ldc.i4.0 IL_00bd: nop - IL_00be: call int32[] assembly::get_r() - IL_00c3: ldc.i4.0 - IL_00c4: ldelem [runtime]System.Int32 - IL_00c9: ldc.i4.3 - IL_00ca: bne.un.s IL_00d0 - - IL_00cc: ldc.i4.0 - IL_00cd: nop - IL_00ce: br.s IL_00d2 - - IL_00d0: ldc.i4.1 - IL_00d1: nop - IL_00d2: stloc.s V_10 - IL_00d4: ldloc.s V_10 - IL_00d6: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00db: pop - IL_00dc: ret + IL_00be: br.s IL_00c2 + + IL_00c0: ldc.i4.1 + IL_00c1: nop + IL_00c2: stloc.s V_10 + IL_00c4: ldloc.s V_10 + IL_00c6: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00cb: pop + IL_00cc: ret } .property int32[] r() @@ -236,4 +236,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index 33caf0bc8ca..b587873a3f1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -220,7 +210,7 @@ IL_008c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0096: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::next@9 - IL_009b: br.s IL_00e3 + IL_009b: br.s IL_00d7 IL_009d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() IL_00a2: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() @@ -229,37 +219,37 @@ IL_00ad: ldloc.0 IL_00ae: call int32[] assembly::get_r() IL_00b3: ldloc.0 - IL_00b4: ldelem [runtime]System.Int32 - IL_00b9: call int32[] assembly::get_w() - IL_00be: ldloc.0 - IL_00bf: ldelem [runtime]System.Int32 - IL_00c4: add - IL_00c5: stelem [runtime]System.Int32 - IL_00ca: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00cf: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00d4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() - IL_00d9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00de: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00e3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() - IL_00e8: brtrue.s IL_009d - - IL_00ea: nop + IL_00b4: ldelem.i4 + IL_00b5: call int32[] assembly::get_w() + IL_00ba: ldloc.0 + IL_00bb: ldelem.i4 + IL_00bc: add + IL_00bd: stelem.i4 + IL_00be: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00c3: call void assembly::set_current@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00c8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_current@9() + IL_00cd: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00d2: call void assembly::set_next@9(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_00d7: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_next@9() + IL_00dc: brtrue.s IL_009d + + IL_00de: nop + IL_00df: nop + IL_00e0: call int32[] assembly::get_r() + IL_00e5: ldc.i4.0 + IL_00e6: ldelem.i4 + IL_00e7: ldc.i4.3 + IL_00e8: bne.un.s IL_00ee + + IL_00ea: ldc.i4.0 IL_00eb: nop - IL_00ec: call int32[] assembly::get_r() - IL_00f1: ldc.i4.0 - IL_00f2: ldelem [runtime]System.Int32 - IL_00f7: ldc.i4.3 - IL_00f8: bne.un.s IL_00fe - - IL_00fa: ldc.i4.0 - IL_00fb: nop - IL_00fc: br.s IL_0100 - - IL_00fe: ldc.i4.1 - IL_00ff: nop - IL_0100: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0105: pop - IL_0106: ret + IL_00ec: br.s IL_00f0 + + IL_00ee: ldc.i4.1 + IL_00ef: nop + IL_00f0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00f5: pop + IL_00f6: ret } .property int32[] r() @@ -320,4 +310,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOff.il.bsl index a693bbf47b8..b25fee3d51f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOff.il.bsl @@ -127,7 +127,7 @@ IL_0040: stloc.2 IL_0041: ldloc.2 IL_0042: ldloc.3 - IL_0043: blt.s IL_00af + IL_0043: blt.s IL_00a3 IL_0045: ldc.i4.0 IL_0046: stloc.s V_7 @@ -154,57 +154,57 @@ IL_006a: stloc.s V_6 IL_006c: ldloc.s V_6 IL_006e: ldloc.s V_7 - IL_0070: blt.s IL_00a5 + IL_0070: blt.s IL_0099 IL_0072: call int32[] assembly::get_r() IL_0077: ldloc.s V_7 IL_0079: call int32[] assembly::get_r() IL_007e: ldloc.s V_7 - IL_0080: ldelem [runtime]System.Int32 - IL_0085: call int32[] assembly::get_w() - IL_008a: ldloc.s V_7 - IL_008c: ldelem [runtime]System.Int32 - IL_0091: add - IL_0092: stelem [runtime]System.Int32 - IL_0097: ldloc.s V_7 - IL_0099: ldc.i4.1 - IL_009a: add - IL_009b: stloc.s V_7 - IL_009d: ldloc.s V_7 - IL_009f: ldloc.s V_6 - IL_00a1: ldc.i4.1 - IL_00a2: add - IL_00a3: bne.un.s IL_0072 - - IL_00a5: ldloc.3 - IL_00a6: ldc.i4.1 - IL_00a7: add - IL_00a8: stloc.3 - IL_00a9: ldloc.3 - IL_00aa: ldloc.2 - IL_00ab: ldc.i4.1 - IL_00ac: add - IL_00ad: bne.un.s IL_0045 - - IL_00af: nop - IL_00b0: nop - IL_00b1: call int32[] assembly::get_r() - IL_00b6: ldc.i4.0 - IL_00b7: ldelem [runtime]System.Int32 - IL_00bc: ldc.i4.s 11 - IL_00be: bne.un.s IL_00c4 - - IL_00c0: ldc.i4.0 - IL_00c1: nop - IL_00c2: br.s IL_00c6 - - IL_00c4: ldc.i4.1 - IL_00c5: nop - IL_00c6: stloc.s V_10 - IL_00c8: ldloc.s V_10 - IL_00ca: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00cf: pop - IL_00d0: ret + IL_0080: ldelem.i4 + IL_0081: call int32[] assembly::get_w() + IL_0086: ldloc.s V_7 + IL_0088: ldelem.i4 + IL_0089: add + IL_008a: stelem.i4 + IL_008b: ldloc.s V_7 + IL_008d: ldc.i4.1 + IL_008e: add + IL_008f: stloc.s V_7 + IL_0091: ldloc.s V_7 + IL_0093: ldloc.s V_6 + IL_0095: ldc.i4.1 + IL_0096: add + IL_0097: bne.un.s IL_0072 + + IL_0099: ldloc.3 + IL_009a: ldc.i4.1 + IL_009b: add + IL_009c: stloc.3 + IL_009d: ldloc.3 + IL_009e: ldloc.2 + IL_009f: ldc.i4.1 + IL_00a0: add + IL_00a1: bne.un.s IL_0045 + + IL_00a3: nop + IL_00a4: nop + IL_00a5: call int32[] assembly::get_r() + IL_00aa: ldc.i4.0 + IL_00ab: ldelem.i4 + IL_00ac: ldc.i4.s 11 + IL_00ae: bne.un.s IL_00b4 + + IL_00b0: ldc.i4.0 + IL_00b1: nop + IL_00b2: br.s IL_00b6 + + IL_00b4: ldc.i4.1 + IL_00b5: nop + IL_00b6: stloc.s V_10 + IL_00b8: ldloc.s V_10 + IL_00ba: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00bf: pop + IL_00c0: ret } } @@ -213,4 +213,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 5aca7747bda..d73eb8dd2bc 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -128,7 +118,7 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_009a + IL_0039: blt.s IL_008e IL_003b: ldc.i4.0 IL_003c: stloc.3 @@ -155,55 +145,55 @@ IL_005f: stloc.2 IL_0060: ldloc.2 IL_0061: ldloc.3 - IL_0062: blt.s IL_0090 + IL_0062: blt.s IL_0084 IL_0064: call int32[] assembly::get_r() IL_0069: ldloc.3 IL_006a: call int32[] assembly::get_r() IL_006f: ldloc.3 - IL_0070: ldelem [runtime]System.Int32 - IL_0075: call int32[] assembly::get_w() + IL_0070: ldelem.i4 + IL_0071: call int32[] assembly::get_w() + IL_0076: ldloc.3 + IL_0077: ldelem.i4 + IL_0078: add + IL_0079: stelem.i4 IL_007a: ldloc.3 - IL_007b: ldelem [runtime]System.Int32 - IL_0080: add - IL_0081: stelem [runtime]System.Int32 - IL_0086: ldloc.3 - IL_0087: ldc.i4.1 - IL_0088: add - IL_0089: stloc.3 - IL_008a: ldloc.3 - IL_008b: ldloc.2 - IL_008c: ldc.i4.1 - IL_008d: add - IL_008e: bne.un.s IL_0064 - - IL_0090: ldloc.1 - IL_0091: ldc.i4.1 - IL_0092: add - IL_0093: stloc.1 - IL_0094: ldloc.1 - IL_0095: ldloc.0 - IL_0096: ldc.i4.1 - IL_0097: add - IL_0098: bne.un.s IL_003b - - IL_009a: nop - IL_009b: nop - IL_009c: call int32[] assembly::get_r() - IL_00a1: ldc.i4.0 - IL_00a2: ldelem [runtime]System.Int32 - IL_00a7: ldc.i4.s 11 - IL_00a9: bne.un.s IL_00af - - IL_00ab: ldc.i4.0 - IL_00ac: nop - IL_00ad: br.s IL_00b1 - - IL_00af: ldc.i4.1 - IL_00b0: nop - IL_00b1: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00b6: pop - IL_00b7: ret + IL_007b: ldc.i4.1 + IL_007c: add + IL_007d: stloc.3 + IL_007e: ldloc.3 + IL_007f: ldloc.2 + IL_0080: ldc.i4.1 + IL_0081: add + IL_0082: bne.un.s IL_0064 + + IL_0084: ldloc.1 + IL_0085: ldc.i4.1 + IL_0086: add + IL_0087: stloc.1 + IL_0088: ldloc.1 + IL_0089: ldloc.0 + IL_008a: ldc.i4.1 + IL_008b: add + IL_008c: bne.un.s IL_003b + + IL_008e: nop + IL_008f: nop + IL_0090: call int32[] assembly::get_r() + IL_0095: ldc.i4.0 + IL_0096: ldelem.i4 + IL_0097: ldc.i4.s 11 + IL_0099: bne.un.s IL_009f + + IL_009b: ldc.i4.0 + IL_009c: nop + IL_009d: br.s IL_00a1 + + IL_009f: ldc.i4.1 + IL_00a0: nop + IL_00a1: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00a6: pop + IL_00a7: ret } } @@ -212,4 +202,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOff.il.bsl index a8c564901d3..9600546542d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOff.il.bsl @@ -112,7 +112,7 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_00a5 + IL_0039: blt.s IL_0099 IL_003b: ldc.i4.0 IL_003c: stloc.s V_5 @@ -139,57 +139,57 @@ IL_0060: stloc.s V_4 IL_0062: ldloc.s V_4 IL_0064: ldloc.s V_5 - IL_0066: blt.s IL_009b + IL_0066: blt.s IL_008f IL_0068: call int32[] assembly::get_r() IL_006d: ldloc.s V_5 IL_006f: call int32[] assembly::get_r() IL_0074: ldloc.s V_5 - IL_0076: ldelem [runtime]System.Int32 - IL_007b: call int32[] assembly::get_w() - IL_0080: ldloc.s V_5 - IL_0082: ldelem [runtime]System.Int32 - IL_0087: add - IL_0088: stelem [runtime]System.Int32 - IL_008d: ldloc.s V_5 - IL_008f: ldc.i4.1 - IL_0090: add - IL_0091: stloc.s V_5 - IL_0093: ldloc.s V_5 - IL_0095: ldloc.s V_4 - IL_0097: ldc.i4.1 - IL_0098: add - IL_0099: bne.un.s IL_0068 - - IL_009b: ldloc.1 - IL_009c: ldc.i4.1 - IL_009d: add - IL_009e: stloc.1 - IL_009f: ldloc.1 - IL_00a0: ldloc.0 - IL_00a1: ldc.i4.1 - IL_00a2: add - IL_00a3: bne.un.s IL_003b - - IL_00a5: nop - IL_00a6: nop - IL_00a7: call int32[] assembly::get_r() - IL_00ac: ldc.i4.0 - IL_00ad: ldelem [runtime]System.Int32 - IL_00b2: ldc.i4.s 11 - IL_00b4: bne.un.s IL_00ba - - IL_00b6: ldc.i4.0 - IL_00b7: nop - IL_00b8: br.s IL_00bc - - IL_00ba: ldc.i4.1 - IL_00bb: nop - IL_00bc: stloc.s V_8 - IL_00be: ldloc.s V_8 - IL_00c0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00c5: pop - IL_00c6: ret + IL_0076: ldelem.i4 + IL_0077: call int32[] assembly::get_w() + IL_007c: ldloc.s V_5 + IL_007e: ldelem.i4 + IL_007f: add + IL_0080: stelem.i4 + IL_0081: ldloc.s V_5 + IL_0083: ldc.i4.1 + IL_0084: add + IL_0085: stloc.s V_5 + IL_0087: ldloc.s V_5 + IL_0089: ldloc.s V_4 + IL_008b: ldc.i4.1 + IL_008c: add + IL_008d: bne.un.s IL_0068 + + IL_008f: ldloc.1 + IL_0090: ldc.i4.1 + IL_0091: add + IL_0092: stloc.1 + IL_0093: ldloc.1 + IL_0094: ldloc.0 + IL_0095: ldc.i4.1 + IL_0096: add + IL_0097: bne.un.s IL_003b + + IL_0099: nop + IL_009a: nop + IL_009b: call int32[] assembly::get_r() + IL_00a0: ldc.i4.0 + IL_00a1: ldelem.i4 + IL_00a2: ldc.i4.s 11 + IL_00a4: bne.un.s IL_00aa + + IL_00a6: ldc.i4.0 + IL_00a7: nop + IL_00a8: br.s IL_00ac + + IL_00aa: ldc.i4.1 + IL_00ab: nop + IL_00ac: stloc.s V_8 + IL_00ae: ldloc.s V_8 + IL_00b0: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00b5: pop + IL_00b6: ret } .property int32[] r() @@ -226,4 +226,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index edd7456baca..26638c87294 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -119,7 +109,7 @@ IL_0036: stloc.0 IL_0037: ldloc.0 IL_0038: ldloc.1 - IL_0039: blt.s IL_009a + IL_0039: blt.s IL_008e IL_003b: ldc.i4.0 IL_003c: stloc.3 @@ -146,55 +136,55 @@ IL_005f: stloc.2 IL_0060: ldloc.2 IL_0061: ldloc.3 - IL_0062: blt.s IL_0090 + IL_0062: blt.s IL_0084 IL_0064: call int32[] assembly::get_r() IL_0069: ldloc.3 IL_006a: call int32[] assembly::get_r() IL_006f: ldloc.3 - IL_0070: ldelem [runtime]System.Int32 - IL_0075: call int32[] assembly::get_w() + IL_0070: ldelem.i4 + IL_0071: call int32[] assembly::get_w() + IL_0076: ldloc.3 + IL_0077: ldelem.i4 + IL_0078: add + IL_0079: stelem.i4 IL_007a: ldloc.3 - IL_007b: ldelem [runtime]System.Int32 - IL_0080: add - IL_0081: stelem [runtime]System.Int32 - IL_0086: ldloc.3 - IL_0087: ldc.i4.1 - IL_0088: add - IL_0089: stloc.3 - IL_008a: ldloc.3 - IL_008b: ldloc.2 - IL_008c: ldc.i4.1 - IL_008d: add - IL_008e: bne.un.s IL_0064 - - IL_0090: ldloc.1 - IL_0091: ldc.i4.1 - IL_0092: add - IL_0093: stloc.1 - IL_0094: ldloc.1 - IL_0095: ldloc.0 - IL_0096: ldc.i4.1 - IL_0097: add - IL_0098: bne.un.s IL_003b - - IL_009a: nop - IL_009b: nop - IL_009c: call int32[] assembly::get_r() - IL_00a1: ldc.i4.0 - IL_00a2: ldelem [runtime]System.Int32 - IL_00a7: ldc.i4.s 11 - IL_00a9: bne.un.s IL_00af - - IL_00ab: ldc.i4.0 - IL_00ac: nop - IL_00ad: br.s IL_00b1 - - IL_00af: ldc.i4.1 - IL_00b0: nop - IL_00b1: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_00b6: pop - IL_00b7: ret + IL_007b: ldc.i4.1 + IL_007c: add + IL_007d: stloc.3 + IL_007e: ldloc.3 + IL_007f: ldloc.2 + IL_0080: ldc.i4.1 + IL_0081: add + IL_0082: bne.un.s IL_0064 + + IL_0084: ldloc.1 + IL_0085: ldc.i4.1 + IL_0086: add + IL_0087: stloc.1 + IL_0088: ldloc.1 + IL_0089: ldloc.0 + IL_008a: ldc.i4.1 + IL_008b: add + IL_008c: bne.un.s IL_003b + + IL_008e: nop + IL_008f: nop + IL_0090: call int32[] assembly::get_r() + IL_0095: ldc.i4.0 + IL_0096: ldelem.i4 + IL_0097: ldc.i4.s 11 + IL_0099: bne.un.s IL_009f + + IL_009b: ldc.i4.0 + IL_009c: nop + IL_009d: br.s IL_00a1 + + IL_009f: ldc.i4.1 + IL_00a0: nop + IL_00a1: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_00a6: pop + IL_00a7: ret } .property int32[] r() @@ -231,4 +221,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 1a3b630b6b2..eaf8a630df7 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -50,23 +40,23 @@ .locals init (int32 V_0) IL_0000: ldc.i4.0 IL_0001: stloc.0 - IL_0002: br.s IL_0010 + IL_0002: br.s IL_000c IL_0004: ldarg.0 IL_0005: ldloc.0 IL_0006: ldloc.0 - IL_0007: stelem [runtime]System.Int32 + IL_0007: stelem.i4 + IL_0008: ldloc.0 + IL_0009: ldc.i4.1 + IL_000a: add + IL_000b: stloc.0 IL_000c: ldloc.0 - IL_000d: ldc.i4.1 - IL_000e: add - IL_000f: stloc.0 - IL_0010: ldloc.0 - IL_0011: ldarg.0 - IL_0012: ldlen - IL_0013: conv.i4 - IL_0014: blt.s IL_0004 - - IL_0016: ret + IL_000d: ldarg.0 + IL_000e: ldlen + IL_000f: conv.i4 + IL_0010: blt.s IL_0004 + + IL_0012: ret } } @@ -88,4 +78,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index 1a3b630b6b2..eaf8a630df7 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -50,23 +40,23 @@ .locals init (int32 V_0) IL_0000: ldc.i4.0 IL_0001: stloc.0 - IL_0002: br.s IL_0010 + IL_0002: br.s IL_000c IL_0004: ldarg.0 IL_0005: ldloc.0 IL_0006: ldloc.0 - IL_0007: stelem [runtime]System.Int32 + IL_0007: stelem.i4 + IL_0008: ldloc.0 + IL_0009: ldc.i4.1 + IL_000a: add + IL_000b: stloc.0 IL_000c: ldloc.0 - IL_000d: ldc.i4.1 - IL_000e: add - IL_000f: stloc.0 - IL_0010: ldloc.0 - IL_0011: ldarg.0 - IL_0012: ldlen - IL_0013: conv.i4 - IL_0014: blt.s IL_0004 - - IL_0016: ret + IL_000d: ldarg.0 + IL_000e: ldlen + IL_000f: conv.i4 + IL_0010: blt.s IL_0004 + + IL_0012: ret } } @@ -88,4 +78,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl index 2d7c1c580ba..4ab34b0cd6c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -58,23 +48,23 @@ IL_000a: stloc.0 IL_000b: ldloc.0 IL_000c: ldloc.1 - IL_000d: blt.s IL_0021 + IL_000d: blt.s IL_001d IL_000f: ldarg.0 IL_0010: ldloc.1 IL_0011: ldloc.1 - IL_0012: stelem [runtime]System.Int32 + IL_0012: stelem.i4 + IL_0013: ldloc.1 + IL_0014: ldc.i4.1 + IL_0015: add + IL_0016: stloc.1 IL_0017: ldloc.1 - IL_0018: ldc.i4.1 - IL_0019: add - IL_001a: stloc.1 - IL_001b: ldloc.1 - IL_001c: ldloc.0 - IL_001d: ldc.i4.1 - IL_001e: add - IL_001f: bne.un.s IL_000f - - IL_0021: ret + IL_0018: ldloc.0 + IL_0019: ldc.i4.1 + IL_001a: add + IL_001b: bne.un.s IL_000f + + IL_001d: ret } } @@ -96,4 +86,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl index 2d7c1c580ba..4ab34b0cd6c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ZeroToArrLength02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -58,23 +48,23 @@ IL_000a: stloc.0 IL_000b: ldloc.0 IL_000c: ldloc.1 - IL_000d: blt.s IL_0021 + IL_000d: blt.s IL_001d IL_000f: ldarg.0 IL_0010: ldloc.1 IL_0011: ldloc.1 - IL_0012: stelem [runtime]System.Int32 + IL_0012: stelem.i4 + IL_0013: ldloc.1 + IL_0014: ldc.i4.1 + IL_0015: add + IL_0016: stloc.1 IL_0017: ldloc.1 - IL_0018: ldc.i4.1 - IL_0019: add - IL_001a: stloc.1 - IL_001b: ldloc.1 - IL_001c: ldloc.0 - IL_001d: ldc.i4.1 - IL_001e: add - IL_001f: bne.un.s IL_000f - - IL_0021: ret + IL_0018: ldloc.0 + IL_0019: ldc.i4.1 + IL_001a: add + IL_001b: bne.un.s IL_000f + + IL_001d: ret } } @@ -96,4 +86,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOff.il.bsl index 3502e1e886d..b6a57f176c1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOff.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOff.il.bsl @@ -45,9 +45,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - class [runtime]System.Tuple`2 current) cil managed + .method public specialname rtspecialname instance void .ctor(int32 pc, class [runtime]System.Tuple`2 current) cil managed { .maxstack 8 @@ -93,7 +91,7 @@ IL_002d: ldc.i4.1 IL_002e: ldc.i4.1 IL_002f: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) + !1) IL_0034: stfld class [runtime]System.Tuple`2 assembly/seq1@9::current IL_0039: ldc.i4.1 IL_003a: ret @@ -105,7 +103,7 @@ IL_0043: ldc.i4.2 IL_0044: ldc.i4.2 IL_0045: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) + !1) IL_004a: stfld class [runtime]System.Tuple`2 assembly/seq1@9::current IL_004f: ldc.i4.1 IL_0050: ret @@ -435,243 +433,243 @@ IL_003b: dup IL_003c: ldc.i4.0 IL_003d: ldc.i4.1 - IL_003e: stelem [runtime]System.Int32 + IL_003e: stelem.i4 + IL_003f: dup + IL_0040: ldc.i4.1 + IL_0041: ldc.i4.2 + IL_0042: stelem.i4 IL_0043: dup - IL_0044: ldc.i4.1 - IL_0045: ldc.i4.2 - IL_0046: stelem [runtime]System.Int32 - IL_004b: dup - IL_004c: ldc.i4.2 - IL_004d: ldc.i4.3 - IL_004e: stelem [runtime]System.Int32 - IL_0053: dup - IL_0054: stsfld int32[] ''.$assembly::array@6 - IL_0059: stloc.1 - IL_005a: ldc.i4.1 - IL_005b: ldc.i4.1 - IL_005c: ldc.i4.s 10 - IL_005e: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0063: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_0068: dup - IL_0069: stsfld class [runtime]System.Collections.Generic.IEnumerable`1 ''.$assembly::aseq@7 - IL_006e: stloc.2 - IL_006f: ldc.i4.1 - IL_0070: ldc.i4.1 - IL_0071: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) - IL_0076: ldc.i4.2 - IL_0077: ldc.i4.2 - IL_0078: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) - IL_007d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::get_Empty() - IL_0082: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, - class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0087: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, - class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_008c: dup - IL_008d: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> ''.$assembly::list1@8 - IL_0092: stloc.3 - IL_0093: ldc.i4.0 - IL_0094: ldnull - IL_0095: newobj instance void assembly/seq1@9::.ctor(int32, + IL_0044: ldc.i4.2 + IL_0045: ldc.i4.3 + IL_0046: stelem.i4 + IL_0047: dup + IL_0048: stsfld int32[] ''.$assembly::array@6 + IL_004d: stloc.1 + IL_004e: ldc.i4.1 + IL_004f: ldc.i4.1 + IL_0050: ldc.i4.s 10 + IL_0052: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + int32, + int32) + IL_0057: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_005c: dup + IL_005d: stsfld class [runtime]System.Collections.Generic.IEnumerable`1 ''.$assembly::aseq@7 + IL_0062: stloc.2 + IL_0063: ldc.i4.1 + IL_0064: ldc.i4.1 + IL_0065: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_006a: ldc.i4.2 + IL_006b: ldc.i4.2 + IL_006c: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_0071: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::get_Empty() + IL_0076: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, + class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_007b: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, + class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_0080: dup + IL_0081: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> ''.$assembly::list1@8 + IL_0086: stloc.3 + IL_0087: ldc.i4.0 + IL_0088: ldnull + IL_0089: newobj instance void assembly/seq1@9::.ctor(int32, class [runtime]System.Tuple`2) - IL_009a: dup - IL_009b: stsfld class [runtime]System.Collections.Generic.IEnumerable`1> ''.$assembly::seq1@9 - IL_00a0: stloc.s V_4 - IL_00a2: ldc.i4.2 - IL_00a3: newarr class [runtime]System.Tuple`2 - IL_00a8: dup - IL_00a9: ldc.i4.0 - IL_00aa: ldc.i4.1 + IL_008e: dup + IL_008f: stsfld class [runtime]System.Collections.Generic.IEnumerable`1> ''.$assembly::seq1@9 + IL_0094: stloc.s V_4 + IL_0096: ldc.i4.2 + IL_0097: newarr class [runtime]System.Tuple`2 + IL_009c: dup + IL_009d: ldc.i4.0 + IL_009e: ldc.i4.1 + IL_009f: ldc.i4.1 + IL_00a0: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_00a5: stelem class [runtime]System.Tuple`2 + IL_00aa: dup IL_00ab: ldc.i4.1 - IL_00ac: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) - IL_00b1: stelem class [runtime]System.Tuple`2 - IL_00b6: dup - IL_00b7: ldc.i4.1 - IL_00b8: ldc.i4.2 - IL_00b9: ldc.i4.2 - IL_00ba: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, - !1) - IL_00bf: stelem class [runtime]System.Tuple`2 - IL_00c4: dup - IL_00c5: stsfld class [runtime]System.Tuple`2[] ''.$assembly::array1@10 - IL_00ca: stloc.s V_5 - IL_00cc: ldc.i4.2 - IL_00cd: ldc.i4.2 - IL_00ce: ldc.i4.0 - IL_00cf: call !!0[0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Create(int32, + IL_00ac: ldc.i4.2 + IL_00ad: ldc.i4.2 + IL_00ae: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_00b3: stelem class [runtime]System.Tuple`2 + IL_00b8: dup + IL_00b9: stsfld class [runtime]System.Tuple`2[] ''.$assembly::array1@10 + IL_00be: stloc.s V_5 + IL_00c0: ldc.i4.2 + IL_00c1: ldc.i4.2 + IL_00c2: ldc.i4.0 + IL_00c3: call !!0[0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Create(int32, int32, !!0) - IL_00d4: dup - IL_00d5: stsfld int32[0...,0...] ''.$assembly::a3@11 - IL_00da: stloc.s V_6 - IL_00dc: ldc.i4.3 - IL_00dd: ldc.i4.3 - IL_00de: ldc.i4.3 - IL_00df: ldc.i4.0 - IL_00e0: call !!0[0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Create(int32, + IL_00c8: dup + IL_00c9: stsfld int32[0...,0...] ''.$assembly::a3@11 + IL_00ce: stloc.s V_6 + IL_00d0: ldc.i4.3 + IL_00d1: ldc.i4.3 + IL_00d2: ldc.i4.3 + IL_00d3: ldc.i4.0 + IL_00d4: call !!0[0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Create(int32, int32, int32, !!0) - IL_00e5: dup - IL_00e6: stsfld int32[0...,0...,0...] ''.$assembly::array3D@12 - IL_00eb: stloc.s V_7 - IL_00ed: ldc.i4.4 - IL_00ee: ldc.i4.4 - IL_00ef: ldc.i4.4 - IL_00f0: ldc.i4.4 - IL_00f1: ldc.i4.0 - IL_00f2: call !!0[0...,0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Create(int32, + IL_00d9: dup + IL_00da: stsfld int32[0...,0...,0...] ''.$assembly::array3D@12 + IL_00df: stloc.s V_7 + IL_00e1: ldc.i4.4 + IL_00e2: ldc.i4.4 + IL_00e3: ldc.i4.4 + IL_00e4: ldc.i4.4 + IL_00e5: ldc.i4.0 + IL_00e6: call !!0[0...,0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Create(int32, int32, int32, int32, !!0) - IL_00f7: dup - IL_00f8: stsfld int32[0...,0...,0...,0...] ''.$assembly::array4D@13 - IL_00fd: stloc.s V_8 - IL_00ff: call int32[] assembly::get_array() - IL_0104: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfArray(!!0[]) - IL_0109: pop - IL_010a: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() - IL_010f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_0114: pop - IL_0115: call class [runtime]System.Tuple`2[] assembly::get_array1() - IL_011a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfArray(class [runtime]System.Tuple`2[]) - IL_011f: pop - IL_0120: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::get_list1() - IL_0125: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>) - IL_012a: pop - IL_012b: call class [runtime]System.Collections.Generic.IEnumerable`1> assembly::get_seq1() - IL_0130: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1>) - IL_0135: pop - IL_0136: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_alist() - IL_013b: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0140: dup - IL_0141: stsfld int32[] ''.$assembly::a1@25 - IL_0146: stloc.s V_9 - IL_0148: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() - IL_014d: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_0152: dup - IL_0153: stsfld int32[] ''.$assembly::a2@26 - IL_0158: stloc.s V_10 - IL_015a: call int32[] assembly::get_a1() - IL_015f: ldc.i4.0 - IL_0160: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Get(!!0[], + IL_00eb: dup + IL_00ec: stsfld int32[0...,0...,0...,0...] ''.$assembly::array4D@13 + IL_00f1: stloc.s V_8 + IL_00f3: call int32[] assembly::get_array() + IL_00f8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfArray(!!0[]) + IL_00fd: pop + IL_00fe: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() + IL_0103: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_0108: pop + IL_0109: call class [runtime]System.Tuple`2[] assembly::get_array1() + IL_010e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfArray(class [runtime]System.Tuple`2[]) + IL_0113: pop + IL_0114: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::get_list1() + IL_0119: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>) + IL_011e: pop + IL_011f: call class [runtime]System.Collections.Generic.IEnumerable`1> assembly::get_seq1() + IL_0124: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1>) + IL_0129: pop + IL_012a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_alist() + IL_012f: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_0134: dup + IL_0135: stsfld int32[] ''.$assembly::a1@25 + IL_013a: stloc.s V_9 + IL_013c: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() + IL_0141: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_0146: dup + IL_0147: stsfld int32[] ''.$assembly::a2@26 + IL_014c: stloc.s V_10 + IL_014e: call int32[] assembly::get_a1() + IL_0153: ldc.i4.0 + IL_0154: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Get(!!0[], int32) - IL_0165: stloc.s V_14 - IL_0167: call int32[] assembly::get_a2() - IL_016c: ldc.i4.0 - IL_016d: ldloc.s V_14 - IL_016f: call void [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Set(!!0[], + IL_0159: stloc.s V_14 + IL_015b: call int32[] assembly::get_a2() + IL_0160: ldc.i4.0 + IL_0161: ldloc.s V_14 + IL_0163: call void [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Set(!!0[], int32, !!0) - IL_0174: nop - IL_0175: call int32[0...,0...] assembly::get_a3() - IL_017a: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length1(!!0[0...,0...]) - IL_017f: call int32[0...,0...] assembly::get_a3() - IL_0184: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length2(!!0[0...,0...]) - IL_0189: call int32[0...,0...] assembly::get_a3() - IL_018e: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base1(!!0[0...,0...]) - IL_0193: call int32[0...,0...] assembly::get_a3() - IL_0198: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base2(!!0[0...,0...]) - IL_019d: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, - !1, - !2, - !3) - IL_01a2: stloc.s V_15 - IL_01a4: ldloc.s V_15 - IL_01a6: stloc.s V_16 - IL_01a8: call int32[0...,0...] assembly::get_a3() - IL_01ad: ldc.i4.0 - IL_01ae: ldc.i4.0 - IL_01af: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Get(!!0[0...,0...], + IL_0168: nop + IL_0169: call int32[0...,0...] assembly::get_a3() + IL_016e: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length1(!!0[0...,0...]) + IL_0173: call int32[0...,0...] assembly::get_a3() + IL_0178: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length2(!!0[0...,0...]) + IL_017d: call int32[0...,0...] assembly::get_a3() + IL_0182: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base1(!!0[0...,0...]) + IL_0187: call int32[0...,0...] assembly::get_a3() + IL_018c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base2(!!0[0...,0...]) + IL_0191: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, + !1, + !2, + !3) + IL_0196: stloc.s V_15 + IL_0198: ldloc.s V_15 + IL_019a: stloc.s V_16 + IL_019c: call int32[0...,0...] assembly::get_a3() + IL_01a1: ldc.i4.0 + IL_01a2: ldc.i4.0 + IL_01a3: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Get(!!0[0...,0...], int32, int32) - IL_01b4: stloc.s V_17 - IL_01b6: call int32[0...,0...] assembly::get_a3() - IL_01bb: ldc.i4.0 - IL_01bc: ldc.i4.0 - IL_01bd: ldloc.s V_17 - IL_01bf: call void [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Set(!!0[0...,0...], + IL_01a8: stloc.s V_17 + IL_01aa: call int32[0...,0...] assembly::get_a3() + IL_01af: ldc.i4.0 + IL_01b0: ldc.i4.0 + IL_01b1: ldloc.s V_17 + IL_01b3: call void [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Set(!!0[0...,0...], int32, int32, !!0) - IL_01c4: nop - IL_01c5: call int32[0...,0...,0...] assembly::get_array3D() - IL_01ca: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length1(!!0[0...,0...,0...]) - IL_01cf: call int32[0...,0...,0...] assembly::get_array3D() - IL_01d4: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length2(!!0[0...,0...,0...]) - IL_01d9: call int32[0...,0...,0...] assembly::get_array3D() - IL_01de: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length3(!!0[0...,0...,0...]) - IL_01e3: newobj instance void class [runtime]System.Tuple`3::.ctor(!0, - !1, - !2) - IL_01e8: stloc.s V_18 - IL_01ea: ldloc.s V_18 - IL_01ec: stloc.s V_19 - IL_01ee: call int32[0...,0...,0...] assembly::get_array3D() - IL_01f3: ldc.i4.0 - IL_01f4: ldc.i4.0 - IL_01f5: ldc.i4.0 - IL_01f6: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Get(!!0[0...,0...,0...], + IL_01b8: nop + IL_01b9: call int32[0...,0...,0...] assembly::get_array3D() + IL_01be: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length1(!!0[0...,0...,0...]) + IL_01c3: call int32[0...,0...,0...] assembly::get_array3D() + IL_01c8: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length2(!!0[0...,0...,0...]) + IL_01cd: call int32[0...,0...,0...] assembly::get_array3D() + IL_01d2: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length3(!!0[0...,0...,0...]) + IL_01d7: newobj instance void class [runtime]System.Tuple`3::.ctor(!0, + !1, + !2) + IL_01dc: stloc.s V_18 + IL_01de: ldloc.s V_18 + IL_01e0: stloc.s V_19 + IL_01e2: call int32[0...,0...,0...] assembly::get_array3D() + IL_01e7: ldc.i4.0 + IL_01e8: ldc.i4.0 + IL_01e9: ldc.i4.0 + IL_01ea: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Get(!!0[0...,0...,0...], int32, int32, int32) - IL_01fb: stloc.s V_20 - IL_01fd: call int32[0...,0...,0...] assembly::get_array3D() - IL_0202: ldc.i4.0 - IL_0203: ldc.i4.0 - IL_0204: ldc.i4.0 - IL_0205: ldloc.s V_20 - IL_0207: call void [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Set(!!0[0...,0...,0...], + IL_01ef: stloc.s V_20 + IL_01f1: call int32[0...,0...,0...] assembly::get_array3D() + IL_01f6: ldc.i4.0 + IL_01f7: ldc.i4.0 + IL_01f8: ldc.i4.0 + IL_01f9: ldloc.s V_20 + IL_01fb: call void [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Set(!!0[0...,0...,0...], int32, int32, int32, !!0) - IL_020c: nop - IL_020d: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0212: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length1(!!0[0...,0...,0...,0...]) - IL_0217: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_021c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length2(!!0[0...,0...,0...,0...]) - IL_0221: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0226: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length3(!!0[0...,0...,0...,0...]) - IL_022b: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0230: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length4(!!0[0...,0...,0...,0...]) - IL_0235: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, - !1, - !2, - !3) - IL_023a: stloc.s V_21 - IL_023c: ldloc.s V_21 - IL_023e: stloc.s V_22 - IL_0240: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0245: ldc.i4.0 - IL_0246: ldc.i4.0 - IL_0247: ldc.i4.0 - IL_0248: ldc.i4.0 - IL_0249: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Get(!!0[0...,0...,0...,0...], + IL_0200: nop + IL_0201: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0206: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length1(!!0[0...,0...,0...,0...]) + IL_020b: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0210: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length2(!!0[0...,0...,0...,0...]) + IL_0215: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_021a: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length3(!!0[0...,0...,0...,0...]) + IL_021f: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0224: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length4(!!0[0...,0...,0...,0...]) + IL_0229: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, + !1, + !2, + !3) + IL_022e: stloc.s V_21 + IL_0230: ldloc.s V_21 + IL_0232: stloc.s V_22 + IL_0234: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0239: ldc.i4.0 + IL_023a: ldc.i4.0 + IL_023b: ldc.i4.0 + IL_023c: ldc.i4.0 + IL_023d: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Get(!!0[0...,0...,0...,0...], int32, int32, int32, int32) - IL_024e: stloc.s V_23 - IL_0250: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0255: ldc.i4.0 - IL_0256: ldc.i4.0 - IL_0257: ldc.i4.0 - IL_0258: ldc.i4.0 - IL_0259: ldloc.s V_23 - IL_025b: call void [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Set(!!0[0...,0...,0...,0...], + IL_0242: stloc.s V_23 + IL_0244: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0249: ldc.i4.0 + IL_024a: ldc.i4.0 + IL_024b: ldc.i4.0 + IL_024c: ldc.i4.0 + IL_024d: ldloc.s V_23 + IL_024f: call void [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Set(!!0[0...,0...,0...,0...], int32, int32, int32, int32, !!0) - IL_0260: nop - IL_0261: ret + IL_0254: nop + IL_0255: ret } } @@ -680,4 +678,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOn.il.bsl index 35494e25b75..e809a0fd89f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOn.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/CodeGenRenamings01.fs.RealInternalSignatureOn.il.bsl @@ -16,16 +16,6 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 -} -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - } .module assembly.exe @@ -55,9 +45,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - class [runtime]System.Tuple`2 current) cil managed + .method public specialname rtspecialname instance void .ctor(int32 pc, class [runtime]System.Tuple`2 current) cil managed { .maxstack 8 @@ -373,223 +361,223 @@ IL_0031: dup IL_0032: ldc.i4.0 IL_0033: ldc.i4.1 - IL_0034: stelem [runtime]System.Int32 + IL_0034: stelem.i4 + IL_0035: dup + IL_0036: ldc.i4.1 + IL_0037: ldc.i4.2 + IL_0038: stelem.i4 IL_0039: dup - IL_003a: ldc.i4.1 - IL_003b: ldc.i4.2 - IL_003c: stelem [runtime]System.Int32 - IL_0041: dup - IL_0042: ldc.i4.2 - IL_0043: ldc.i4.3 - IL_0044: stelem [runtime]System.Int32 - IL_0049: stsfld int32[] assembly::array@6 - IL_004e: ldc.i4.1 - IL_004f: ldc.i4.1 - IL_0050: ldc.i4.s 10 - IL_0052: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + IL_003a: ldc.i4.2 + IL_003b: ldc.i4.3 + IL_003c: stelem.i4 + IL_003d: stsfld int32[] assembly::array@6 + IL_0042: ldc.i4.1 + IL_0043: ldc.i4.1 + IL_0044: ldc.i4.s 10 + IL_0046: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, int32, int32) - IL_0057: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_005c: stsfld class [runtime]System.Collections.Generic.IEnumerable`1 assembly::aseq@7 - IL_0061: ldc.i4.1 - IL_0062: ldc.i4.1 - IL_0063: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_004b: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_0050: stsfld class [runtime]System.Collections.Generic.IEnumerable`1 assembly::aseq@7 + IL_0055: ldc.i4.1 + IL_0056: ldc.i4.1 + IL_0057: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_0068: ldc.i4.2 - IL_0069: ldc.i4.2 - IL_006a: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_005c: ldc.i4.2 + IL_005d: ldc.i4.2 + IL_005e: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_006f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::get_Empty() - IL_0074: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, + IL_0063: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::get_Empty() + IL_0068: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0079: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, + IL_006d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_007e: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::list1@8 - IL_0083: ldc.i4.0 - IL_0084: ldnull - IL_0085: newobj instance void assembly/seq1@9::.ctor(int32, + IL_0072: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::list1@8 + IL_0077: ldc.i4.0 + IL_0078: ldnull + IL_0079: newobj instance void assembly/seq1@9::.ctor(int32, class [runtime]System.Tuple`2) - IL_008a: stsfld class [runtime]System.Collections.Generic.IEnumerable`1> assembly::seq1@9 - IL_008f: ldc.i4.2 - IL_0090: newarr class [runtime]System.Tuple`2 - IL_0095: dup - IL_0096: ldc.i4.0 - IL_0097: ldc.i4.1 - IL_0098: ldc.i4.1 - IL_0099: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_007e: stsfld class [runtime]System.Collections.Generic.IEnumerable`1> assembly::seq1@9 + IL_0083: ldc.i4.2 + IL_0084: newarr class [runtime]System.Tuple`2 + IL_0089: dup + IL_008a: ldc.i4.0 + IL_008b: ldc.i4.1 + IL_008c: ldc.i4.1 + IL_008d: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_009e: stelem class [runtime]System.Tuple`2 - IL_00a3: dup - IL_00a4: ldc.i4.1 - IL_00a5: ldc.i4.2 - IL_00a6: ldc.i4.2 - IL_00a7: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_0092: stelem class [runtime]System.Tuple`2 + IL_0097: dup + IL_0098: ldc.i4.1 + IL_0099: ldc.i4.2 + IL_009a: ldc.i4.2 + IL_009b: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_00ac: stelem class [runtime]System.Tuple`2 - IL_00b1: stsfld class [runtime]System.Tuple`2[] assembly::array1@10 - IL_00b6: ldc.i4.2 - IL_00b7: ldc.i4.2 - IL_00b8: ldc.i4.0 - IL_00b9: call !!0[0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Create(int32, + IL_00a0: stelem class [runtime]System.Tuple`2 + IL_00a5: stsfld class [runtime]System.Tuple`2[] assembly::array1@10 + IL_00aa: ldc.i4.2 + IL_00ab: ldc.i4.2 + IL_00ac: ldc.i4.0 + IL_00ad: call !!0[0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Create(int32, int32, !!0) - IL_00be: stsfld int32[0...,0...] assembly::a3@11 - IL_00c3: ldc.i4.3 - IL_00c4: ldc.i4.3 - IL_00c5: ldc.i4.3 - IL_00c6: ldc.i4.0 - IL_00c7: call !!0[0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Create(int32, + IL_00b2: stsfld int32[0...,0...] assembly::a3@11 + IL_00b7: ldc.i4.3 + IL_00b8: ldc.i4.3 + IL_00b9: ldc.i4.3 + IL_00ba: ldc.i4.0 + IL_00bb: call !!0[0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Create(int32, int32, int32, !!0) - IL_00cc: stsfld int32[0...,0...,0...] assembly::array3D@12 - IL_00d1: ldc.i4.4 - IL_00d2: ldc.i4.4 - IL_00d3: ldc.i4.4 - IL_00d4: ldc.i4.4 - IL_00d5: ldc.i4.0 - IL_00d6: call !!0[0...,0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Create(int32, + IL_00c0: stsfld int32[0...,0...,0...] assembly::array3D@12 + IL_00c5: ldc.i4.4 + IL_00c6: ldc.i4.4 + IL_00c7: ldc.i4.4 + IL_00c8: ldc.i4.4 + IL_00c9: ldc.i4.0 + IL_00ca: call !!0[0...,0...,0...,0...] [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Create(int32, int32, int32, int32, !!0) - IL_00db: stsfld int32[0...,0...,0...,0...] assembly::array4D@13 - IL_00e0: call int32[] assembly::get_array() - IL_00e5: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfArray(!!0[]) - IL_00ea: pop - IL_00eb: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() - IL_00f0: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_00f5: pop - IL_00f6: call class [runtime]System.Tuple`2[] assembly::get_array1() - IL_00fb: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfArray(class [runtime]System.Tuple`2[]) - IL_0100: pop - IL_0101: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::get_list1() - IL_0106: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>) - IL_010b: pop - IL_010c: call class [runtime]System.Collections.Generic.IEnumerable`1> assembly::get_seq1() - IL_0111: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1>) - IL_0116: pop - IL_0117: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_alist() - IL_011c: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0121: stsfld int32[] assembly::a1@25 - IL_0126: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() - IL_012b: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) - IL_0130: stsfld int32[] assembly::a2@26 - IL_0135: call int32[] assembly::get_a1() - IL_013a: ldc.i4.0 - IL_013b: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Get(!!0[], + IL_00cf: stsfld int32[0...,0...,0...,0...] assembly::array4D@13 + IL_00d4: call int32[] assembly::get_array() + IL_00d9: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfArray(!!0[]) + IL_00de: pop + IL_00df: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() + IL_00e4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_00e9: pop + IL_00ea: call class [runtime]System.Tuple`2[] assembly::get_array1() + IL_00ef: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfArray(class [runtime]System.Tuple`2[]) + IL_00f4: pop + IL_00f5: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> assembly::get_list1() + IL_00fa: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>) + IL_00ff: pop + IL_0100: call class [runtime]System.Collections.Generic.IEnumerable`1> assembly::get_seq1() + IL_0105: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpMap`2 [FSharp.Core]Microsoft.FSharp.Collections.MapModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1>) + IL_010a: pop + IL_010b: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 assembly::get_alist() + IL_0110: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfList(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) + IL_0115: stsfld int32[] assembly::a1@25 + IL_011a: call class [runtime]System.Collections.Generic.IEnumerable`1 assembly::get_aseq() + IL_011f: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::OfSeq(class [runtime]System.Collections.Generic.IEnumerable`1) + IL_0124: stsfld int32[] assembly::a2@26 + IL_0129: call int32[] assembly::get_a1() + IL_012e: ldc.i4.0 + IL_012f: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Get(!!0[], int32) - IL_0140: stloc.3 - IL_0141: call int32[] assembly::get_a2() - IL_0146: ldc.i4.0 - IL_0147: ldloc.3 - IL_0148: call void [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Set(!!0[], + IL_0134: stloc.3 + IL_0135: call int32[] assembly::get_a2() + IL_013a: ldc.i4.0 + IL_013b: ldloc.3 + IL_013c: call void [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Set(!!0[], int32, !!0) - IL_014d: nop - IL_014e: call int32[0...,0...] assembly::get_a3() - IL_0153: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length1(!!0[0...,0...]) - IL_0158: call int32[0...,0...] assembly::get_a3() - IL_015d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length2(!!0[0...,0...]) - IL_0162: call int32[0...,0...] assembly::get_a3() - IL_0167: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base1(!!0[0...,0...]) - IL_016c: call int32[0...,0...] assembly::get_a3() - IL_0171: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base2(!!0[0...,0...]) - IL_0176: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, + IL_0141: nop + IL_0142: call int32[0...,0...] assembly::get_a3() + IL_0147: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length1(!!0[0...,0...]) + IL_014c: call int32[0...,0...] assembly::get_a3() + IL_0151: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Length2(!!0[0...,0...]) + IL_0156: call int32[0...,0...] assembly::get_a3() + IL_015b: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base1(!!0[0...,0...]) + IL_0160: call int32[0...,0...] assembly::get_a3() + IL_0165: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Base2(!!0[0...,0...]) + IL_016a: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, !1, !2, !3) - IL_017b: stloc.s V_4 - IL_017d: ldloc.s V_4 - IL_017f: stloc.s V_5 - IL_0181: call int32[0...,0...] assembly::get_a3() - IL_0186: ldc.i4.0 - IL_0187: ldc.i4.0 - IL_0188: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Get(!!0[0...,0...], + IL_016f: stloc.s V_4 + IL_0171: ldloc.s V_4 + IL_0173: stloc.s V_5 + IL_0175: call int32[0...,0...] assembly::get_a3() + IL_017a: ldc.i4.0 + IL_017b: ldc.i4.0 + IL_017c: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Get(!!0[0...,0...], int32, int32) - IL_018d: stloc.s V_6 - IL_018f: call int32[0...,0...] assembly::get_a3() - IL_0194: ldc.i4.0 - IL_0195: ldc.i4.0 - IL_0196: ldloc.s V_6 - IL_0198: call void [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Set(!!0[0...,0...], + IL_0181: stloc.s V_6 + IL_0183: call int32[0...,0...] assembly::get_a3() + IL_0188: ldc.i4.0 + IL_0189: ldc.i4.0 + IL_018a: ldloc.s V_6 + IL_018c: call void [FSharp.Core]Microsoft.FSharp.Collections.Array2DModule::Set(!!0[0...,0...], int32, int32, !!0) - IL_019d: nop - IL_019e: call int32[0...,0...,0...] assembly::get_array3D() - IL_01a3: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length1(!!0[0...,0...,0...]) - IL_01a8: call int32[0...,0...,0...] assembly::get_array3D() - IL_01ad: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length2(!!0[0...,0...,0...]) - IL_01b2: call int32[0...,0...,0...] assembly::get_array3D() - IL_01b7: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length3(!!0[0...,0...,0...]) - IL_01bc: newobj instance void class [runtime]System.Tuple`3::.ctor(!0, + IL_0191: nop + IL_0192: call int32[0...,0...,0...] assembly::get_array3D() + IL_0197: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length1(!!0[0...,0...,0...]) + IL_019c: call int32[0...,0...,0...] assembly::get_array3D() + IL_01a1: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length2(!!0[0...,0...,0...]) + IL_01a6: call int32[0...,0...,0...] assembly::get_array3D() + IL_01ab: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Length3(!!0[0...,0...,0...]) + IL_01b0: newobj instance void class [runtime]System.Tuple`3::.ctor(!0, !1, !2) - IL_01c1: stloc.s V_7 - IL_01c3: ldloc.s V_7 - IL_01c5: stloc.s V_8 - IL_01c7: call int32[0...,0...,0...] assembly::get_array3D() - IL_01cc: ldc.i4.0 - IL_01cd: ldc.i4.0 - IL_01ce: ldc.i4.0 - IL_01cf: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Get(!!0[0...,0...,0...], + IL_01b5: stloc.s V_7 + IL_01b7: ldloc.s V_7 + IL_01b9: stloc.s V_8 + IL_01bb: call int32[0...,0...,0...] assembly::get_array3D() + IL_01c0: ldc.i4.0 + IL_01c1: ldc.i4.0 + IL_01c2: ldc.i4.0 + IL_01c3: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Get(!!0[0...,0...,0...], int32, int32, int32) - IL_01d4: stloc.s V_9 - IL_01d6: call int32[0...,0...,0...] assembly::get_array3D() - IL_01db: ldc.i4.0 - IL_01dc: ldc.i4.0 - IL_01dd: ldc.i4.0 - IL_01de: ldloc.s V_9 - IL_01e0: call void [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Set(!!0[0...,0...,0...], + IL_01c8: stloc.s V_9 + IL_01ca: call int32[0...,0...,0...] assembly::get_array3D() + IL_01cf: ldc.i4.0 + IL_01d0: ldc.i4.0 + IL_01d1: ldc.i4.0 + IL_01d2: ldloc.s V_9 + IL_01d4: call void [FSharp.Core]Microsoft.FSharp.Collections.Array3DModule::Set(!!0[0...,0...,0...], int32, int32, int32, !!0) - IL_01e5: nop - IL_01e6: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_01eb: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length1(!!0[0...,0...,0...,0...]) - IL_01f0: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_01f5: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length2(!!0[0...,0...,0...,0...]) - IL_01fa: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_01ff: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length3(!!0[0...,0...,0...,0...]) - IL_0204: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_0209: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length4(!!0[0...,0...,0...,0...]) - IL_020e: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, + IL_01d9: nop + IL_01da: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_01df: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length1(!!0[0...,0...,0...,0...]) + IL_01e4: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_01e9: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length2(!!0[0...,0...,0...,0...]) + IL_01ee: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_01f3: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length3(!!0[0...,0...,0...,0...]) + IL_01f8: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_01fd: call int32 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Length4(!!0[0...,0...,0...,0...]) + IL_0202: newobj instance void class [runtime]System.Tuple`4::.ctor(!0, !1, !2, !3) - IL_0213: stloc.s V_10 - IL_0215: ldloc.s V_10 - IL_0217: stloc.s V_11 - IL_0219: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_021e: ldc.i4.0 - IL_021f: ldc.i4.0 - IL_0220: ldc.i4.0 - IL_0221: ldc.i4.0 - IL_0222: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Get(!!0[0...,0...,0...,0...], + IL_0207: stloc.s V_10 + IL_0209: ldloc.s V_10 + IL_020b: stloc.s V_11 + IL_020d: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0212: ldc.i4.0 + IL_0213: ldc.i4.0 + IL_0214: ldc.i4.0 + IL_0215: ldc.i4.0 + IL_0216: call !!0 [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Get(!!0[0...,0...,0...,0...], int32, int32, int32, int32) - IL_0227: stloc.s V_12 - IL_0229: call int32[0...,0...,0...,0...] assembly::get_array4D() - IL_022e: ldc.i4.0 - IL_022f: ldc.i4.0 - IL_0230: ldc.i4.0 - IL_0231: ldc.i4.0 - IL_0232: ldloc.s V_12 - IL_0234: call void [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Set(!!0[0...,0...,0...,0...], + IL_021b: stloc.s V_12 + IL_021d: call int32[0...,0...,0...,0...] assembly::get_array4D() + IL_0222: ldc.i4.0 + IL_0223: ldc.i4.0 + IL_0224: ldc.i4.0 + IL_0225: ldc.i4.0 + IL_0226: ldloc.s V_12 + IL_0228: call void [FSharp.Core]Microsoft.FSharp.Collections.Array4DModule::Set(!!0[0...,0...,0...,0...], int32, int32, int32, int32, !!0) - IL_0239: nop - IL_023a: ret + IL_022d: nop + IL_022e: ret } .property class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 @@ -676,4 +664,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl index 0fd66bf54cf..ba34e38db13 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -209,28 +209,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -244,33 +244,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.release.bsl index 0fd66bf54cf..ba34e38db13 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -209,28 +209,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -244,33 +244,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl index 396cf2ef4fc..3a819400ad8 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -203,28 +203,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -238,33 +238,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed @@ -790,4 +790,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.release.bsl index ef8c6021f6b..3a819400ad8 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -203,28 +203,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -238,33 +238,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl index d262ec04953..d157a43ce85 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -211,28 +211,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -246,33 +246,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.release.bsl index d262ec04953..d157a43ce85 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -211,28 +211,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -246,33 +246,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 06bf6970470..05ce6c336c5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -205,28 +205,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -240,33 +240,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed @@ -809,4 +809,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.release.bsl index 8ed4541528d..05ce6c336c5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -205,28 +205,28 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0022 + IL_0004: br.s IL_001e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) + IL_001a: ldloc.1 + IL_001b: ldc.i4.1 + IL_001c: add + IL_001d: stloc.1 IL_001e: ldloc.1 - IL_001f: ldc.i4.1 - IL_0020: add - IL_0021: stloc.1 - IL_0022: ldloc.1 - IL_0023: ldloc.0 - IL_0024: ldlen - IL_0025: conv.i4 - IL_0026: blt.s IL_0006 + IL_001f: ldloc.0 + IL_0020: ldlen + IL_0021: conv.i4 + IL_0022: blt.s IL_0006 - IL_0028: ret + IL_0024: ret } .method public static void testSimpleForEachArrayLoopWithTwoStatements(int32[] inp) cil managed @@ -240,33 +240,33 @@ IL_0001: stloc.0 IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0032 + IL_0004: br.s IL_002e IL_0006: ldloc.0 IL_0007: ldloc.1 - IL_0008: ldelem [runtime]System.Int32 - IL_000d: stloc.2 - IL_000e: ldstr "{0}" - IL_0013: ldloc.2 - IL_0014: box [runtime]System.Int32 - IL_0019: call void [runtime]System.Console::WriteLine(string, + IL_0008: ldelem.i4 + IL_0009: stloc.2 + IL_000a: ldstr "{0}" + IL_000f: ldloc.2 + IL_0010: box [runtime]System.Int32 + IL_0015: call void [runtime]System.Console::WriteLine(string, object) - IL_001e: ldstr "{0}" - IL_0023: ldloc.2 - IL_0024: box [runtime]System.Int32 - IL_0029: call void [runtime]System.Console::WriteLine(string, + IL_001a: ldstr "{0}" + IL_001f: ldloc.2 + IL_0020: box [runtime]System.Int32 + IL_0025: call void [runtime]System.Console::WriteLine(string, object) + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: add + IL_002d: stloc.1 IL_002e: ldloc.1 - IL_002f: ldc.i4.1 - IL_0030: add - IL_0031: stloc.1 - IL_0032: ldloc.1 - IL_0033: ldloc.0 - IL_0034: ldlen - IL_0035: conv.i4 - IL_0036: blt.s IL_0006 + IL_002f: ldloc.0 + IL_0030: ldlen + IL_0031: conv.i4 + IL_0032: blt.s IL_0006 - IL_0038: ret + IL_0034: ret } .method public static void testSimpleForEachListLoopWithOneStatement(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 inp) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.debug.bsl index 7852e2509a4..49122ee1b8d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.debug.bsl @@ -680,87 +680,87 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 - IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: stloc.s V_6 - IL_0094: ldloc.s V_5 - IL_0096: stloc.s V_7 - IL_0098: ldloc.s V_6 - IL_009a: ldloc.s V_7 - IL_009c: conv.i - IL_009d: sizeof [runtime]System.Double - IL_00a3: mul - IL_00a4: add - IL_00a5: ldobj [runtime]System.Double - IL_00aa: ldloc.1 - IL_00ab: stloc.s V_8 - IL_00ad: ldc.i4.1 - IL_00ae: stloc.s V_9 - IL_00b0: ldloc.s V_8 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: stloc.s V_11 - IL_00b8: ldloc.s V_10 - IL_00ba: ldloc.s V_11 - IL_00bc: conv.i - IL_00bd: sizeof [runtime]System.Double - IL_00c3: mul - IL_00c4: add - IL_00c5: ldobj [runtime]System.Double - IL_00ca: add - IL_00cb: ret + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: stloc.s V_6 + IL_007c: ldloc.s V_5 + IL_007e: stloc.s V_7 + IL_0080: ldloc.s V_6 + IL_0082: ldloc.s V_7 + IL_0084: conv.i + IL_0085: sizeof [runtime]System.Double + IL_008b: mul + IL_008c: add + IL_008d: ldobj [runtime]System.Double + IL_0092: ldloc.1 + IL_0093: stloc.s V_8 + IL_0095: ldc.i4.1 + IL_0096: stloc.s V_9 + IL_0098: ldloc.s V_8 + IL_009a: stloc.s V_10 + IL_009c: ldloc.s V_9 + IL_009e: stloc.s V_11 + IL_00a0: ldloc.s V_10 + IL_00a2: ldloc.s V_11 + IL_00a4: conv.i + IL_00a5: sizeof [runtime]System.Double + IL_00ab: mul + IL_00ac: add + IL_00ad: ldobj [runtime]System.Double + IL_00b2: add + IL_00b3: ret } .method public static float64 pinArray2() cil managed @@ -783,67 +783,67 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: stloc.s V_5 - IL_007a: ldloc.s V_4 - IL_007c: stloc.s V_6 - IL_007e: ldloc.s V_5 - IL_0080: ldloc.s V_6 - IL_0082: conv.i - IL_0083: sizeof [runtime]System.Double - IL_0089: mul - IL_008a: add - IL_008b: ldobj [runtime]System.Double - IL_0090: ldloc.1 - IL_0091: stloc.s V_7 - IL_0093: ldc.i4.1 - IL_0094: stloc.s V_8 - IL_0096: ldloc.s V_7 - IL_0098: stloc.s V_9 - IL_009a: ldloc.s V_8 - IL_009c: stloc.s V_10 - IL_009e: ldloc.s V_9 - IL_00a0: ldloc.s V_10 - IL_00a2: conv.i - IL_00a3: sizeof [runtime]System.Double - IL_00a9: mul - IL_00aa: add - IL_00ab: ldobj [runtime]System.Double - IL_00b0: add - IL_00b1: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: stloc.s V_5 + IL_0062: ldloc.s V_4 + IL_0064: stloc.s V_6 + IL_0066: ldloc.s V_5 + IL_0068: ldloc.s V_6 + IL_006a: conv.i + IL_006b: sizeof [runtime]System.Double + IL_0071: mul + IL_0072: add + IL_0073: ldobj [runtime]System.Double + IL_0078: ldloc.1 + IL_0079: stloc.s V_7 + IL_007b: ldc.i4.1 + IL_007c: stloc.s V_8 + IL_007e: ldloc.s V_7 + IL_0080: stloc.s V_9 + IL_0082: ldloc.s V_8 + IL_0084: stloc.s V_10 + IL_0086: ldloc.s V_9 + IL_0088: ldloc.s V_10 + IL_008a: conv.i + IL_008b: sizeof [runtime]System.Double + IL_0091: mul + IL_0092: add + IL_0093: ldobj [runtime]System.Double + IL_0098: add + IL_0099: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.release.bsl index ab7bca6340a..01a58c52c7d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.net472.release.bsl @@ -598,79 +598,79 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: ldloc.s V_5 + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 IL_0094: conv.i IL_0095: sizeof [runtime]System.Double IL_009b: mul IL_009c: add IL_009d: ldobj [runtime]System.Double - IL_00a2: ldloc.1 - IL_00a3: stloc.s V_6 - IL_00a5: ldc.i4.1 - IL_00a6: stloc.s V_7 - IL_00a8: ldloc.s V_6 - IL_00aa: ldloc.s V_7 - IL_00ac: conv.i - IL_00ad: sizeof [runtime]System.Double - IL_00b3: mul - IL_00b4: add - IL_00b5: ldobj [runtime]System.Double - IL_00ba: add - IL_00bb: ret + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -689,59 +689,59 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: ldloc.s V_4 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 IL_007a: conv.i IL_007b: sizeof [runtime]System.Double IL_0081: mul IL_0082: add IL_0083: ldobj [runtime]System.Double - IL_0088: ldloc.1 - IL_0089: stloc.s V_5 - IL_008b: ldc.i4.1 - IL_008c: stloc.s V_6 - IL_008e: ldloc.s V_5 - IL_0090: ldloc.s V_6 - IL_0092: conv.i - IL_0093: sizeof [runtime]System.Double - IL_0099: mul - IL_009a: add - IL_009b: ldobj [runtime]System.Double - IL_00a0: add - IL_00a1: ret + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.debug.bsl index bda000c5fe3..b4424e5c131 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.debug.bsl @@ -136,18 +136,12 @@ int32 V_3, class [runtime]System.Collections.IComparer V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12) + int32 V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0070 + IL_0001: brfalse.s IL_0057 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_006e + IL_0004: brfalse.s IL_0055 IL_0006: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() IL_000b: stloc.1 @@ -157,68 +151,56 @@ IL_0013: ldarg.1 IL_0014: ldfld int32 assembly/Point::x@ IL_0019: stloc.3 - IL_001a: ldloc.1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.2 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_5 - IL_0025: ldloc.s V_6 - IL_0027: cgt - IL_0029: ldloc.s V_5 - IL_002b: ldloc.s V_6 - IL_002d: clt - IL_002f: sub - IL_0030: stloc.0 - IL_0031: ldloc.0 - IL_0032: ldc.i4.0 - IL_0033: bge.s IL_0037 - - IL_0035: ldloc.0 - IL_0036: ret + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: cgt + IL_001e: ldloc.2 + IL_001f: ldloc.3 + IL_0020: clt + IL_0022: sub + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: bge.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret - IL_0037: ldloc.0 - IL_0038: ldc.i4.0 - IL_0039: ble.s IL_003d - - IL_003b: ldloc.0 - IL_003c: ret - - IL_003d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0042: stloc.s V_7 - IL_0044: ldarg.0 - IL_0045: ldfld int32 assembly/Point::y@ - IL_004a: stloc.s V_8 - IL_004c: ldarg.1 - IL_004d: ldfld int32 assembly/Point::y@ - IL_0052: stloc.s V_9 - IL_0054: ldloc.s V_7 - IL_0056: stloc.s V_10 - IL_0058: ldloc.s V_8 - IL_005a: stloc.s V_11 - IL_005c: ldloc.s V_9 - IL_005e: stloc.s V_12 - IL_0060: ldloc.s V_11 - IL_0062: ldloc.s V_12 - IL_0064: cgt - IL_0066: ldloc.s V_11 - IL_0068: ldloc.s V_12 - IL_006a: clt - IL_006c: sub - IL_006d: ret - - IL_006e: ldc.i4.1 - IL_006f: ret - - IL_0070: ldarg.1 - IL_0071: brfalse.s IL_0075 - - IL_0073: ldc.i4.m1 - IL_0074: ret - - IL_0075: ldc.i4.0 - IL_0076: ret + IL_002a: ldloc.0 + IL_002b: ldc.i4.0 + IL_002c: ble.s IL_0030 + + IL_002e: ldloc.0 + IL_002f: ret + + IL_0030: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0035: stloc.s V_4 + IL_0037: ldarg.0 + IL_0038: ldfld int32 assembly/Point::y@ + IL_003d: stloc.s V_5 + IL_003f: ldarg.1 + IL_0040: ldfld int32 assembly/Point::y@ + IL_0045: stloc.s V_6 + IL_0047: ldloc.s V_5 + IL_0049: ldloc.s V_6 + IL_004b: cgt + IL_004d: ldloc.s V_5 + IL_004f: ldloc.s V_6 + IL_0051: clt + IL_0053: sub + IL_0054: ret + + IL_0055: ldc.i4.1 + IL_0056: ret + + IL_0057: ldarg.1 + IL_0058: brfalse.s IL_005c + + IL_005a: ldc.i4.m1 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -246,24 +228,18 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.1 IL_0001: unbox.any assembly/Point IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 IL_0009: ldarg.0 - IL_000a: brfalse.s IL_007a + IL_000a: brfalse.s IL_0063 IL_000c: ldarg.1 IL_000d: unbox.any assembly/Point - IL_0012: brfalse.s IL_0078 + IL_0012: brfalse.s IL_0061 IL_0014: ldarg.2 IL_0015: stloc.3 @@ -273,69 +249,57 @@ IL_001e: ldloc.1 IL_001f: ldfld int32 assembly/Point::x@ IL_0024: stloc.s V_5 - IL_0026: ldloc.3 - IL_0027: stloc.s V_6 - IL_0029: ldloc.s V_4 - IL_002b: stloc.s V_7 - IL_002d: ldloc.s V_5 - IL_002f: stloc.s V_8 - IL_0031: ldloc.s V_7 - IL_0033: ldloc.s V_8 - IL_0035: cgt - IL_0037: ldloc.s V_7 - IL_0039: ldloc.s V_8 - IL_003b: clt - IL_003d: sub - IL_003e: stloc.2 - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: bge.s IL_0045 - - IL_0043: ldloc.2 - IL_0044: ret - - IL_0045: ldloc.2 - IL_0046: ldc.i4.0 - IL_0047: ble.s IL_004b - - IL_0049: ldloc.2 - IL_004a: ret - - IL_004b: ldarg.2 - IL_004c: stloc.s V_9 - IL_004e: ldarg.0 - IL_004f: ldfld int32 assembly/Point::y@ - IL_0054: stloc.s V_10 - IL_0056: ldloc.1 - IL_0057: ldfld int32 assembly/Point::y@ - IL_005c: stloc.s V_11 - IL_005e: ldloc.s V_9 - IL_0060: stloc.s V_12 - IL_0062: ldloc.s V_10 - IL_0064: stloc.s V_13 - IL_0066: ldloc.s V_11 - IL_0068: stloc.s V_14 - IL_006a: ldloc.s V_13 - IL_006c: ldloc.s V_14 - IL_006e: cgt - IL_0070: ldloc.s V_13 - IL_0072: ldloc.s V_14 - IL_0074: clt - IL_0076: sub - IL_0077: ret - - IL_0078: ldc.i4.1 - IL_0079: ret - - IL_007a: ldarg.1 - IL_007b: unbox.any assembly/Point - IL_0080: brfalse.s IL_0084 - - IL_0082: ldc.i4.m1 - IL_0083: ret - - IL_0084: ldc.i4.0 - IL_0085: ret + IL_0026: ldloc.s V_4 + IL_0028: ldloc.s V_5 + IL_002a: cgt + IL_002c: ldloc.s V_4 + IL_002e: ldloc.s V_5 + IL_0030: clt + IL_0032: sub + IL_0033: stloc.2 + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a + + IL_0038: ldloc.2 + IL_0039: ret + + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 + + IL_003e: ldloc.2 + IL_003f: ret + + IL_0040: ldarg.2 + IL_0041: stloc.s V_6 + IL_0043: ldarg.0 + IL_0044: ldfld int32 assembly/Point::y@ + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/Point::y@ + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: unbox.any assembly/Point + IL_0069: brfalse.s IL_006d + + IL_006b: ldc.i4.m1 + IL_006c: ret + + IL_006d: ldc.i4.0 + IL_006e: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -345,13 +309,9 @@ .maxstack 7 .locals init (int32 V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0042 + IL_0001: brfalse.s IL_0035 IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -360,44 +320,36 @@ IL_000b: stloc.1 IL_000c: ldarg.0 IL_000d: ldfld int32 assembly/Point::y@ - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldloc.2 - IL_0016: ldloc.0 - IL_0017: ldc.i4.6 - IL_0018: shl - IL_0019: ldloc.0 - IL_001a: ldc.i4.2 - IL_001b: shr - IL_001c: add - IL_001d: add - IL_001e: add - IL_001f: stloc.0 - IL_0020: ldc.i4 0x9e3779b9 - IL_0025: ldarg.1 - IL_0026: stloc.s V_4 - IL_0028: ldarg.0 - IL_0029: ldfld int32 assembly/Point::x@ - IL_002e: stloc.s V_5 - IL_0030: ldloc.s V_4 - IL_0032: stloc.s V_6 - IL_0034: ldloc.s V_5 - IL_0036: ldloc.0 - IL_0037: ldc.i4.6 - IL_0038: shl - IL_0039: ldloc.0 - IL_003a: ldc.i4.2 - IL_003b: shr - IL_003c: add - IL_003d: add - IL_003e: add - IL_003f: stloc.0 - IL_0040: ldloc.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0012: ldloc.0 + IL_0013: ldc.i4.6 + IL_0014: shl + IL_0015: ldloc.0 + IL_0016: ldc.i4.2 + IL_0017: shr + IL_0018: add + IL_0019: add + IL_001a: add + IL_001b: stloc.0 + IL_001c: ldc.i4 0x9e3779b9 + IL_0021: ldarg.1 + IL_0022: stloc.2 + IL_0023: ldarg.0 + IL_0024: ldfld int32 assembly/Point::x@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr + IL_002f: add + IL_0030: add + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret + + IL_0035: ldc.i4.0 + IL_0036: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -418,18 +370,12 @@ .maxstack 4 .locals init (class assembly/Point V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - int32 V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0043 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0041 + IL_0004: brfalse.s IL_002d IL_0006: ldarg.1 IL_0007: stloc.0 @@ -437,44 +383,32 @@ IL_0009: stloc.1 IL_000a: ldarg.0 IL_000b: ldfld int32 assembly/Point::x@ - IL_0010: stloc.2 - IL_0011: ldloc.0 - IL_0012: ldfld int32 assembly/Point::x@ - IL_0017: stloc.3 - IL_0018: ldloc.1 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldloc.3 - IL_001d: ceq - IL_001f: brfalse.s IL_003f - - IL_0021: ldarg.2 - IL_0022: stloc.s V_5 - IL_0024: ldarg.0 - IL_0025: ldfld int32 assembly/Point::y@ - IL_002a: stloc.s V_6 - IL_002c: ldloc.0 - IL_002d: ldfld int32 assembly/Point::y@ - IL_0032: stloc.s V_7 - IL_0034: ldloc.s V_5 - IL_0036: stloc.s V_8 - IL_0038: ldloc.s V_6 - IL_003a: ldloc.s V_7 - IL_003c: ceq - IL_003e: ret - - IL_003f: ldc.i4.0 - IL_0040: ret - - IL_0041: ldc.i4.0 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: ldc.i4.0 - IL_0048: ceq - IL_004a: ret + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/Point::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/Point::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/Point::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -585,11 +519,7 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.1 IL_0001: ldc.i4.2 IL_0002: newobj instance void assembly/Point::.ctor(int32, @@ -606,33 +536,25 @@ IL_0014: ldc.i4.0 IL_0015: stloc.s V_4 IL_0017: ldloc.3 - IL_0018: stloc.s V_5 - IL_001a: ldloc.s V_4 - IL_001c: stloc.s V_6 - IL_001e: ldloc.s V_5 - IL_0020: ldloc.s V_6 - IL_0022: conv.i - IL_0023: sizeof [runtime]System.Int32 - IL_0029: mul - IL_002a: add - IL_002b: ldobj [runtime]System.Int32 - IL_0030: ldloc.1 - IL_0031: stloc.s V_7 - IL_0033: ldc.i4.1 - IL_0034: stloc.s V_8 - IL_0036: ldloc.s V_7 - IL_0038: stloc.s V_9 - IL_003a: ldloc.s V_8 - IL_003c: stloc.s V_10 - IL_003e: ldloc.s V_9 - IL_0040: ldloc.s V_10 - IL_0042: conv.i - IL_0043: sizeof [runtime]System.Int32 - IL_0049: mul - IL_004a: add - IL_004b: ldobj [runtime]System.Int32 - IL_0050: add - IL_0051: ret + IL_0018: ldloc.s V_4 + IL_001a: conv.i + IL_001b: sizeof [runtime]System.Int32 + IL_0021: mul + IL_0022: add + IL_0023: ldobj [runtime]System.Int32 + IL_0028: ldloc.1 + IL_0029: stloc.s V_5 + IL_002b: ldc.i4.1 + IL_002c: stloc.s V_6 + IL_002e: ldloc.s V_5 + IL_0030: ldloc.s V_6 + IL_0032: conv.i + IL_0033: sizeof [runtime]System.Int32 + IL_0039: mul + IL_003a: add + IL_003b: ldobj [runtime]System.Int32 + IL_0040: add + IL_0041: ret } .method public static int32 pinRef() cil managed @@ -670,97 +592,85 @@ native int V_4, int32 V_5, native int V_6, - int32 V_7, - native int V_8, - int32 V_9, - native int V_10, - int32 V_11) + int32 V_7) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: stloc.s V_6 - IL_0094: ldloc.s V_5 - IL_0096: stloc.s V_7 - IL_0098: ldloc.s V_6 - IL_009a: ldloc.s V_7 - IL_009c: conv.i - IL_009d: sizeof [runtime]System.Double - IL_00a3: mul - IL_00a4: add - IL_00a5: ldobj [runtime]System.Double - IL_00aa: ldloc.1 - IL_00ab: stloc.s V_8 - IL_00ad: ldc.i4.1 - IL_00ae: stloc.s V_9 - IL_00b0: ldloc.s V_8 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: stloc.s V_11 - IL_00b8: ldloc.s V_10 - IL_00ba: ldloc.s V_11 - IL_00bc: conv.i - IL_00bd: sizeof [runtime]System.Double - IL_00c3: mul - IL_00c4: add - IL_00c5: ldobj [runtime]System.Double - IL_00ca: add - IL_00cb: ret + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 + IL_0094: conv.i + IL_0095: sizeof [runtime]System.Double + IL_009b: mul + IL_009c: add + IL_009d: ldobj [runtime]System.Double + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -773,77 +683,65 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: stloc.s V_5 - IL_007a: ldloc.s V_4 - IL_007c: stloc.s V_6 - IL_007e: ldloc.s V_5 - IL_0080: ldloc.s V_6 - IL_0082: conv.i - IL_0083: sizeof [runtime]System.Double - IL_0089: mul - IL_008a: add - IL_008b: ldobj [runtime]System.Double - IL_0090: ldloc.1 - IL_0091: stloc.s V_7 - IL_0093: ldc.i4.1 - IL_0094: stloc.s V_8 - IL_0096: ldloc.s V_7 - IL_0098: stloc.s V_9 - IL_009a: ldloc.s V_8 - IL_009c: stloc.s V_10 - IL_009e: ldloc.s V_9 - IL_00a0: ldloc.s V_10 - IL_00a2: conv.i - IL_00a3: sizeof [runtime]System.Double - IL_00a9: mul - IL_00aa: add - IL_00ab: ldobj [runtime]System.Double - IL_00b0: add - IL_00b1: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 + IL_007a: conv.i + IL_007b: sizeof [runtime]System.Double + IL_0081: mul + IL_0082: add + IL_0083: ldobj [runtime]System.Double + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed @@ -852,30 +750,26 @@ .maxstack 6 .locals init (string V_0, native int V_1, - string pinned V_2, + char& pinned V_2, native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldstr "Hello World" IL_0005: stloc.0 - IL_0006: ldloc.0 - IL_0007: stloc.2 - IL_0008: ldloc.2 - IL_0009: brfalse.s IL_0016 - - IL_000b: ldloc.2 - IL_000c: conv.i - IL_000d: call int32 [runtime]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() - IL_0012: add + IL_0006: nop + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0016 + + IL_000a: ldloc.0 + IL_000b: callvirt instance char& modreq([runtime]System.Runtime.InteropServices.InAttribute) [runtime]System.String::GetPinnableReference() + IL_0010: stloc.2 + IL_0011: ldloc.2 + IL_0012: conv.i IL_0013: nop IL_0014: br.s IL_0018 - IL_0016: ldloc.2 + IL_0016: ldloc.0 IL_0017: nop IL_0018: stloc.1 IL_0019: ldloc.1 @@ -883,34 +777,26 @@ IL_001b: ldc.i4.0 IL_001c: stloc.s V_4 IL_001e: ldloc.3 - IL_001f: stloc.s V_5 - IL_0021: ldloc.s V_4 - IL_0023: stloc.s V_6 - IL_0025: ldloc.s V_5 - IL_0027: ldloc.s V_6 - IL_0029: conv.i - IL_002a: sizeof [runtime]System.Char - IL_0030: mul - IL_0031: add - IL_0032: ldobj [runtime]System.Char - IL_0037: ldloc.1 - IL_0038: stloc.s V_7 - IL_003a: ldc.i4.1 - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_7 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_8 - IL_0043: stloc.s V_10 - IL_0045: ldloc.s V_9 - IL_0047: ldloc.s V_10 - IL_0049: conv.i - IL_004a: sizeof [runtime]System.Char - IL_0050: mul - IL_0051: add - IL_0052: ldobj [runtime]System.Char - IL_0057: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_001f: ldloc.s V_4 + IL_0021: conv.i + IL_0022: sizeof [runtime]System.Char + IL_0028: mul + IL_0029: add + IL_002a: ldobj [runtime]System.Char + IL_002f: ldloc.1 + IL_0030: stloc.s V_5 + IL_0032: ldc.i4.1 + IL_0033: stloc.s V_6 + IL_0035: ldloc.s V_5 + IL_0037: ldloc.s V_6 + IL_0039: conv.i + IL_003a: sizeof [runtime]System.Char + IL_0040: mul + IL_0041: add + IL_0042: ldobj [runtime]System.Char + IL_0047: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_005c: ret + IL_004c: ret } } @@ -932,4 +818,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.release.bsl index 3cea4952abe..b4424e5c131 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.release.bsl @@ -598,79 +598,79 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: ldloc.s V_5 + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 IL_0094: conv.i IL_0095: sizeof [runtime]System.Double IL_009b: mul IL_009c: add IL_009d: ldobj [runtime]System.Double - IL_00a2: ldloc.1 - IL_00a3: stloc.s V_6 - IL_00a5: ldc.i4.1 - IL_00a6: stloc.s V_7 - IL_00a8: ldloc.s V_6 - IL_00aa: ldloc.s V_7 - IL_00ac: conv.i - IL_00ad: sizeof [runtime]System.Double - IL_00b3: mul - IL_00b4: add - IL_00b5: ldobj [runtime]System.Double - IL_00ba: add - IL_00bb: ret + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -689,59 +689,59 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: ldloc.s V_4 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 IL_007a: conv.i IL_007b: sizeof [runtime]System.Double IL_0081: mul IL_0082: add IL_0083: ldobj [runtime]System.Double - IL_0088: ldloc.1 - IL_0089: stloc.s V_5 - IL_008b: ldc.i4.1 - IL_008c: stloc.s V_6 - IL_008e: ldloc.s V_5 - IL_0090: ldloc.s V_6 - IL_0092: conv.i - IL_0093: sizeof [runtime]System.Double - IL_0099: mul - IL_009a: add - IL_009b: ldobj [runtime]System.Double - IL_00a0: add - IL_00a1: ret + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.debug.bsl index 5ce65a01960..b478624445f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.debug.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.release.bsl index 9b4153c5532..a87cc818438 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.net472.release.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.debug.bsl index f4025c40141..28fe7607cdd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.debug.bsl @@ -523,7 +523,7 @@ native int V_1, int32& pinned V_2) IL_0000: ldc.i4.s 17 - IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0002: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::.ctor(!0) IL_0007: stloc.0 IL_0008: ldloc.0 IL_0009: ldflda !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::contents@ @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed @@ -681,32 +681,31 @@ .maxstack 6 .locals init (native int V_0, - string pinned V_1) + char& pinned V_1) IL_0000: nop IL_0001: ldstr "Hello World" - IL_0006: stloc.1 - IL_0007: ldstr "Hello World" - IL_000c: conv.i - IL_000d: call int32 [runtime]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() - IL_0012: add - IL_0013: stloc.0 - IL_0014: ldloc.0 - IL_0015: ldc.i4.0 - IL_0016: conv.i - IL_0017: sizeof [runtime]System.Char - IL_001d: mul - IL_001e: add - IL_001f: ldobj [runtime]System.Char - IL_0024: ldloc.0 - IL_0025: ldc.i4.1 - IL_0026: conv.i - IL_0027: sizeof [runtime]System.Char - IL_002d: mul - IL_002e: add - IL_002f: ldobj [runtime]System.Char - IL_0034: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_0006: callvirt instance char& modreq([runtime]System.Runtime.InteropServices.InAttribute) [runtime]System.String::GetPinnableReference() + IL_000b: stloc.1 + IL_000c: ldloc.1 + IL_000d: conv.i + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: ldc.i4.0 + IL_0011: conv.i + IL_0012: sizeof [runtime]System.Char + IL_0018: mul + IL_0019: add + IL_001a: ldobj [runtime]System.Char + IL_001f: ldloc.0 + IL_0020: ldc.i4.1 + IL_0021: conv.i + IL_0022: sizeof [runtime]System.Char + IL_0028: mul + IL_0029: add + IL_002a: ldobj [runtime]System.Char + IL_002f: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_0039: ret + IL_0034: ret } } @@ -728,4 +727,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.release.bsl index ec08b05e0ae..28fe7607cdd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOff.OptimizeOn.il.netcore.release.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.debug.bsl index 7852e2509a4..49122ee1b8d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.debug.bsl @@ -680,87 +680,87 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 - IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: stloc.s V_6 - IL_0094: ldloc.s V_5 - IL_0096: stloc.s V_7 - IL_0098: ldloc.s V_6 - IL_009a: ldloc.s V_7 - IL_009c: conv.i - IL_009d: sizeof [runtime]System.Double - IL_00a3: mul - IL_00a4: add - IL_00a5: ldobj [runtime]System.Double - IL_00aa: ldloc.1 - IL_00ab: stloc.s V_8 - IL_00ad: ldc.i4.1 - IL_00ae: stloc.s V_9 - IL_00b0: ldloc.s V_8 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: stloc.s V_11 - IL_00b8: ldloc.s V_10 - IL_00ba: ldloc.s V_11 - IL_00bc: conv.i - IL_00bd: sizeof [runtime]System.Double - IL_00c3: mul - IL_00c4: add - IL_00c5: ldobj [runtime]System.Double - IL_00ca: add - IL_00cb: ret + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: stloc.s V_6 + IL_007c: ldloc.s V_5 + IL_007e: stloc.s V_7 + IL_0080: ldloc.s V_6 + IL_0082: ldloc.s V_7 + IL_0084: conv.i + IL_0085: sizeof [runtime]System.Double + IL_008b: mul + IL_008c: add + IL_008d: ldobj [runtime]System.Double + IL_0092: ldloc.1 + IL_0093: stloc.s V_8 + IL_0095: ldc.i4.1 + IL_0096: stloc.s V_9 + IL_0098: ldloc.s V_8 + IL_009a: stloc.s V_10 + IL_009c: ldloc.s V_9 + IL_009e: stloc.s V_11 + IL_00a0: ldloc.s V_10 + IL_00a2: ldloc.s V_11 + IL_00a4: conv.i + IL_00a5: sizeof [runtime]System.Double + IL_00ab: mul + IL_00ac: add + IL_00ad: ldobj [runtime]System.Double + IL_00b2: add + IL_00b3: ret } .method public static float64 pinArray2() cil managed @@ -783,67 +783,67 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: stloc.s V_5 - IL_007a: ldloc.s V_4 - IL_007c: stloc.s V_6 - IL_007e: ldloc.s V_5 - IL_0080: ldloc.s V_6 - IL_0082: conv.i - IL_0083: sizeof [runtime]System.Double - IL_0089: mul - IL_008a: add - IL_008b: ldobj [runtime]System.Double - IL_0090: ldloc.1 - IL_0091: stloc.s V_7 - IL_0093: ldc.i4.1 - IL_0094: stloc.s V_8 - IL_0096: ldloc.s V_7 - IL_0098: stloc.s V_9 - IL_009a: ldloc.s V_8 - IL_009c: stloc.s V_10 - IL_009e: ldloc.s V_9 - IL_00a0: ldloc.s V_10 - IL_00a2: conv.i - IL_00a3: sizeof [runtime]System.Double - IL_00a9: mul - IL_00aa: add - IL_00ab: ldobj [runtime]System.Double - IL_00b0: add - IL_00b1: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: stloc.s V_5 + IL_0062: ldloc.s V_4 + IL_0064: stloc.s V_6 + IL_0066: ldloc.s V_5 + IL_0068: ldloc.s V_6 + IL_006a: conv.i + IL_006b: sizeof [runtime]System.Double + IL_0071: mul + IL_0072: add + IL_0073: ldobj [runtime]System.Double + IL_0078: ldloc.1 + IL_0079: stloc.s V_7 + IL_007b: ldc.i4.1 + IL_007c: stloc.s V_8 + IL_007e: ldloc.s V_7 + IL_0080: stloc.s V_9 + IL_0082: ldloc.s V_8 + IL_0084: stloc.s V_10 + IL_0086: ldloc.s V_9 + IL_0088: ldloc.s V_10 + IL_008a: conv.i + IL_008b: sizeof [runtime]System.Double + IL_0091: mul + IL_0092: add + IL_0093: ldobj [runtime]System.Double + IL_0098: add + IL_0099: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.release.bsl index ab7bca6340a..01a58c52c7d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.net472.release.bsl @@ -598,79 +598,79 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: ldloc.s V_5 + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 IL_0094: conv.i IL_0095: sizeof [runtime]System.Double IL_009b: mul IL_009c: add IL_009d: ldobj [runtime]System.Double - IL_00a2: ldloc.1 - IL_00a3: stloc.s V_6 - IL_00a5: ldc.i4.1 - IL_00a6: stloc.s V_7 - IL_00a8: ldloc.s V_6 - IL_00aa: ldloc.s V_7 - IL_00ac: conv.i - IL_00ad: sizeof [runtime]System.Double - IL_00b3: mul - IL_00b4: add - IL_00b5: ldobj [runtime]System.Double - IL_00ba: add - IL_00bb: ret + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -689,59 +689,59 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: ldloc.s V_4 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 IL_007a: conv.i IL_007b: sizeof [runtime]System.Double IL_0081: mul IL_0082: add IL_0083: ldobj [runtime]System.Double - IL_0088: ldloc.1 - IL_0089: stloc.s V_5 - IL_008b: ldc.i4.1 - IL_008c: stloc.s V_6 - IL_008e: ldloc.s V_5 - IL_0090: ldloc.s V_6 - IL_0092: conv.i - IL_0093: sizeof [runtime]System.Double - IL_0099: mul - IL_009a: add - IL_009b: ldobj [runtime]System.Double - IL_00a0: add - IL_00a1: ret + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.debug.bsl index bda000c5fe3..b4424e5c131 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.debug.bsl @@ -136,18 +136,12 @@ int32 V_3, class [runtime]System.Collections.IComparer V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12) + int32 V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0070 + IL_0001: brfalse.s IL_0057 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_006e + IL_0004: brfalse.s IL_0055 IL_0006: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() IL_000b: stloc.1 @@ -157,68 +151,56 @@ IL_0013: ldarg.1 IL_0014: ldfld int32 assembly/Point::x@ IL_0019: stloc.3 - IL_001a: ldloc.1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.2 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_5 - IL_0025: ldloc.s V_6 - IL_0027: cgt - IL_0029: ldloc.s V_5 - IL_002b: ldloc.s V_6 - IL_002d: clt - IL_002f: sub - IL_0030: stloc.0 - IL_0031: ldloc.0 - IL_0032: ldc.i4.0 - IL_0033: bge.s IL_0037 - - IL_0035: ldloc.0 - IL_0036: ret + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: cgt + IL_001e: ldloc.2 + IL_001f: ldloc.3 + IL_0020: clt + IL_0022: sub + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: bge.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret - IL_0037: ldloc.0 - IL_0038: ldc.i4.0 - IL_0039: ble.s IL_003d - - IL_003b: ldloc.0 - IL_003c: ret - - IL_003d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0042: stloc.s V_7 - IL_0044: ldarg.0 - IL_0045: ldfld int32 assembly/Point::y@ - IL_004a: stloc.s V_8 - IL_004c: ldarg.1 - IL_004d: ldfld int32 assembly/Point::y@ - IL_0052: stloc.s V_9 - IL_0054: ldloc.s V_7 - IL_0056: stloc.s V_10 - IL_0058: ldloc.s V_8 - IL_005a: stloc.s V_11 - IL_005c: ldloc.s V_9 - IL_005e: stloc.s V_12 - IL_0060: ldloc.s V_11 - IL_0062: ldloc.s V_12 - IL_0064: cgt - IL_0066: ldloc.s V_11 - IL_0068: ldloc.s V_12 - IL_006a: clt - IL_006c: sub - IL_006d: ret - - IL_006e: ldc.i4.1 - IL_006f: ret - - IL_0070: ldarg.1 - IL_0071: brfalse.s IL_0075 - - IL_0073: ldc.i4.m1 - IL_0074: ret - - IL_0075: ldc.i4.0 - IL_0076: ret + IL_002a: ldloc.0 + IL_002b: ldc.i4.0 + IL_002c: ble.s IL_0030 + + IL_002e: ldloc.0 + IL_002f: ret + + IL_0030: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0035: stloc.s V_4 + IL_0037: ldarg.0 + IL_0038: ldfld int32 assembly/Point::y@ + IL_003d: stloc.s V_5 + IL_003f: ldarg.1 + IL_0040: ldfld int32 assembly/Point::y@ + IL_0045: stloc.s V_6 + IL_0047: ldloc.s V_5 + IL_0049: ldloc.s V_6 + IL_004b: cgt + IL_004d: ldloc.s V_5 + IL_004f: ldloc.s V_6 + IL_0051: clt + IL_0053: sub + IL_0054: ret + + IL_0055: ldc.i4.1 + IL_0056: ret + + IL_0057: ldarg.1 + IL_0058: brfalse.s IL_005c + + IL_005a: ldc.i4.m1 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -246,24 +228,18 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.1 IL_0001: unbox.any assembly/Point IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 IL_0009: ldarg.0 - IL_000a: brfalse.s IL_007a + IL_000a: brfalse.s IL_0063 IL_000c: ldarg.1 IL_000d: unbox.any assembly/Point - IL_0012: brfalse.s IL_0078 + IL_0012: brfalse.s IL_0061 IL_0014: ldarg.2 IL_0015: stloc.3 @@ -273,69 +249,57 @@ IL_001e: ldloc.1 IL_001f: ldfld int32 assembly/Point::x@ IL_0024: stloc.s V_5 - IL_0026: ldloc.3 - IL_0027: stloc.s V_6 - IL_0029: ldloc.s V_4 - IL_002b: stloc.s V_7 - IL_002d: ldloc.s V_5 - IL_002f: stloc.s V_8 - IL_0031: ldloc.s V_7 - IL_0033: ldloc.s V_8 - IL_0035: cgt - IL_0037: ldloc.s V_7 - IL_0039: ldloc.s V_8 - IL_003b: clt - IL_003d: sub - IL_003e: stloc.2 - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: bge.s IL_0045 - - IL_0043: ldloc.2 - IL_0044: ret - - IL_0045: ldloc.2 - IL_0046: ldc.i4.0 - IL_0047: ble.s IL_004b - - IL_0049: ldloc.2 - IL_004a: ret - - IL_004b: ldarg.2 - IL_004c: stloc.s V_9 - IL_004e: ldarg.0 - IL_004f: ldfld int32 assembly/Point::y@ - IL_0054: stloc.s V_10 - IL_0056: ldloc.1 - IL_0057: ldfld int32 assembly/Point::y@ - IL_005c: stloc.s V_11 - IL_005e: ldloc.s V_9 - IL_0060: stloc.s V_12 - IL_0062: ldloc.s V_10 - IL_0064: stloc.s V_13 - IL_0066: ldloc.s V_11 - IL_0068: stloc.s V_14 - IL_006a: ldloc.s V_13 - IL_006c: ldloc.s V_14 - IL_006e: cgt - IL_0070: ldloc.s V_13 - IL_0072: ldloc.s V_14 - IL_0074: clt - IL_0076: sub - IL_0077: ret - - IL_0078: ldc.i4.1 - IL_0079: ret - - IL_007a: ldarg.1 - IL_007b: unbox.any assembly/Point - IL_0080: brfalse.s IL_0084 - - IL_0082: ldc.i4.m1 - IL_0083: ret - - IL_0084: ldc.i4.0 - IL_0085: ret + IL_0026: ldloc.s V_4 + IL_0028: ldloc.s V_5 + IL_002a: cgt + IL_002c: ldloc.s V_4 + IL_002e: ldloc.s V_5 + IL_0030: clt + IL_0032: sub + IL_0033: stloc.2 + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a + + IL_0038: ldloc.2 + IL_0039: ret + + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 + + IL_003e: ldloc.2 + IL_003f: ret + + IL_0040: ldarg.2 + IL_0041: stloc.s V_6 + IL_0043: ldarg.0 + IL_0044: ldfld int32 assembly/Point::y@ + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/Point::y@ + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: unbox.any assembly/Point + IL_0069: brfalse.s IL_006d + + IL_006b: ldc.i4.m1 + IL_006c: ret + + IL_006d: ldc.i4.0 + IL_006e: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -345,13 +309,9 @@ .maxstack 7 .locals init (int32 V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0042 + IL_0001: brfalse.s IL_0035 IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -360,44 +320,36 @@ IL_000b: stloc.1 IL_000c: ldarg.0 IL_000d: ldfld int32 assembly/Point::y@ - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldloc.2 - IL_0016: ldloc.0 - IL_0017: ldc.i4.6 - IL_0018: shl - IL_0019: ldloc.0 - IL_001a: ldc.i4.2 - IL_001b: shr - IL_001c: add - IL_001d: add - IL_001e: add - IL_001f: stloc.0 - IL_0020: ldc.i4 0x9e3779b9 - IL_0025: ldarg.1 - IL_0026: stloc.s V_4 - IL_0028: ldarg.0 - IL_0029: ldfld int32 assembly/Point::x@ - IL_002e: stloc.s V_5 - IL_0030: ldloc.s V_4 - IL_0032: stloc.s V_6 - IL_0034: ldloc.s V_5 - IL_0036: ldloc.0 - IL_0037: ldc.i4.6 - IL_0038: shl - IL_0039: ldloc.0 - IL_003a: ldc.i4.2 - IL_003b: shr - IL_003c: add - IL_003d: add - IL_003e: add - IL_003f: stloc.0 - IL_0040: ldloc.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0012: ldloc.0 + IL_0013: ldc.i4.6 + IL_0014: shl + IL_0015: ldloc.0 + IL_0016: ldc.i4.2 + IL_0017: shr + IL_0018: add + IL_0019: add + IL_001a: add + IL_001b: stloc.0 + IL_001c: ldc.i4 0x9e3779b9 + IL_0021: ldarg.1 + IL_0022: stloc.2 + IL_0023: ldarg.0 + IL_0024: ldfld int32 assembly/Point::x@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr + IL_002f: add + IL_0030: add + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret + + IL_0035: ldc.i4.0 + IL_0036: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -418,18 +370,12 @@ .maxstack 4 .locals init (class assembly/Point V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - int32 V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0043 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0041 + IL_0004: brfalse.s IL_002d IL_0006: ldarg.1 IL_0007: stloc.0 @@ -437,44 +383,32 @@ IL_0009: stloc.1 IL_000a: ldarg.0 IL_000b: ldfld int32 assembly/Point::x@ - IL_0010: stloc.2 - IL_0011: ldloc.0 - IL_0012: ldfld int32 assembly/Point::x@ - IL_0017: stloc.3 - IL_0018: ldloc.1 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldloc.3 - IL_001d: ceq - IL_001f: brfalse.s IL_003f - - IL_0021: ldarg.2 - IL_0022: stloc.s V_5 - IL_0024: ldarg.0 - IL_0025: ldfld int32 assembly/Point::y@ - IL_002a: stloc.s V_6 - IL_002c: ldloc.0 - IL_002d: ldfld int32 assembly/Point::y@ - IL_0032: stloc.s V_7 - IL_0034: ldloc.s V_5 - IL_0036: stloc.s V_8 - IL_0038: ldloc.s V_6 - IL_003a: ldloc.s V_7 - IL_003c: ceq - IL_003e: ret - - IL_003f: ldc.i4.0 - IL_0040: ret - - IL_0041: ldc.i4.0 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: ldc.i4.0 - IL_0048: ceq - IL_004a: ret + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/Point::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/Point::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/Point::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -585,11 +519,7 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.1 IL_0001: ldc.i4.2 IL_0002: newobj instance void assembly/Point::.ctor(int32, @@ -606,33 +536,25 @@ IL_0014: ldc.i4.0 IL_0015: stloc.s V_4 IL_0017: ldloc.3 - IL_0018: stloc.s V_5 - IL_001a: ldloc.s V_4 - IL_001c: stloc.s V_6 - IL_001e: ldloc.s V_5 - IL_0020: ldloc.s V_6 - IL_0022: conv.i - IL_0023: sizeof [runtime]System.Int32 - IL_0029: mul - IL_002a: add - IL_002b: ldobj [runtime]System.Int32 - IL_0030: ldloc.1 - IL_0031: stloc.s V_7 - IL_0033: ldc.i4.1 - IL_0034: stloc.s V_8 - IL_0036: ldloc.s V_7 - IL_0038: stloc.s V_9 - IL_003a: ldloc.s V_8 - IL_003c: stloc.s V_10 - IL_003e: ldloc.s V_9 - IL_0040: ldloc.s V_10 - IL_0042: conv.i - IL_0043: sizeof [runtime]System.Int32 - IL_0049: mul - IL_004a: add - IL_004b: ldobj [runtime]System.Int32 - IL_0050: add - IL_0051: ret + IL_0018: ldloc.s V_4 + IL_001a: conv.i + IL_001b: sizeof [runtime]System.Int32 + IL_0021: mul + IL_0022: add + IL_0023: ldobj [runtime]System.Int32 + IL_0028: ldloc.1 + IL_0029: stloc.s V_5 + IL_002b: ldc.i4.1 + IL_002c: stloc.s V_6 + IL_002e: ldloc.s V_5 + IL_0030: ldloc.s V_6 + IL_0032: conv.i + IL_0033: sizeof [runtime]System.Int32 + IL_0039: mul + IL_003a: add + IL_003b: ldobj [runtime]System.Int32 + IL_0040: add + IL_0041: ret } .method public static int32 pinRef() cil managed @@ -670,97 +592,85 @@ native int V_4, int32 V_5, native int V_6, - int32 V_7, - native int V_8, - int32 V_9, - native int V_10, - int32 V_11) + int32 V_7) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: stloc.s V_6 - IL_0094: ldloc.s V_5 - IL_0096: stloc.s V_7 - IL_0098: ldloc.s V_6 - IL_009a: ldloc.s V_7 - IL_009c: conv.i - IL_009d: sizeof [runtime]System.Double - IL_00a3: mul - IL_00a4: add - IL_00a5: ldobj [runtime]System.Double - IL_00aa: ldloc.1 - IL_00ab: stloc.s V_8 - IL_00ad: ldc.i4.1 - IL_00ae: stloc.s V_9 - IL_00b0: ldloc.s V_8 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: stloc.s V_11 - IL_00b8: ldloc.s V_10 - IL_00ba: ldloc.s V_11 - IL_00bc: conv.i - IL_00bd: sizeof [runtime]System.Double - IL_00c3: mul - IL_00c4: add - IL_00c5: ldobj [runtime]System.Double - IL_00ca: add - IL_00cb: ret + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 + IL_0094: conv.i + IL_0095: sizeof [runtime]System.Double + IL_009b: mul + IL_009c: add + IL_009d: ldobj [runtime]System.Double + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -773,77 +683,65 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: stloc.s V_5 - IL_007a: ldloc.s V_4 - IL_007c: stloc.s V_6 - IL_007e: ldloc.s V_5 - IL_0080: ldloc.s V_6 - IL_0082: conv.i - IL_0083: sizeof [runtime]System.Double - IL_0089: mul - IL_008a: add - IL_008b: ldobj [runtime]System.Double - IL_0090: ldloc.1 - IL_0091: stloc.s V_7 - IL_0093: ldc.i4.1 - IL_0094: stloc.s V_8 - IL_0096: ldloc.s V_7 - IL_0098: stloc.s V_9 - IL_009a: ldloc.s V_8 - IL_009c: stloc.s V_10 - IL_009e: ldloc.s V_9 - IL_00a0: ldloc.s V_10 - IL_00a2: conv.i - IL_00a3: sizeof [runtime]System.Double - IL_00a9: mul - IL_00aa: add - IL_00ab: ldobj [runtime]System.Double - IL_00b0: add - IL_00b1: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 + IL_007a: conv.i + IL_007b: sizeof [runtime]System.Double + IL_0081: mul + IL_0082: add + IL_0083: ldobj [runtime]System.Double + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed @@ -852,30 +750,26 @@ .maxstack 6 .locals init (string V_0, native int V_1, - string pinned V_2, + char& pinned V_2, native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldstr "Hello World" IL_0005: stloc.0 - IL_0006: ldloc.0 - IL_0007: stloc.2 - IL_0008: ldloc.2 - IL_0009: brfalse.s IL_0016 - - IL_000b: ldloc.2 - IL_000c: conv.i - IL_000d: call int32 [runtime]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() - IL_0012: add + IL_0006: nop + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0016 + + IL_000a: ldloc.0 + IL_000b: callvirt instance char& modreq([runtime]System.Runtime.InteropServices.InAttribute) [runtime]System.String::GetPinnableReference() + IL_0010: stloc.2 + IL_0011: ldloc.2 + IL_0012: conv.i IL_0013: nop IL_0014: br.s IL_0018 - IL_0016: ldloc.2 + IL_0016: ldloc.0 IL_0017: nop IL_0018: stloc.1 IL_0019: ldloc.1 @@ -883,34 +777,26 @@ IL_001b: ldc.i4.0 IL_001c: stloc.s V_4 IL_001e: ldloc.3 - IL_001f: stloc.s V_5 - IL_0021: ldloc.s V_4 - IL_0023: stloc.s V_6 - IL_0025: ldloc.s V_5 - IL_0027: ldloc.s V_6 - IL_0029: conv.i - IL_002a: sizeof [runtime]System.Char - IL_0030: mul - IL_0031: add - IL_0032: ldobj [runtime]System.Char - IL_0037: ldloc.1 - IL_0038: stloc.s V_7 - IL_003a: ldc.i4.1 - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_7 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_8 - IL_0043: stloc.s V_10 - IL_0045: ldloc.s V_9 - IL_0047: ldloc.s V_10 - IL_0049: conv.i - IL_004a: sizeof [runtime]System.Char - IL_0050: mul - IL_0051: add - IL_0052: ldobj [runtime]System.Char - IL_0057: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_001f: ldloc.s V_4 + IL_0021: conv.i + IL_0022: sizeof [runtime]System.Char + IL_0028: mul + IL_0029: add + IL_002a: ldobj [runtime]System.Char + IL_002f: ldloc.1 + IL_0030: stloc.s V_5 + IL_0032: ldc.i4.1 + IL_0033: stloc.s V_6 + IL_0035: ldloc.s V_5 + IL_0037: ldloc.s V_6 + IL_0039: conv.i + IL_003a: sizeof [runtime]System.Char + IL_0040: mul + IL_0041: add + IL_0042: ldobj [runtime]System.Char + IL_0047: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_005c: ret + IL_004c: ret } } @@ -932,4 +818,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.release.bsl index 3cea4952abe..b4424e5c131 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.release.bsl @@ -598,79 +598,79 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: stloc.2 - IL_0069: ldloc.2 - IL_006a: brfalse.s IL_0086 - - IL_006c: ldloc.2 - IL_006d: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0072: brfalse.s IL_0081 - - IL_0074: ldloc.2 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: stloc.2 + IL_0051: ldloc.2 + IL_0052: brfalse.s IL_006e + + IL_0054: ldloc.2 + IL_0055: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_005a: brfalse.s IL_0069 + + IL_005c: ldloc.2 + IL_005d: ldc.i4.0 + IL_005e: ldelema [runtime]System.Double + IL_0063: stloc.3 + IL_0064: ldloc.3 + IL_0065: conv.i + IL_0066: nop + IL_0067: br.s IL_0071 + + IL_0069: ldc.i4.0 + IL_006a: conv.i + IL_006b: nop + IL_006c: br.s IL_0071 + + IL_006e: ldc.i4.0 + IL_006f: conv.i + IL_0070: nop + IL_0071: stloc.1 + IL_0072: ldloc.1 + IL_0073: stloc.s V_4 IL_0075: ldc.i4.0 - IL_0076: ldelema [runtime]System.Double - IL_007b: stloc.3 - IL_007c: ldloc.3 - IL_007d: conv.i - IL_007e: nop - IL_007f: br.s IL_0089 - - IL_0081: ldc.i4.0 - IL_0082: conv.i - IL_0083: nop - IL_0084: br.s IL_0089 - - IL_0086: ldc.i4.0 - IL_0087: conv.i - IL_0088: nop - IL_0089: stloc.1 + IL_0076: stloc.s V_5 + IL_0078: ldloc.s V_4 + IL_007a: ldloc.s V_5 + IL_007c: conv.i + IL_007d: sizeof [runtime]System.Double + IL_0083: mul + IL_0084: add + IL_0085: ldobj [runtime]System.Double IL_008a: ldloc.1 - IL_008b: stloc.s V_4 - IL_008d: ldc.i4.0 - IL_008e: stloc.s V_5 - IL_0090: ldloc.s V_4 - IL_0092: ldloc.s V_5 + IL_008b: stloc.s V_6 + IL_008d: ldc.i4.1 + IL_008e: stloc.s V_7 + IL_0090: ldloc.s V_6 + IL_0092: ldloc.s V_7 IL_0094: conv.i IL_0095: sizeof [runtime]System.Double IL_009b: mul IL_009c: add IL_009d: ldobj [runtime]System.Double - IL_00a2: ldloc.1 - IL_00a3: stloc.s V_6 - IL_00a5: ldc.i4.1 - IL_00a6: stloc.s V_7 - IL_00a8: ldloc.s V_6 - IL_00aa: ldloc.s V_7 - IL_00ac: conv.i - IL_00ad: sizeof [runtime]System.Double - IL_00b3: mul - IL_00b4: add - IL_00b5: ldobj [runtime]System.Double - IL_00ba: add - IL_00bb: ret + IL_00a2: add + IL_00a3: ret } .method public static float64 pinArray2() cil managed @@ -689,59 +689,59 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: stloc.3 - IL_0074: ldc.i4.0 - IL_0075: stloc.s V_4 - IL_0077: ldloc.3 - IL_0078: ldloc.s V_4 + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: stloc.3 + IL_005c: ldc.i4.0 + IL_005d: stloc.s V_4 + IL_005f: ldloc.3 + IL_0060: ldloc.s V_4 + IL_0062: conv.i + IL_0063: sizeof [runtime]System.Double + IL_0069: mul + IL_006a: add + IL_006b: ldobj [runtime]System.Double + IL_0070: ldloc.1 + IL_0071: stloc.s V_5 + IL_0073: ldc.i4.1 + IL_0074: stloc.s V_6 + IL_0076: ldloc.s V_5 + IL_0078: ldloc.s V_6 IL_007a: conv.i IL_007b: sizeof [runtime]System.Double IL_0081: mul IL_0082: add IL_0083: ldobj [runtime]System.Double - IL_0088: ldloc.1 - IL_0089: stloc.s V_5 - IL_008b: ldc.i4.1 - IL_008c: stloc.s V_6 - IL_008e: ldloc.s V_5 - IL_0090: ldloc.s V_6 - IL_0092: conv.i - IL_0093: sizeof [runtime]System.Double - IL_0099: mul - IL_009a: add - IL_009b: ldobj [runtime]System.Double - IL_00a0: add - IL_00a1: ret + IL_0088: add + IL_0089: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.debug.bsl index 5ce65a01960..b478624445f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.debug.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.release.bsl index 9b4153c5532..a87cc818438 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.net472.release.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.debug.bsl index f4025c40141..28fe7607cdd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.debug.bsl @@ -523,7 +523,7 @@ native int V_1, int32& pinned V_2) IL_0000: ldc.i4.s 17 - IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0002: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::.ctor(!0) IL_0007: stloc.0 IL_0008: ldloc.0 IL_0009: ldflda !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::contents@ @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed @@ -681,32 +681,31 @@ .maxstack 6 .locals init (native int V_0, - string pinned V_1) + char& pinned V_1) IL_0000: nop IL_0001: ldstr "Hello World" - IL_0006: stloc.1 - IL_0007: ldstr "Hello World" - IL_000c: conv.i - IL_000d: call int32 [runtime]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() - IL_0012: add - IL_0013: stloc.0 - IL_0014: ldloc.0 - IL_0015: ldc.i4.0 - IL_0016: conv.i - IL_0017: sizeof [runtime]System.Char - IL_001d: mul - IL_001e: add - IL_001f: ldobj [runtime]System.Char - IL_0024: ldloc.0 - IL_0025: ldc.i4.1 - IL_0026: conv.i - IL_0027: sizeof [runtime]System.Char - IL_002d: mul - IL_002e: add - IL_002f: ldobj [runtime]System.Char - IL_0034: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_0006: callvirt instance char& modreq([runtime]System.Runtime.InteropServices.InAttribute) [runtime]System.String::GetPinnableReference() + IL_000b: stloc.1 + IL_000c: ldloc.1 + IL_000d: conv.i + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: ldc.i4.0 + IL_0011: conv.i + IL_0012: sizeof [runtime]System.Char + IL_0018: mul + IL_0019: add + IL_001a: ldobj [runtime]System.Char + IL_001f: ldloc.0 + IL_0020: ldc.i4.1 + IL_0021: conv.i + IL_0022: sizeof [runtime]System.Char + IL_0028: mul + IL_0029: add + IL_002a: ldobj [runtime]System.Char + IL_002f: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_0039: ret + IL_0034: ret } } @@ -728,4 +727,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.release.bsl index ec08b05e0ae..28fe7607cdd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.RealInternalSignatureOn.OptimizeOn.il.netcore.release.bsl @@ -551,70 +551,70 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: nop - IL_0068: ldloc.0 - IL_0069: brfalse.s IL_0085 - - IL_006b: ldloc.0 - IL_006c: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) - IL_0071: brfalse.s IL_0080 - - IL_0073: ldloc.0 - IL_0074: ldc.i4.0 - IL_0075: ldelema [runtime]System.Double - IL_007a: stloc.2 - IL_007b: ldloc.2 - IL_007c: conv.i - IL_007d: nop - IL_007e: br.s IL_0088 - - IL_0080: ldc.i4.0 - IL_0081: conv.i - IL_0082: nop - IL_0083: br.s IL_0088 - - IL_0085: ldc.i4.0 - IL_0086: conv.i - IL_0087: nop - IL_0088: stloc.1 - IL_0089: ldloc.1 - IL_008a: ldc.i4.0 - IL_008b: conv.i - IL_008c: sizeof [runtime]System.Double - IL_0092: mul - IL_0093: add - IL_0094: ldobj [runtime]System.Double - IL_0099: ldloc.1 - IL_009a: ldc.i4.1 - IL_009b: conv.i - IL_009c: sizeof [runtime]System.Double - IL_00a2: mul - IL_00a3: add - IL_00a4: ldobj [runtime]System.Double - IL_00a9: add - IL_00aa: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: nop + IL_0050: ldloc.0 + IL_0051: brfalse.s IL_006d + + IL_0053: ldloc.0 + IL_0054: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0059: brfalse.s IL_0068 + + IL_005b: ldloc.0 + IL_005c: ldc.i4.0 + IL_005d: ldelema [runtime]System.Double + IL_0062: stloc.2 + IL_0063: ldloc.2 + IL_0064: conv.i + IL_0065: nop + IL_0066: br.s IL_0070 + + IL_0068: ldc.i4.0 + IL_0069: conv.i + IL_006a: nop + IL_006b: br.s IL_0070 + + IL_006d: ldc.i4.0 + IL_006e: conv.i + IL_006f: nop + IL_0070: stloc.1 + IL_0071: ldloc.1 + IL_0072: ldc.i4.0 + IL_0073: conv.i + IL_0074: sizeof [runtime]System.Double + IL_007a: mul + IL_007b: add + IL_007c: ldobj [runtime]System.Double + IL_0081: ldloc.1 + IL_0082: ldc.i4.1 + IL_0083: conv.i + IL_0084: sizeof [runtime]System.Double + IL_008a: mul + IL_008b: add + IL_008c: ldobj [runtime]System.Double + IL_0091: add + IL_0092: ret } .method public static float64 pinArray2() cil managed @@ -629,51 +629,51 @@ IL_0006: dup IL_0007: ldc.i4.0 IL_0008: ldc.r8 0.0 - IL_0011: stelem [runtime]System.Double - IL_0016: dup - IL_0017: ldc.i4.1 - IL_0018: ldc.r8 1.5 - IL_0021: stelem [runtime]System.Double - IL_0026: dup - IL_0027: ldc.i4.2 - IL_0028: ldc.r8 2.2999999999999998 - IL_0031: stelem [runtime]System.Double + IL_0011: stelem.r8 + IL_0012: dup + IL_0013: ldc.i4.1 + IL_0014: ldc.r8 1.5 + IL_001d: stelem.r8 + IL_001e: dup + IL_001f: ldc.i4.2 + IL_0020: ldc.r8 2.2999999999999998 + IL_0029: stelem.r8 + IL_002a: dup + IL_002b: ldc.i4.3 + IL_002c: ldc.r8 3.3999999999999999 + IL_0035: stelem.r8 IL_0036: dup - IL_0037: ldc.i4.3 - IL_0038: ldc.r8 3.3999999999999999 - IL_0041: stelem [runtime]System.Double - IL_0046: dup - IL_0047: ldc.i4.4 - IL_0048: ldc.r8 4.0999999999999996 - IL_0051: stelem [runtime]System.Double - IL_0056: dup - IL_0057: ldc.i4.5 - IL_0058: ldc.r8 5.9000000000000004 - IL_0061: stelem [runtime]System.Double - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ldc.i4.0 - IL_0069: ldelema [runtime]System.Double - IL_006e: stloc.2 - IL_006f: ldloc.2 - IL_0070: conv.i - IL_0071: stloc.1 - IL_0072: ldloc.1 - IL_0073: ldc.i4.0 - IL_0074: conv.i - IL_0075: sizeof [runtime]System.Double - IL_007b: mul - IL_007c: add - IL_007d: ldobj [runtime]System.Double - IL_0082: ldloc.1 - IL_0083: ldc.i4.1 - IL_0084: conv.i - IL_0085: sizeof [runtime]System.Double - IL_008b: mul - IL_008c: add - IL_008d: ldobj [runtime]System.Double - IL_0092: add - IL_0093: ret + IL_0037: ldc.i4.4 + IL_0038: ldc.r8 4.0999999999999996 + IL_0041: stelem.r8 + IL_0042: dup + IL_0043: ldc.i4.5 + IL_0044: ldc.r8 5.9000000000000004 + IL_004d: stelem.r8 + IL_004e: stloc.0 + IL_004f: ldloc.0 + IL_0050: ldc.i4.0 + IL_0051: ldelema [runtime]System.Double + IL_0056: stloc.2 + IL_0057: ldloc.2 + IL_0058: conv.i + IL_0059: stloc.1 + IL_005a: ldloc.1 + IL_005b: ldc.i4.0 + IL_005c: conv.i + IL_005d: sizeof [runtime]System.Double + IL_0063: mul + IL_0064: add + IL_0065: ldobj [runtime]System.Double + IL_006a: ldloc.1 + IL_006b: ldc.i4.1 + IL_006c: conv.i + IL_006d: sizeof [runtime]System.Double + IL_0073: mul + IL_0074: add + IL_0075: ldobj [runtime]System.Double + IL_007a: add + IL_007b: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl index 0d946a2a292..70870083feb 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl @@ -4,70 +4,13 @@ [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Text.Lexing.UnicodeTables::scanUntilSentinel([FSharp.Compiler.Service]Internal.Utilities.Text.Lexing.LexBuffer`1, int32)][offset 0x00000079][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Xml.XmlDoc::processLines([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::getTfmNumber(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::tryGetRunningTfm()][offset 0x00000011][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003E][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000005C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000065][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000082][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000008B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+MagicAssemblyResolution::ResolveAssemblyCore([FSharp.Compiler.Service]Internal.Utilities.Library.CompilationThreadToken, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, [FSharp.Compiler.Service]FSharp.Compiler.CompilerImports+TcImports, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompiler, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiConsoleOutput, string)][offset 0x00000015][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+clo::Invoke([S.P.CoreLib]System.Tuple`3)][offset 0x000001E5][found Char] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [StackUnexpected]: : .$FSharpCheckerResults+dataTipOfReferences::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000084][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000040][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000087][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000090][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000099][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.StaticLinking+TypeForwarding::followTypeForwardForILTypeRef([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILTypeRef)][offset 0x00000010][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getCompilerOption([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000E6][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::AddPathMapping([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+parseOption::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getOptionArgList::Invoke([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getOptionArgList::Invoke([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x0000003E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getSwitch::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+attempt::Invoke([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000E9F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+::Invoke(int32)][offset 0x00000030][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+::Invoke(int32)][offset 0x00000039][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x00000624][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x0000062D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.PatternMatchCompilation::isProblematicClause([FSharp.Compiler.Service]FSharp.Compiler.PatternMatchCompilation+MatchClause)][offset 0x00000065][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.PatternMatchCompilation::.cctor()][offset 0x00000015][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateExpectedName([FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string[], string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1)][offset 0x000000AD][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Lexhelp::stringBufferAsString([FSharp.Compiler.Service]FSharp.Compiler.IO.ByteBuffer)][offset 0x00000099][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000057][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000060][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001220][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001229][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000063F][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter+bigness::Invoke(int32)][offset 0x00000007][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+PortablePdbGenerator::serializeDocumentName(string)][offset 0x00000090][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+pushShadowedLocals::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000232][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadUntaggedIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.BinaryConstants+TableName, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32&)][offset 0x0000000D][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::openMetadataReader(string, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile, int32, [S.P.CoreLib]System.Tuple`8,bool,bool,bool,bool,bool,System.Tuple`5,bool,int32,int32,int32>>, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, bool)][offset 0x000007A3][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+rowKindSize::Invoke([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+RowKind)][offset 0x00000128][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000CD][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000043][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000013][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000001C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000025][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000002E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.String::lowerCaseFirstChar(string)][offset 0x0000003F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.Array+loop::Invoke(int32)][offset 0x00000012][found Byte] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index 6e759daac9e..70870083feb 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -4,95 +4,13 @@ [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Text.Lexing.UnicodeTables::scanUntilSentinel([FSharp.Compiler.Service]Internal.Utilities.Text.Lexing.LexBuffer`1, int32)][offset 0x00000079][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Xml.XmlDoc::processLines([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::getTfmNumber(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::tryGetRunningTfm()][offset 0x00000011][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003E][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.DependencyProvider::TryFindDependencyManagerInPath([S.P.CoreLib]System.Collections.Generic.IEnumerable`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Compiler.Service]FSharp.Compiler.DependencyManager.ResolvingErrorReport, string)][offset 0x00000064][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpEntity::TryGetFullDisplayName()][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpEntity::TryGetFullCompiledName()][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpMemberOrFunctionOrValue::TryGetFullCompiledOperatorNameIdents()][offset 0x0000008A][found Char] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.Parent::FormatEntityFullName([FSharp.Compiler.Service]FSharp.Compiler.Symbols.FSharpEntity)][offset 0x00000069][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::TokenizeFile(string)][offset 0x0000000D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000005C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000065][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000082][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000008B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+FsiStdinSyphon::GetLine(string, int32)][offset 0x00000039][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+MagicAssemblyResolution::ResolveAssemblyCore([FSharp.Compiler.Service]Internal.Utilities.Library.CompilationThreadToken, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, [FSharp.Compiler.Service]FSharp.Compiler.CompilerImports+TcImports, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompiler, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiConsoleOutput, string)][offset 0x00000015][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+FsiInteractionProcessor::CompletionsForPartialLID([FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompilerState, string)][offset 0x0000001B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+clo::Invoke([S.P.CoreLib]System.Tuple`3)][offset 0x000001E5][found Char] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [StackUnexpected]: : .$FSharpCheckerResults+dataTipOfReferences::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000084][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.AssemblyContent+traverseMemberFunctionAndValues::Invoke([FSharp.Compiler.Service]FSharp.Compiler.Symbols.FSharpMemberOrFunctionOrValue)][offset 0x00000059][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.AssemblyContent+traverseEntity::GenerateNext([S.P.CoreLib]System.Collections.Generic.IEnumerable`1&)][offset 0x000000DA][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.ParsedInput+visitor::VisitExpr([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, [FSharp.Compiler.Service]FSharp.Compiler.Syntax.SynExpr)][offset 0x000005FD][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000040][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000087][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000090][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000099][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Symbols+fullName::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000015][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CreateILModule+MainModuleBuilder::ConvertProductVersionToILVersionInfo(string)][offset 0x00000011][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.StaticLinking+TypeForwarding::followTypeForwardForILTypeRef([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILTypeRef)][offset 0x00000010][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getCompilerOption([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000E6][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::AddPathMapping([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::subSystemVersionSwitch([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string)][offset 0x00000030][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+parseOption::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getOptionArgList::Invoke([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getOptionArgList::Invoke([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x0000003E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+getSwitch::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+attempt::Invoke([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000E9F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+processArg::Invoke([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x0000004D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+ResponseFile+parseLine::Invoke(string)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+::Invoke(int32)][offset 0x00000030][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+::Invoke(int32)][offset 0x00000039][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerImports+line::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x00000624][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x0000062D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.PatternMatchCompilation::isProblematicClause([FSharp.Compiler.Service]FSharp.Compiler.PatternMatchCompilation+MatchClause)][offset 0x00000065][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.PatternMatchCompilation::.cctor()][offset 0x00000015][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.NicePrint+TastDefinitionPrinting+meths::Invoke([FSharp.Compiler.Service]FSharp.Compiler.Infos+MethInfo)][offset 0x000000BE][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.NicePrint+PrintUtilities::layoutXmlDoc([FSharp.Compiler.Service]FSharp.Compiler.TypedTreeOps+DisplayEnv, bool, [FSharp.Compiler.Service]FSharp.Compiler.Xml.XmlDoc, [FSharp.Compiler.Service]FSharp.Compiler.Text.Layout)][offset 0x00000033][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateNamespaceName(string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string)][offset 0x00000063][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateExpectedName([FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string[], string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1)][offset 0x000000AD][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Lexhelp::stringBufferAsString([FSharp.Compiler.Service]FSharp.Compiler.IO.ByteBuffer)][offset 0x00000099][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000057][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000060][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001220][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001229][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000063F][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter+bigness::Invoke(int32)][offset 0x00000007][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+PortablePdbGenerator::serializeDocumentName(string)][offset 0x00000090][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+pushShadowedLocals::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000232][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadUntaggedIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.BinaryConstants+TableName, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32&)][offset 0x0000000D][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::openMetadataReader(string, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile, int32, [S.P.CoreLib]System.Tuple`8,bool,bool,bool,bool,bool,System.Tuple`5,bool,int32,int32,int32>>, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, bool)][offset 0x000007A3][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+rowKindSize::Invoke([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+RowKind)][offset 0x00000128][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.NativeRes+VersionHelper::TryParse(string, bool, uint16, bool, [S.P.CoreLib]System.Version&)][offset 0x0000003D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL+parseNamed::Invoke([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>, int32, int32)][offset 0x00000087][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.Utils::shortPath(string)][offset 0x00000048][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.FSharpEnvironment+probePathForDotnetHost::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000028][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver+Pipe #6 input ::FSharp.Compiler.CodeAnalysis.ILegacyReferenceResolver.Resolve([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, [S.P.CoreLib]System.Tuple`2[], string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>)][offset 0x0000034D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000CD][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000043][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000013][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000001C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000025][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000002E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.String::lowerCaseFirstChar(string)][offset 0x0000003F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.Array+loop::Invoke(int32)][offset 0x00000012][found Byte] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl index 5aa47b60492..8426a64548e 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl @@ -6,94 +6,13 @@ [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Text.Lexing.UnicodeTables::scanUntilSentinel([FSharp.Compiler.Service]Internal.Utilities.Text.Lexing.LexBuffer`1, int32)][offset 0x0000008D][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Xml.XmlDoc::processLines([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x0000002C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::getTfmNumber(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::tryGetRunningTfm()][offset 0x00000011][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000005C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000065][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000082][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000008B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+MagicAssemblyResolution::ResolveAssemblyCore([FSharp.Compiler.Service]Internal.Utilities.Library.CompilationThreadToken, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, [FSharp.Compiler.Service]FSharp.Compiler.CompilerImports+TcImports, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompiler, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiConsoleOutput, string)][offset 0x00000015][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+clo::Invoke([S.P.CoreLib]System.Tuple`3)][offset 0x000001C7][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharpCheckerResults+GetReferenceResolutionStructuredToolTipText::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000076][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000040][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000069][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000072][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x0000007B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Driver+ProcessCommandLineFlags::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Driver+ProcessCommandLineFlags::Invoke(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.StaticLinking+TypeForwarding::followTypeForwardForILTypeRef([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILTypeRef)][offset 0x00000010][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getCompilerOption([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A7][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::AddPathMapping([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string)][offset 0x0000000B][found Char] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::parseOption(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getOptionArgList([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000049][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getOptionArgList([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000052][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getSwitch(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::attempt([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000A99][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+CheckMultipleInputsUsingGraphMode::Invoke(int32)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+CheckMultipleInputsUsingGraphMode::Invoke(int32)][offset 0x0000003A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x00000596][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x0000059F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.PatternMatchCompilation::isProblematicClause([FSharp.Compiler.Service]FSharp.Compiler.PatternMatchCompilation+MatchClause)][offset 0x00000040][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.PatternMatchCompilation::.cctor()][offset 0x0000000B][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateExpectedName([FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string[], string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1)][offset 0x000000A8][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Lexhelp::stringBufferAsString([FSharp.Compiler.Service]FSharp.Compiler.IO.ByteBuffer)][offset 0x0000008E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x0000004B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000054][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001182][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x0000118B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x00000B21][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x000004E2][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+PortablePdbGenerator::serializeDocumentName(string)][offset 0x00000071][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+pushShadowedLocals::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x000001C0][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadTypeDefRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000080][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadTypeDefRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x000000A1][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000071][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadInterfaceIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadClassLayoutRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000066][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadFieldLayoutRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadEventMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadEventMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadPropertyMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadPropertyMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodSemanticsRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000040][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodImplRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadImplMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000044][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadFieldRVARow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadNestedRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadNestedRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000058][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadGenericParamConstraintIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::openMetadataReader(string, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile, int32, [S.P.CoreLib]System.Tuple`8,bool,bool,bool,bool,bool,System.Tuple`5,bool,int32,int32,int32>>, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, bool)][offset 0x000006B6][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::rowKindSize$cont(bool, bool, bool, bool[], bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x000000E5][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadInterfaceImpls::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadGenericParamConstraints::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+enclIdx::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadMethodImpls::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadEvents::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadProperties::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000B6][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000041][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000013][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000001C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000025][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000002E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.String::lowerCaseFirstChar(string)][offset 0x0000003A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.Array::loop(bool[], int32)][offset 0x00000008][found Byte] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index 7832a7938c3..8426a64548e 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -6,120 +6,13 @@ [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Text.Lexing.UnicodeTables::scanUntilSentinel([FSharp.Compiler.Service]Internal.Utilities.Text.Lexing.LexBuffer`1, int32)][offset 0x0000008D][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Xml.XmlDoc::processLines([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x0000002C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::getTfmNumber(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.FxResolver::tryGetRunningTfm()][offset 0x00000011][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.DependencyProvider::TryFindDependencyManagerInPath([S.P.CoreLib]System.Collections.Generic.IEnumerable`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Compiler.Service]FSharp.Compiler.DependencyManager.ResolvingErrorReport, string)][offset 0x00000058][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpEntity::TryGetFullDisplayName()][offset 0x00000024][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpEntity::TryGetFullCompiledName()][offset 0x00000024][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Symbols.FSharpMemberOrFunctionOrValue::TryGetFullCompiledOperatorNameIdents()][offset 0x00000060][found Char] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.Parent::FormatEntityFullName([FSharp.Compiler.Service]FSharp.Compiler.Symbols.FSharpEntity)][offset 0x0000003F][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::TokenizeFile(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000005C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000065][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x00000082][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.Hosted.CompilerHelpers::fscCompile([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, string, string[])][offset 0x0000008B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+FsiStdinSyphon::GetLine(string, int32)][offset 0x00000032][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+MagicAssemblyResolution::ResolveAssemblyCore([FSharp.Compiler.Service]Internal.Utilities.Library.CompilationThreadToken, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, [FSharp.Compiler.Service]FSharp.Compiler.CompilerImports+TcImports, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompiler, [FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiConsoleOutput, string)][offset 0x00000015][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+FsiInteractionProcessor::CompletionsForPartialLID([FSharp.Compiler.Service]FSharp.Compiler.Interactive.Shell+FsiDynamicCompilerState, string)][offset 0x00000024][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Interactive.Shell+clo::Invoke([S.P.CoreLib]System.Tuple`3)][offset 0x000001C7][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharpCheckerResults+GetReferenceResolutionStructuredToolTipText::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000076][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.AssemblyContent+traverseMemberFunctionAndValues::Invoke([FSharp.Compiler.Service]FSharp.Compiler.Symbols.FSharpMemberOrFunctionOrValue)][offset 0x0000002B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.AssemblyContent+traverseEntity::GenerateNext([S.P.CoreLib]System.Collections.Generic.IEnumerable`1&)][offset 0x000000BB][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.EditorServices.ParsedInput+visitor::VisitExpr([FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, [FSharp.Compiler.Service]FSharp.Compiler.Syntax.SynExpr)][offset 0x00000618][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000037][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000040][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000069][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x00000072][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$ServiceLexing+clo::Invoke([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.Unit>)][offset 0x0000007B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Symbols+fullName::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000030][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Driver+ProcessCommandLineFlags::Invoke(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Driver+ProcessCommandLineFlags::Invoke(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CreateILModule+MainModuleBuilder::ConvertProductVersionToILVersionInfo(string)][offset 0x00000010][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.StaticLinking+TypeForwarding::followTypeForwardForILTypeRef([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILTypeRef)][offset 0x00000010][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getCompilerOption([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A7][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::AddPathMapping([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string)][offset 0x0000000B][found Char] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::parseOption(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getOptionArgList([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000049][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getOptionArgList([FSharp.Compiler.Service]FSharp.Compiler.CompilerOptions+CompilerOption, string)][offset 0x00000052][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::getSwitch(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::attempt([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x00000A99][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::processArg([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1)][offset 0x0000003E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions::subSystemVersionSwitch$cont([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, string, [FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerOptions+ResponseFile+parseLine::Invoke(string)][offset 0x00000026][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+CheckMultipleInputsUsingGraphMode::Invoke(int32)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.ParseAndCheckInputs+CheckMultipleInputsUsingGraphMode::Invoke(int32)][offset 0x0000003A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerImports+TcConfig-TryResolveLibWithDirectories::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000021][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerImports+TcConfig-TryResolveLibWithDirectories::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x0000003B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x00000596][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CompilerConfig+TcConfig::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+TcConfigBuilder, bool)][offset 0x0000059F][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.PatternMatchCompilation::isProblematicClause([FSharp.Compiler.Service]FSharp.Compiler.PatternMatchCompilation+MatchClause)][offset 0x00000040][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.PatternMatchCompilation::.cctor()][offset 0x0000000B][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.NicePrint+TastDefinitionPrinting+meths::Invoke([FSharp.Compiler.Service]FSharp.Compiler.Infos+MethInfo)][offset 0x000000B3][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.NicePrint+PrintUtilities::layoutXmlDoc([FSharp.Compiler.Service]FSharp.Compiler.TypedTreeOps+DisplayEnv, bool, [FSharp.Compiler.Service]FSharp.Compiler.Xml.XmlDoc, [FSharp.Compiler.Service]FSharp.Compiler.Text.Layout)][offset 0x00000034][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateNamespaceName(string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1, [FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string)][offset 0x00000074][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.TypeProviders::ValidateExpectedName([FSharp.Compiler.Service]FSharp.Compiler.Text.Range, string[], string, [FSharp.Compiler.Service]FSharp.Compiler.Tainted`1)][offset 0x000000A8][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Lexhelp::stringBufferAsString([FSharp.Compiler.Service]FSharp.Compiler.IO.ByteBuffer)][offset 0x0000008E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x0000004B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.Syntax.PrettyNaming::SplitNamesForILPath(string)][offset 0x00000054][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x00001182][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.Syntax.PrettyNaming::.cctor()][offset 0x0000118B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x00000B21][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryWriter::writeILMetadataAndCode(bool, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILVersionInfo, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILGlobals, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [S.P.CoreLib]System.Collections.Generic.IEnumerable`1, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.IL+ILModuleDef, int32, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x000004E2][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+PortablePdbGenerator::serializeDocumentName(string)][offset 0x00000071][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILPdbWriter+pushShadowedLocals::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x000001C0][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadTypeDefRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000080][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadTypeDefRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x000000A1][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000071][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadInterfaceIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadClassLayoutRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000066][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadFieldLayoutRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadEventMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadEventMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadPropertyMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadPropertyMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodSemanticsRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000040][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadMethodImplRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadImplMapRow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000044][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadFieldRVARow([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000045][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadNestedRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadNestedRowUncached([FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1>, int32)][offset 0x00000058][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::seekReadGenericParamConstraintIdx([FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, int32)][offset 0x00000025][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::openMetadataReader(string, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile, int32, [S.P.CoreLib]System.Tuple`8,bool,bool,bool,bool,bool,System.Tuple`5,bool,int32,int32,int32>>, [FSharp.Compiler.Service]FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader, [FSharp.Compiler.Service]FSharp.Compiler.IO.ReadOnlyByteMemory, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, bool)][offset 0x000006B6][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader::rowKindSize$cont(bool, bool, bool, bool[], bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, [FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x000000E5][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadInterfaceImpls::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadGenericParamConstraints::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+enclIdx::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadMethodImpls::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadEvents::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadProperties::Invoke(int32)][offset 0x0000002F][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.NativeRes+VersionHelper::TryParse(string, bool, uint16, bool, [S.P.CoreLib]System.Version&)][offset 0x00000026][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseNamed(uint8[], [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>, int32, int32)][offset 0x0000007E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.Utils::shortPath(string)][offset 0x0000003A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.FSharpEnvironment::probePathForDotnetHost([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x0000002A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver+SimulatedMSBuildResolver::FSharp.Compiler.CodeAnalysis.ILegacyReferenceResolver.Resolve([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, [S.P.CoreLib]System.Tuple`2[], string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>)][offset 0x000002F5][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000B6][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000035][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000041][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000013][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000001C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x00000025][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000002E][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x0000000B][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IO.FileSystemUtils::trimQuotes(string)][offset 0x00000014][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.String::lowerCaseFirstChar(string)][offset 0x0000003A][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Library.Array::loop(bool[], int32)][offset 0x00000008][found Byte] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl index 60db97dade9..51e9bef7053 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl @@ -18,25 +18,8 @@ [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::scatterPartitioned(bool[], !!0[], !!1[], int32)][offset 0x0000002B][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x0000008B][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000117][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Choose([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000A0][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000029][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Partition([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000D9][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000030][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000022][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000038][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000020][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000029][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000033][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000075][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.Operators::castToString(!!0)][offset 0x00000001][found value 'T'][expected ref 'string'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives::retype(!!0)][offset 0x00000001][found value 'T'][expected value 'TResult'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x0000001C][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x00000023][found Short] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::castclassPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::notnullPrim(!!0)][offset 0x00000002][found Nullobjref 'NullReference'][expected value 'T'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::iscastPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl index 60db97dade9..51e9bef7053 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl @@ -18,25 +18,8 @@ [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::scatterPartitioned(bool[], !!0[], !!1[], int32)][offset 0x0000002B][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x0000008B][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000117][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Choose([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000A0][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000029][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Partition([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000D9][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000030][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000022][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Pipe #2 input ::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000038][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000020][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000031][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000029][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000033][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x00000075][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.Operators::castToString(!!0)][offset 0x00000001][found value 'T'][expected ref 'string'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives::retype(!!0)][offset 0x00000001][found value 'T'][expected value 'TResult'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x0000001C][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x00000023][found Short] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::castclassPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::notnullPrim(!!0)][offset 0x00000002][found Nullobjref 'NullReference'][expected value 'T'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::iscastPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl index c64d0248b2b..26ff4867bd5 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl @@ -18,19 +18,3 @@ [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000073][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000EC][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Choose([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000081][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000029][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Partition([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000AD][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Choose::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000030][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+countAndCollectTrueItems::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000022][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+PartitionWith::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000038][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000001E][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000002D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000029][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000033][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000006C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x0000001C][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x00000023][found Short] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl index c64d0248b2b..26ff4867bd5 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl @@ -18,19 +18,3 @@ [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000073][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000EC][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Choose([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x00000081][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000029][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::Partition([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, !!0[])][offset 0x00000038][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel::PartitionWith([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, !!0[])][offset 0x000000AD][found Byte] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+Choose::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000030][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+countAndCollectTrueItems::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000022][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Collections.ArrayModule+Parallel+PartitionWith::Invoke(int32, [System.Threading.Tasks.Parallel]System.Threading.Tasks.ParallelLoopState, int32)][offset 0x00000038][found Boolean] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000001E][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Map([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000002D][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000029][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::MapIndexed([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>, string)][offset 0x00000033][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.StringModule::Filter([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, string)][offset 0x0000006C][found Char] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x0000001C][found Short] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives+HashCompare::GenericEqualityCharArray(char[], char[])][offset 0x00000023][found Short] Unexpected type on the stack. From 85a7defd36349e6ca59fd31aa8421d68e8e9f630 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 27 Feb 2026 17:42:24 +0100 Subject: [PATCH 02/15] Fix source-level ILVerify errors: HashMultiMap interface upcast and Range struct GetHashCode - HashMultiMap: Add explicit :> IDictionary<_,_> upcasts in both branches of the if/else expressions for firstEntries and rest fields. This causes the F# compiler to emit castclass at the join point, which ILVerify needs to see the correct interface type on the stack instead of computing the LUB of ConcurrentDictionary and Dictionary as System.Object. - range.fs: Change o.GetHashCode() to (box o).GetHashCode() in the Range struct IEqualityComparer. Range is a struct, and callvirt on a value type without a constrained. prefix is flagged by ILVerify as CallVirtOnValueType. Boxing first makes the callvirt valid on the boxed reference type. Together these eliminate 5 ILVerify baseline entries (2 HashMultiMap + 1 AssemblyResolveHandler + 1 FSharpChecker + 1 CallVirtOnValueType). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Compiler/Utilities/HashMultiMap.fs | 8 ++++---- src/Compiler/Utilities/range.fs | 2 +- .../ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl | 9 ++------- ...rify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl | 9 ++------- .../ilverify_FSharp.Compiler.Service_Release_net10.0.bsl | 9 ++------- ...fy_FSharp.Compiler.Service_Release_netstandard2.0.bsl | 9 ++------- 6 files changed, 13 insertions(+), 33 deletions(-) diff --git a/src/Compiler/Utilities/HashMultiMap.fs b/src/Compiler/Utilities/HashMultiMap.fs index 2688869136e..d9c732a5c00 100644 --- a/src/Compiler/Utilities/HashMultiMap.fs +++ b/src/Compiler/Utilities/HashMultiMap.fs @@ -14,15 +14,15 @@ type internal HashMultiMap<'Key, 'Value when 'Key: not null>(size: int, comparer let firstEntries: IDictionary<_, _> = if defaultArg useConcurrentDictionary false then - ConcurrentDictionary<_, _>(comparer) + ConcurrentDictionary<_, _>(comparer) :> IDictionary<_, _> else - Dictionary<_, _>(size, comparer) + Dictionary<_, _>(size, comparer) :> IDictionary<_, _> let rest: IDictionary<_, _> = if defaultArg useConcurrentDictionary false then - ConcurrentDictionary<_, _>(comparer) + ConcurrentDictionary<_, _>(comparer) :> IDictionary<_, _> else - Dictionary<_, _>(3, comparer) + Dictionary<_, _>(3, comparer) :> IDictionary<_, _> new(comparer: IEqualityComparer<'Key>, ?useConcurrentDictionary: bool) = HashMultiMap<'Key, 'Value>(11, comparer, defaultArg useConcurrentDictionary false) diff --git a/src/Compiler/Utilities/range.fs b/src/Compiler/Utilities/range.fs index 3a22199c32f..b3be07e06a1 100755 --- a/src/Compiler/Utilities/range.fs +++ b/src/Compiler/Utilities/range.fs @@ -606,7 +606,7 @@ module Range = let comparer = { new IEqualityComparer with member _.Equals(x1, x2) = equals x1 x2 - member _.GetHashCode o = o.GetHashCode() + member _.GetHashCode(o: range) = (box o).GetHashCode() } let mkFirstLineOfFile (file: string) = diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl index 70870083feb..e05b9eb3e10 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl @@ -1,16 +1,11 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index 70870083feb..e05b9eb3e10 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -1,16 +1,11 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl index 8426a64548e..d0ba3dfeffc 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl @@ -1,18 +1,13 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index 8426a64548e..d0ba3dfeffc 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -1,18 +1,13 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. From e91c70b6353b648f3002716cc6c40092ee4a77da Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 27 Feb 2026 19:04:26 +0100 Subject: [PATCH 03/15] Revert "Fix source-level ILVerify errors: HashMultiMap interface upcast and Range struct GetHashCode" This reverts commit 4614ffe10f6677d0dff88309c94b5ad4f8580fed. --- src/Compiler/Utilities/HashMultiMap.fs | 8 ++++---- src/Compiler/Utilities/range.fs | 2 +- .../ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl | 9 +++++++-- ...rify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl | 9 +++++++-- .../ilverify_FSharp.Compiler.Service_Release_net10.0.bsl | 9 +++++++-- ...fy_FSharp.Compiler.Service_Release_netstandard2.0.bsl | 9 +++++++-- 6 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/Compiler/Utilities/HashMultiMap.fs b/src/Compiler/Utilities/HashMultiMap.fs index d9c732a5c00..2688869136e 100644 --- a/src/Compiler/Utilities/HashMultiMap.fs +++ b/src/Compiler/Utilities/HashMultiMap.fs @@ -14,15 +14,15 @@ type internal HashMultiMap<'Key, 'Value when 'Key: not null>(size: int, comparer let firstEntries: IDictionary<_, _> = if defaultArg useConcurrentDictionary false then - ConcurrentDictionary<_, _>(comparer) :> IDictionary<_, _> + ConcurrentDictionary<_, _>(comparer) else - Dictionary<_, _>(size, comparer) :> IDictionary<_, _> + Dictionary<_, _>(size, comparer) let rest: IDictionary<_, _> = if defaultArg useConcurrentDictionary false then - ConcurrentDictionary<_, _>(comparer) :> IDictionary<_, _> + ConcurrentDictionary<_, _>(comparer) else - Dictionary<_, _>(3, comparer) :> IDictionary<_, _> + Dictionary<_, _>(3, comparer) new(comparer: IEqualityComparer<'Key>, ?useConcurrentDictionary: bool) = HashMultiMap<'Key, 'Value>(11, comparer, defaultArg useConcurrentDictionary false) diff --git a/src/Compiler/Utilities/range.fs b/src/Compiler/Utilities/range.fs index b3be07e06a1..3a22199c32f 100755 --- a/src/Compiler/Utilities/range.fs +++ b/src/Compiler/Utilities/range.fs @@ -606,7 +606,7 @@ module Range = let comparer = { new IEqualityComparer with member _.Equals(x1, x2) = equals x1 x2 - member _.GetHashCode(o: range) = (box o).GetHashCode() + member _.GetHashCode o = o.GetHashCode() } let mkFirstLineOfFile (file: string) = diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl index e05b9eb3e10..70870083feb 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl @@ -1,11 +1,16 @@ +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index e05b9eb3e10..70870083feb 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -1,11 +1,16 @@ +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl index d0ba3dfeffc..8426a64548e 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl @@ -1,13 +1,18 @@ +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index d0ba3dfeffc..8426a64548e 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -1,13 +1,18 @@ +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. From 6cb397005964956f95d3c363bd0d59799a551018 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 27 Feb 2026 23:02:03 +0100 Subject: [PATCH 04/15] Fix ILVerify errors: callvirt on value types and interface join point casts Two codegen fixes to eliminate ILVerify errors: 1. CallVirtOnValueType: In GenApp, prevent emitting callvirt when the declaring type is a value type (boxity = AsValue). For value types, callvirt without constrained. prefix is invalid per ECMA-335. This also applies as a safety net in GenILCall. 2. Interface join point casts: Add CastThenBr sequel that emits castclass before branching at match/if-else join points when the result type is an interface. Without this, ILVerify computes the LUB of different concrete class types as System.Object instead of the expected interface type. Only applied when all branches produce reference types (not value types or unit). Eliminates 5 ILVerify baseline entries per configuration: - HashMultiMap StackUnexpected x2 (IDictionary join) - AssemblyResolveHandler StackUnexpected (IDisposable join) - FSharpChecker StackUnexpected (IBackgroundCompiler join) - comparer@607 CallVirtOnValueType (Range.GetHashCode) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Compiler/CodeGen/IlxGen.fs | 52 +++++++++++++++++-- .../Nullness/StructDU.fs.il.netcore.bsl | 3 +- ..._FSharp.Compiler.Service_Debug_net10.0.bsl | 5 -- ....Compiler.Service_Debug_netstandard2.0.bsl | 5 -- ...Sharp.Compiler.Service_Release_net10.0.bsl | 25 ++++----- ...ompiler.Service_Release_netstandard2.0.bsl | 25 ++++----- 6 files changed, 69 insertions(+), 46 deletions(-) diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index 290bba23e4d..2a2435f648e 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -1162,6 +1162,12 @@ and sequel = /// Branch to the given mark | Br of Mark + /// Cast to the given interface type, then branch to the given mark. + /// Used at match/if-else join points when the result type is an interface + /// so that each branch casts to the interface before merging, preventing + /// ILVerify StackUnexpected errors at the join point. + | CastThenBr of ILType * Mark + /// Execute the given comparison-then-branch instructions on the result of the expression /// If the branch isn't taken then drop through. | CmpThenBrOrContinue of Pops * ILInstr list @@ -3267,6 +3273,7 @@ and StringOfSequel sequel = | Return -> "Return" | EndLocalScope(sq, Mark k) -> "EndLocalScope(" + StringOfSequel sq + "," + formatCodeLabel k + ")" | Br(Mark x) -> sprintf "Br L%s" (formatCodeLabel x) + | CastThenBr(_, Mark x) -> sprintf "CastThenBr L%s" (formatCodeLabel x) | LeaveHandler _ -> "LeaveHandler" | EndFilter -> "EndFilter" @@ -3292,6 +3299,18 @@ and GenSequel cenv cloc cgbuf sequel = CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) + | CastThenBr(ilTy, x) -> + // Cast to the interface type before branching to the join point. + // This ensures ILVerify sees the correct interface type at the merge point + // instead of computing LUB of different concrete types as System.Object. + CG.EmitInstr cgbuf (pop 1) (Push [ ilTy ]) (I_castclass ilTy) + + if cgbuf.mgbuf.cenv.options.generateDebugSymbols then + cgbuf.EmitStartOfHiddenCode() + CG.EmitInstr cgbuf (pop 0) Push0 AI_nop + + CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) + | LeaveHandler(isFinally, whereToSaveResultOpt, afterHandler, hasResult) -> if hasResult then if isFinally then @@ -3544,6 +3563,23 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU let sequelOnBranches, afterJoin, stackAfterJoin, sequelAfterJoin = GenJoinPoint cenv cgbuf "match" eenv ty m sequel + // When the match result type is an interface and at least one branch + // pushes a different concrete class type, emit castclass in each branch + // before jumping to the join label. This ensures ILVerify sees the + // interface type at the merge point instead of computing LUB as Object. + // Only do this when branches produce reference types (not value types). + let sequelOnBranches = + match sequelOnBranches with + | Br mark when + isInterfaceTy cenv.g ty + && targets.Length > 1 + && targets + |> Array.forall (fun (TTarget(_, body, _)) -> + let bodyTy = tyOfExpr cenv.g body + not (isStructTy cenv.g bodyTy) && not (isUnitTy cenv.g bodyTy)) -> + CastThenBr(GenType cenv m eenv.tyenv ty, mark) + | _ -> sequelOnBranches + // Stack: "stackAtTargets" is "stack prior to any match-testing" and also "stack at the start of each branch-RHS". // match-testing (dtrees) should not contribute to the stack. // Each branch-RHS (targets) may contribute to the stack, leaving it in the "stackAfterJoin" state, for the join point. @@ -4423,7 +4459,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = I_callconstraint(useICallVirt, isTailCall, ilThisTy, mspec, None) | _ -> if newobj then I_newobj(mspec, None) - elif useICallVirt then I_callvirt(isTailCall, mspec, None) + elif useICallVirt && boxity <> AsValue then I_callvirt(isTailCall, mspec, None) else I_call(isTailCall, mspec, None) // ok, now we're ready to generate @@ -5501,7 +5537,7 @@ and GenILCall let ilObjArgTy = GenType cenv m eenv.tyenv objArgTy I_callconstraint(useICallVirt, tail, ilObjArgTy, ilMethSpec, None) | None -> - if useICallVirt then + if useICallVirt && not valu then I_callvirt(tail, ilMethSpec, None) else I_call(tail, ilMethSpec, None) @@ -7410,6 +7446,7 @@ and IsSequelImmediate sequel = | Return | ReturnVoid | Br _ + | CastThenBr _ | LeaveHandler _ -> true | DiscardThen sequel -> IsSequelImmediate sequel | _ -> false @@ -7445,8 +7482,15 @@ and GenJoinPoint cenv cgbuf pos eenv ty m sequel = let pushed = GenType cenv m eenv.tyenv ty let stackAfterJoin = (pushed :: cgbuf.GetCurrentStack()) let afterJoin = CG.GenerateDelayMark cgbuf (pos + "_join") - // go to the join point - Br afterJoin, afterJoin, stackAfterJoin, sequel + + // When the match result type is an interface and branches produce reference + // types, emit castclass in each branch before jumping to the join label. + // This ensures ILVerify sees the correct interface type at the merge point + // instead of computing LUB of different concrete class types as System.Object. + let sequelOnBranches = + Br afterJoin + + sequelOnBranches, afterJoin, stackAfterJoin, sequel // Accumulate the decision graph as we go and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets sequel contf = diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.netcore.bsl index 1782bf60827..3d4ce970bcb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.netcore.bsl @@ -425,7 +425,7 @@ .maxstack 8 IL_0000: ldarga.s x - IL_0002: callvirt instance string MyTestModule/Myassembly::ToString() + IL_0002: call instance string MyTestModule/Myassembly::ToString() IL_0007: ret } @@ -469,4 +469,3 @@ - diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl index 70870083feb..debf5271955 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl @@ -1,16 +1,11 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index 70870083feb..debf5271955 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -1,16 +1,11 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000003A][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl index 8426a64548e..8e8baa87343 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl @@ -1,18 +1,13 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. +[IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. +[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. -[IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. -[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. -[IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index 8426a64548e..8e8baa87343 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -1,18 +1,13 @@ -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000060][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Internal.Utilities.Collections.HashMultiMap`2::.ctor(int32, [S.P.CoreLib]System.Collections.Generic.IEqualityComparer`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x00000035][found ref 'object'][expected ref '[S.P.CoreLib]System.Collections.Generic.IDictionary`2'] Unexpected type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. +[IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. +[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. +[IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. -[IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.DependencyManager.AssemblyResolveHandler::.ctor([FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x0000002B][found ref 'object'][expected ref '[S.P.CoreLib]System.IDisposable'] Unexpected type on the stack. -[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000023] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000064] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. -[IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001C][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.FSharpChecker::.ctor([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyReferenceResolver, int32, bool, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.FSharpOption`1>>, bool, bool, bool, bool, [FSharp.Compiler.Service]FSharp.Compiler.CompilerConfig+ParallelReferenceResolution, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1>>>, bool, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1)][offset 0x000000A4][found ref 'object'][expected ref '[FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.IBackgroundCompiler'] Unexpected type on the stack. [IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876-1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted@1876'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@607::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. +[IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. From 11e16ca7d0deb1e375980792981a0745e2935142 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Sat, 28 Feb 2026 11:46:48 +0100 Subject: [PATCH 05/15] Fix ILVerify: avoid filter blocks inside finally handlers ILVerify has a bug where a filter nested inside a finally handler gets its entry stack computed incorrectly (as empty instead of [exception_object]). This happens because ILVerify's FindEnclosingExceptionRegions picks HandlerIndex (the enclosing finally) instead of FilterIndex when both are set, then uses the finally's Kind to determine stack state. The fix adds insideFinallyOrFaultHandler tracking to IlxGenEnv. When inside a finally handler, GenTryWith emits catch blocks instead of filter blocks. Semantically identical for catch-all patterns (filter always returns 1 == catch Exception). Eliminates the DoWithColor StackUnderflow error: - FCS Release: 13 -> 12 errors per config - FCS Debug: 11 -> 10 errors per config (to be verified by CI) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Compiler/CodeGen/IlxGen.fs | 23 +++++++++++++++++-- ...Sharp.Compiler.Service_Release_net10.0.bsl | 1 - ...ompiler.Service_Release_netstandard2.0.bsl | 1 - 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index 2a2435f648e..f4d82a30bdd 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -1251,6 +1251,11 @@ and IlxGenEnv = /// Are we under the scope of a try, catch or finally? If so we can't tailcall. SEH = structured exception handling withinSEH: bool + /// Are we generating code inside a finally or fault handler? + /// If so, we must not emit filter blocks because ILVerify incorrectly computes + /// the entry stack for a filter nested inside a finally handler (dotnet/runtime issue). + insideFinallyOrFaultHandler: bool + /// Are we inside of a recursive let binding, while loop, or a for loop? isInLoop: bool @@ -2839,6 +2844,7 @@ let CodeGenThen (cenv: cenv) mgbuf (entryPointInfo, methodName, eenv, alreadyUse cgbuf { eenv with withinSEH = false + insideFinallyOrFaultHandler = false liveLocals = IntMap.empty () innerVals = innerVals } @@ -4908,7 +4914,13 @@ and GenTryWith cenv cgbuf eenv (e1, valForFilter: Val, filterExpr, valForHandler GenTry cenv cgbuf eenv scopeMarks (e1, m, resTy, spTry) let seh = - if cenv.options.generateFilterBlocks || eligibleForFilter cenv filterExpr then + // Don't generate filter blocks inside finally/fault handlers. + // ILVerify incorrectly computes the entry stack for a filter nested inside a finally handler, + // treating the filter entry as a finally entry (empty stack) instead of a filter entry (exception on stack). + if + not eenv.insideFinallyOrFaultHandler + && (cenv.options.generateFilterBlocks || eligibleForFilter cenv filterExpr) + then let startOfFilter = CG.GenerateMark cgbuf "startOfFilter" let afterFilter = CG.GenerateDelayMark cgbuf "afterFilter" @@ -5029,7 +5041,13 @@ and GenTryFinally cenv cgbuf eenv (bodyExpr, handlerExpr, m, resTy, spTry, spFin | DebugPointAtFinally.No -> () let exitSequel = LeaveHandler(true, whereToSaveOpt, afterHandler, true) - GenExpr cenv cgbuf eenvinner handlerExpr exitSequel + + let eenvHandler = + { eenvinner with + insideFinallyOrFaultHandler = true + } + + GenExpr cenv cgbuf eenvHandler handlerExpr exitSequel let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) @@ -12101,6 +12119,7 @@ let GetEmptyIlxGenEnv (g: TcGlobals) ccu = innerVals = [] sigToImplRemapInfo = [] (* "module remap info" *) withinSEH = false + insideFinallyOrFaultHandler = false isInLoop = false initLocals = true imports = None diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl index 8e8baa87343..3d43281cda4 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net10.0.bsl @@ -4,7 +4,6 @@ [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index 8e8baa87343..3d43281cda4 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -4,7 +4,6 @@ [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000017] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001A][found Native Int] Expected ByRef on the stack. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001B][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackUnderflow]: : FSharp.Compiler.CompilerOptions::DoWithColor([System.Console]System.ConsoleColor, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2)][offset 0x0000005E] Stack underflow. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000017][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000011][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,int32>'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.IlxGen::HashRangeSorted([S.P.CoreLib]System.Collections.Generic.IDictionary`2>)][offset 0x00000012][found ref '[FSharp.Compiler.Service]FSharp.Compiler.IlxGen+HashRangeSorted'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,T0>'] Unexpected type on the stack. From e297460a7a4e5d11c924c7aff33845524d1831ff Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Sat, 28 Feb 2026 13:19:01 +0100 Subject: [PATCH 06/15] Fix witness field misalignment in state machine struct initialization GenStructStateMachine zipped cloFreeVars (regular free vars only) with ilCloAllFreeVars (witness fields + regular fields). When witness fields were present (in $W methods), the zip was misaligned: regular var values were stored into witness fields and vice versa. The fix initializes witness fields separately first, then skips them when zipping with regular free vars. This was a genuine codegen bug affecting all MergeSources$W methods in FSharp.Core task computation expressions. The $W state machine struct had both witness function fields (getAwaiter, getResult, get_IsCompleted) and regular value fields (computation, task), but the initialization code stored task values into witness fields due to the array offset mismatch. Eliminates all 20 FSharp.Core Release ILVerify errors and all 20 MergeSources$W errors from Debug baselines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Compiler/CodeGen/IlxGen.fs | 13 ++++++++++-- ...erify_FSharp.Core_Debug_netstandard2.0.bsl | 20 ------------------- ...erify_FSharp.Core_Debug_netstandard2.1.bsl | 20 ------------------- ...ify_FSharp.Core_Release_netstandard2.0.bsl | 20 ------------------- ...ify_FSharp.Core_Release_netstandard2.1.bsl | 20 ------------------- 5 files changed, 11 insertions(+), 82 deletions(-) diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index f4d82a30bdd..a2025f0b94a 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -6412,8 +6412,17 @@ and GenStructStateMachine cenv cgbuf eenvouter (res: LoweredStateMachine) sequel CG.EmitInstr cgbuf (pop 0) (Push [ ilMachineAddrTy ]) (I_ldloca(uint16 locIdx)) CG.EmitInstr cgbuf (pop 1) (Push []) (I_stloc(uint16 locIdx2)) - // Initialize the closure variables - for fv, ilv in Seq.zip cloFreeVars cloinfo.ilCloAllFreeVars do + // Initialize witness closure variables (these come first in ilCloAllFreeVars) + let nWitnesses = cloinfo.cloWitnessInfos.Length + + for i in 0 .. nWitnesses - 1 do + let ilv = cloinfo.ilCloAllFreeVars.[i] + CG.EmitInstr cgbuf (pop 0) (Push [ ilMachineAddrTy ]) (I_ldloc(uint16 locIdx2)) + GenWitnessArgFromWitnessInfo cenv cgbuf eenvouter m cloinfo.cloWitnessInfos.[i] + CG.EmitInstr cgbuf (pop 2) (Push []) (mkNormalStfld (mkILFieldSpecInTy (ilCloTy, ilv.fvName, ilv.fvType))) + + // Initialize the regular closure variables (skip witness entries in ilCloAllFreeVars) + for fv, ilv in Seq.zip cloFreeVars (cloinfo.ilCloAllFreeVars |> Seq.skip nWitnesses) do if stateVarsSet.Contains fv then // zero-initialize the state var if realloc then diff --git a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl index 51e9bef7053..cbd1889efbc 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.0.bsl @@ -1,23 +1,3 @@ -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.Operators::castToString(!!0)][offset 0x00000001][found value 'T'][expected ref 'string'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives::retype(!!0)][offset 0x00000001][found value 'T'][expected value 'TResult'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::castclassPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl index 51e9bef7053..cbd1889efbc 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Debug_netstandard2.1.bsl @@ -1,23 +1,3 @@ -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.Operators::castToString(!!0)][offset 0x00000001][found value 'T'][expected ref 'string'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.LanguagePrimitives::retype(!!0)][offset 0x00000001][found value 'T'][expected value 'TResult'] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Microsoft.FSharp.Core.BasicInlinedOperations::castclassPrim(object)][offset 0x00000006][found ref 'T'][expected value 'T'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl index 26ff4867bd5..e69de29bb2d 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.0.bsl @@ -1,20 +0,0 @@ -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl index 26ff4867bd5..e69de29bb2d 100644 --- a/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl +++ b/tests/ILVerify/ilverify_FSharp.Core_Release_netstandard2.1.bsl @@ -1,20 +0,0 @@ -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x0000000E][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPlusPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1)][offset 0x00000016][found ref '[FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x0000000E][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, [S.P.CoreLib]System.Threading.Tasks.Task`1, !!0)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, [S.P.CoreLib]System.Threading.Tasks.Task`1)][offset 0x00000016][found ref '[S.P.CoreLib]System.Threading.Tasks.Task`1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::TaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.TaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x0000000E][found value 'TTaskLike1'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. -[IL]: Error [StackUnexpected]: : Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority::BackgroundTaskBuilder.MergeSources$W([FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Control.BackgroundTaskBuilder, !!0, !!1)][offset 0x00000016][found value 'TTaskLike2'][expected ref '[FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2'] Unexpected type on the stack. From 51f05fdad47d6eeffb2deeb7ce42072f2e2fcc7c Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Sun, 1 Mar 2026 19:35:48 +0100 Subject: [PATCH 07/15] Add ILGen codegen benchmarks comparing SDK vs local compiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BDN benchmarks for each IL codegen change: - StelemLdelem: primitive array read/write (ldelem.u1, stelem.i4, etc.) - CallVirtOnValueType: struct GetHashCode/ToString/Equals (call vs callvirt) - CastThenBr: match returning interface types (castclass at join points) - FilterInFinally: try/with inside finally (catch vs filter) Results: no regressions. callvirt→call shows 4-7% improvement for struct method calls. All other changes performance-neutral. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ILGenCodegen/BENCHMARK_RESULTS.md | 85 +++++++++++++++++++ .../ILGenCodegen/CallVirtOnValueType.fs | 73 ++++++++++++++++ .../ILGenCodegen/CastThenBr.fs | 69 +++++++++++++++ .../ILGenCodegen/FilterInFinally.fs | 66 ++++++++++++++ .../ILGenCodegen/ILGenCodegen.fsproj | 35 ++++++++ .../ILGenCodegen/Program.fs | 28 ++++++ .../ILGenCodegen/StelemLdelem.fs | 71 ++++++++++++++++ .../ILGenCodegen/TaskMergeSources.fs | 46 ++++++++++ 8 files changed, 473 insertions(+) create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/BENCHMARK_RESULTS.md create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CallVirtOnValueType.fs create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CastThenBr.fs create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/FilterInFinally.fs create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/ILGenCodegen.fsproj create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/Program.fs create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/StelemLdelem.fs create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/TaskMergeSources.fs diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/BENCHMARK_RESULTS.md b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/BENCHMARK_RESULTS.md new file mode 100644 index 00000000000..0d3b75886f8 --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/BENCHMARK_RESULTS.md @@ -0,0 +1,85 @@ +``` + +BenchmarkDotNet v0.13.10, macOS 26.2 (25C56) [Darwin 25.2.0] +Apple M3 Max, 1 CPU, 16 logical and 16 physical cores +.NET SDK 10.0.101 + [Host] : .NET 10.0.1 (10.0.125.57005), Arm64 RyuJIT AdvSIMD DEBUG + LocalCompiler : .NET 10.0.2 (10.0.225.61305), Arm64 RyuJIT AdvSIMD + SdkCompiler : .NET 10.0.2 (10.0.225.61305), Arm64 RyuJIT AdvSIMD + +Arguments=/p:BUILDING_USING_DOTNET=true + +``` +| Type | Method | Job | Mean | Error | StdDev | Median | P95 | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio | +|----------------------------- |-------------------------------- |-------------- |-----------------:|---------------:|----------------:|-----------------:|-----------------:|------:|--------:|-------:|-------:|----------:|------------:| +| CallVirtOnValueTypeBenchmark | StructGetHashCode | LocalCompiler | 3,011.739 ns | 4.1497 ns | 3.8816 ns | 3,011.152 ns | 3,018.224 ns | 1.00 | 0.00 | - | - | - | NA | +| CallVirtOnValueTypeBenchmark | StructGetHashCode | SdkCompiler | 3,020.885 ns | 3.4751 ns | 2.9019 ns | 3,021.219 ns | 3,024.821 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| CastThenBrBenchmark | MatchReturningInterface_NoAlloc | LocalCompiler | 23,985.794 ns | 475.2417 ns | 794.0221 ns | 23,652.795 ns | 25,443.705 ns | 0.88 | 0.06 | - | - | - | NA | +| CastThenBrBenchmark | MatchReturningInterface_NoAlloc | SdkCompiler | 27,398.117 ns | 543.5979 ns | 1,432.0542 ns | 27,033.290 ns | 30,303.813 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| FilterInFinallyBenchmark | TryWithInFinally_NoException | LocalCompiler | 555.539 ns | 10.4836 ns | 17.2249 ns | 548.821 ns | 586.716 ns | 1.06 | 0.04 | - | - | - | NA | +| FilterInFinallyBenchmark | TryWithInFinally_NoException | SdkCompiler | 530.672 ns | 1.7119 ns | 1.4295 ns | 530.475 ns | 533.055 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | BoolArrayReadWrite | LocalCompiler | 3,589.626 ns | 24.9488 ns | 20.8334 ns | 3,587.869 ns | 3,625.366 ns | 1.02 | 0.01 | - | - | - | NA | +| StelemLdelemBenchmark | BoolArrayReadWrite | SdkCompiler | 3,513.090 ns | 40.1561 ns | 37.5620 ns | 3,536.126 ns | 3,547.690 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| TaskMergeSourcesBenchmark | TaskLetBangAndBang | LocalCompiler | 14.754 ns | 0.2272 ns | 0.2125 ns | 14.692 ns | 15.123 ns | 1.00 | 0.02 | 0.0004 | - | 72 B | 1.00 | +| TaskMergeSourcesBenchmark | TaskLetBangAndBang | SdkCompiler | 14.751 ns | 0.0665 ns | 0.0589 ns | 14.737 ns | 14.860 ns | 1.00 | 0.00 | 0.0004 | - | 72 B | 1.00 | +| | | | | | | | | | | | | | | +| CallVirtOnValueTypeBenchmark | StructToString | LocalCompiler | 6,550.059 ns | 30.8829 ns | 28.8879 ns | 6,552.014 ns | 6,596.813 ns | 1.00 | 0.00 | 0.1678 | - | 27960 B | 1.00 | +| CallVirtOnValueTypeBenchmark | StructToString | SdkCompiler | 6,522.629 ns | 22.4117 ns | 17.4976 ns | 6,524.147 ns | 6,548.854 ns | 1.00 | 0.00 | 0.1678 | - | 27960 B | 1.00 | +| | | | | | | | | | | | | | | +| CastThenBrBenchmark | MatchReturningInterface_Alloc | LocalCompiler | 57,340.381 ns | 566.1241 ns | 501.8542 ns | 57,160.351 ns | 58,333.448 ns | 1.02 | 0.01 | 1.5869 | - | 266456 B | 1.00 | +| CastThenBrBenchmark | MatchReturningInterface_Alloc | SdkCompiler | 56,407.777 ns | 807.8752 ns | 755.6869 ns | 56,003.489 ns | 57,572.996 ns | 1.00 | 0.00 | 1.5869 | - | 266456 B | 1.00 | +| | | | | | | | | | | | | | | +| FilterInFinallyBenchmark | TryWithInFinally_WithException | LocalCompiler | 2,140,943.877 ns | 42,143.2213 ns | 51,755.6605 ns | 2,130,150.148 ns | 2,226,091.349 ns | 0.93 | 0.07 | - | - | 216000 B | 1.00 | +| FilterInFinallyBenchmark | TryWithInFinally_WithException | SdkCompiler | 2,262,674.964 ns | 56,794.0958 ns | 151,594.9387 ns | 2,201,999.594 ns | 2,728,839.813 ns | 1.00 | 0.00 | - | - | 216003 B | 1.00 | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | IntArrayReadWrite | LocalCompiler | 2,884.971 ns | 9.4347 ns | 8.3636 ns | 2,885.090 ns | 2,896.610 ns | 1.03 | 0.00 | - | - | - | NA | +| StelemLdelemBenchmark | IntArrayReadWrite | SdkCompiler | 2,812.112 ns | 6.3549 ns | 5.3067 ns | 2,811.917 ns | 2,820.260 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| TaskMergeSourcesBenchmark | TaskLetBangAndBang3 | LocalCompiler | 27.341 ns | 0.3246 ns | 0.2711 ns | 27.374 ns | 27.714 ns | 1.01 | 0.01 | 0.0009 | - | 152 B | 1.00 | +| TaskMergeSourcesBenchmark | TaskLetBangAndBang3 | SdkCompiler | 27.020 ns | 0.2093 ns | 0.1748 ns | 27.045 ns | 27.238 ns | 1.00 | 0.00 | 0.0009 | - | 152 B | 1.00 | +| | | | | | | | | | | | | | | +| CallVirtOnValueTypeBenchmark | StructEquals | LocalCompiler | 29,573.711 ns | 220.8120 ns | 206.5476 ns | 29,562.723 ns | 29,922.468 ns | 1.01 | 0.02 | 1.4343 | - | 239976 B | 1.00 | +| CallVirtOnValueTypeBenchmark | StructEquals | SdkCompiler | 29,420.301 ns | 390.6764 ns | 365.4390 ns | 29,608.037 ns | 29,790.980 ns | 1.00 | 0.00 | 1.4343 | - | 239976 B | 1.00 | +| | | | | | | | | | | | | | | +| CastThenBrBenchmark | MatchReturningIComparable | LocalCompiler | 91,689.908 ns | 369.9182 ns | 308.8985 ns | 91,709.345 ns | 92,134.706 ns | 0.95 | 0.04 | 0.8545 | - | 159264 B | 1.00 | +| CastThenBrBenchmark | MatchReturningIComparable | SdkCompiler | 95,445.088 ns | 1,708.9753 ns | 3,413.0083 ns | 93,995.697 ns | 103,541.611 ns | 1.00 | 0.00 | 0.8545 | - | 159264 B | 1.00 | +| | | | | | | | | | | | | | | +| FilterInFinallyBenchmark | TryWithInFinally_GuardHit | LocalCompiler | 1,972,895.145 ns | 8,926.4190 ns | 7,453.9641 ns | 1,969,982.098 ns | 1,984,866.016 ns | 0.96 | 0.01 | - | - | 224000 B | 1.00 | +| FilterInFinallyBenchmark | TryWithInFinally_GuardHit | SdkCompiler | 2,068,823.482 ns | 26,346.7064 ns | 24,644.7255 ns | 2,058,629.232 ns | 2,102,062.206 ns | 1.00 | 0.00 | - | - | 224001 B | 1.00 | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | CharArrayReadWrite | LocalCompiler | 3,837.618 ns | 7.9594 ns | 6.6464 ns | 3,834.811 ns | 3,848.598 ns | 0.99 | 0.00 | - | - | - | NA | +| StelemLdelemBenchmark | CharArrayReadWrite | SdkCompiler | 3,884.815 ns | 19.1506 ns | 15.9916 ns | 3,878.658 ns | 3,914.045 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| TaskMergeSourcesBenchmark | TaskLetBangSequential | LocalCompiler | 5.368 ns | 0.1307 ns | 0.1790 ns | 5.324 ns | 5.703 ns | 1.00 | 0.06 | - | - | - | NA | +| TaskMergeSourcesBenchmark | TaskLetBangSequential | SdkCompiler | 5.382 ns | 0.1341 ns | 0.1435 ns | 5.359 ns | 5.664 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| CallVirtOnValueTypeBenchmark | StructInDictionary | LocalCompiler | 12,207.604 ns | 142.8089 ns | 133.5836 ns | 12,157.128 ns | 12,412.242 ns | 1.00 | 0.01 | 0.6866 | 0.0916 | 111648 B | 1.00 | +| CallVirtOnValueTypeBenchmark | StructInDictionary | SdkCompiler | 12,189.143 ns | 148.7887 ns | 165.3783 ns | 12,107.841 ns | 12,486.912 ns | 1.00 | 0.00 | 0.6866 | 0.0916 | 111648 B | 1.00 | +| | | | | | | | | | | | | | | +| FilterInFinallyBenchmark | SimpleTryFinally | LocalCompiler | 530.156 ns | 1.2822 ns | 1.0707 ns | 530.444 ns | 531.379 ns | 0.96 | 0.01 | - | - | - | NA | +| FilterInFinallyBenchmark | SimpleTryFinally | SdkCompiler | 552.759 ns | 10.7679 ns | 8.9917 ns | 548.853 ns | 569.225 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | SByteArrayReadWrite | LocalCompiler | 5,512.868 ns | 28.2968 ns | 26.4689 ns | 5,510.768 ns | 5,560.457 ns | 0.99 | 0.01 | - | - | - | NA | +| StelemLdelemBenchmark | SByteArrayReadWrite | SdkCompiler | 5,576.221 ns | 76.5248 ns | 63.9016 ns | 5,575.136 ns | 5,679.119 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| TaskMergeSourcesBenchmark | TaskSimple | LocalCompiler | 6.829 ns | 0.0918 ns | 0.0859 ns | 6.832 ns | 6.976 ns | 1.01 | 0.02 | 0.0004 | - | 72 B | 1.00 | +| TaskMergeSourcesBenchmark | TaskSimple | SdkCompiler | 6.746 ns | 0.1331 ns | 0.1112 ns | 6.704 ns | 6.943 ns | 1.00 | 0.00 | 0.0004 | - | 72 B | 1.00 | +| | | | | | | | | | | | | | | +| CallVirtOnValueTypeBenchmark | IntGetHashCode | LocalCompiler | 2,504.634 ns | 6.6625 ns | 5.9061 ns | 2,503.363 ns | 2,513.041 ns | 0.93 | 0.00 | - | - | - | NA | +| CallVirtOnValueTypeBenchmark | IntGetHashCode | SdkCompiler | 2,692.462 ns | 6.0291 ns | 5.3446 ns | 2,692.454 ns | 2,700.421 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | ByteArrayReadWrite | LocalCompiler | 3,827.056 ns | 20.1288 ns | 16.8085 ns | 3,833.095 ns | 3,837.618 ns | 1.02 | 0.00 | - | - | - | NA | +| StelemLdelemBenchmark | ByteArrayReadWrite | SdkCompiler | 3,742.817 ns | 8.5823 ns | 7.1666 ns | 3,745.259 ns | 3,752.045 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| CallVirtOnValueTypeBenchmark | DateTimeGetHashCode | LocalCompiler | 2,629.997 ns | 38.8126 ns | 34.4064 ns | 2,637.633 ns | 2,670.062 ns | 0.96 | 0.01 | - | - | - | NA | +| CallVirtOnValueTypeBenchmark | DateTimeGetHashCode | SdkCompiler | 2,724.887 ns | 10.5121 ns | 8.7781 ns | 2,720.738 ns | 2,741.800 ns | 1.00 | 0.00 | - | - | - | NA | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | IntArrayFilterToArray | LocalCompiler | 7,796.051 ns | 23.8529 ns | 21.1450 ns | 7,796.818 ns | 7,825.524 ns | 0.99 | 0.01 | 0.1221 | - | 21296 B | 1.00 | +| StelemLdelemBenchmark | IntArrayFilterToArray | SdkCompiler | 7,882.273 ns | 125.4244 ns | 111.1855 ns | 7,827.736 ns | 8,067.406 ns | 1.00 | 0.00 | 0.1221 | - | 21296 B | 1.00 | +| | | | | | | | | | | | | | | +| StelemLdelemBenchmark | BoolArrayCountTrue | LocalCompiler | 2,800.847 ns | 17.0188 ns | 15.0868 ns | 2,796.306 ns | 2,828.988 ns | 1.00 | 0.01 | - | - | - | NA | +| StelemLdelemBenchmark | BoolArrayCountTrue | SdkCompiler | 2,809.914 ns | 22.2283 ns | 20.7924 ns | 2,801.633 ns | 2,849.625 ns | 1.00 | 0.00 | - | - | - | NA | diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CallVirtOnValueType.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CallVirtOnValueType.fs new file mode 100644 index 00000000000..c037ba88dee --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CallVirtOnValueType.fs @@ -0,0 +1,73 @@ +/// Phase 2a: callvirt → call for value type methods +/// Tests struct GetHashCode/ToString/Equals performance +/// Changed: callvirt on unboxed value type → call (when boxity=AsValue) +module ILGenCodegen.CallVirtOnValueType + +open System +open System.Collections.Generic +open BenchmarkDotNet.Attributes + +[] +type MyPoint = + val X: int + val Y: int + new(x, y) = { X = x; Y = y } + override this.GetHashCode() = this.X ^^^ (this.Y <<< 16) + override this.Equals(other) = + match other with + | :? MyPoint as o -> this.X = o.X && this.Y = o.Y + | _ -> false + override this.ToString() = sprintf "(%d,%d)" this.X this.Y + +[] +type CallVirtOnValueTypeBenchmark() = + + let points = Array.init 10_000 (fun i -> MyPoint(i, i * 2)) + let _rng = Random(42) + + [] + member _.StructGetHashCode() = + let mutable sum = 0 + for p in points do + sum <- sum + p.GetHashCode() + sum + + [] + member _.StructToString() = + let mutable len = 0 + for i = 0 to 99 do + len <- len + points.[i].ToString().Length + len + + [] + member _.StructEquals() = + let mutable count = 0 + for i = 0 to points.Length - 2 do + if points.[i].Equals(points.[i + 1]) then + count <- count + 1 + count + + [] + member _.StructInDictionary() = + let dict = Dictionary() + for i = 0 to 999 do + dict.[points.[i]] <- i + let mutable sum = 0 + for i = 0 to 999 do + sum <- sum + dict.[points.[i]] + sum + + [] + member _.IntGetHashCode() = + let mutable sum = 0 + for i = 0 to 9999 do + sum <- sum + i.GetHashCode() + sum + + [] + member _.DateTimeGetHashCode() = + let now = DateTime.UtcNow + let mutable sum = 0 + for _ = 0 to 9999 do + sum <- sum + now.GetHashCode() + sum diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CastThenBr.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CastThenBr.fs new file mode 100644 index 00000000000..fd688052b0a --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/CastThenBr.fs @@ -0,0 +1,69 @@ +/// Phase 2b: CastThenBr for interface join points +/// Tests match expressions returning interface types +/// Changed: adds castclass before join point branch when result is interface type +module ILGenCodegen.CastThenBr + +open System +open System.Collections.Generic +open BenchmarkDotNet.Attributes + +type IShape = + abstract Area: unit -> float + +type Circle(r: float) = + interface IShape with + member _.Area() = Math.PI * r * r + +type Square(s: float) = + interface IShape with + member _.Area() = s * s + +type Triangle(b: float, h: float) = + interface IShape with + member _.Area() = 0.5 * b * h + +[] +type CastThenBrBenchmark() = + + let rng = Random(42) + let indices = Array.init 10_000 (fun _ -> rng.Next(3)) + // Pre-allocate objects to eliminate allocation noise + let circle = Circle(1.0) :> IShape + let square = Square(2.0) :> IShape + let triangle = Triangle(3.0, 4.0) :> IShape + + [] + member _.MatchReturningInterface_NoAlloc() = + let mutable total = 0.0 + for i in indices do + let shape: IShape = + match i with + | 0 -> circle + | 1 -> square + | _ -> triangle + total <- total + shape.Area() + total + + [] + member _.MatchReturningInterface_Alloc() = + let mutable total = 0.0 + for i in indices do + let shape: IShape = + match i with + | 0 -> Circle(1.0) + | 1 -> Square(2.0) + | _ -> Triangle(3.0, 4.0) + total <- total + shape.Area() + total + + [] + member _.MatchReturningIComparable() = + let mutable sum = 0 + for i in indices do + let c: IComparable = + match i with + | 0 -> 42 :> IComparable + | 1 -> "hello" :> IComparable + | _ -> DateTime.UtcNow :> IComparable + sum <- sum + c.GetHashCode() + sum diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/FilterInFinally.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/FilterInFinally.fs new file mode 100644 index 00000000000..54d675dee00 --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/FilterInFinally.fs @@ -0,0 +1,66 @@ +/// Phase 3: filter → catch inside finally handlers +/// Tests try/with inside finally blocks +/// Changed: when-guard uses catch instead of filter when inside finally/fault handler +module ILGenCodegen.FilterInFinally + +open System +open BenchmarkDotNet.Attributes + +[] +type FilterInFinallyBenchmark() = + + [] + member _.TryWithInFinally_NoException() = + let mutable sum = 0 + for i = 0 to 999 do + try + sum <- sum + i + finally + try + sum <- sum + 1 + with + | :? InvalidOperationException when sum > 0 -> + sum <- sum - 1 + sum + + [] + member _.TryWithInFinally_WithException() = + let mutable count = 0 + for _ = 0 to 999 do + try + try + raise (InvalidOperationException()) + with + | :? InvalidOperationException -> + count <- count + 1 + finally + try + () + with + | :? ArgumentException when count > 0 -> + count <- count - 1 + count + + [] + member _.TryWithInFinally_GuardHit() = + let mutable count = 0 + for _ = 0 to 999 do + try + count <- count + 1 + finally + try + raise (ArgumentException()) + with + | :? ArgumentException when count > 0 -> + count <- count + 1 + count + + [] + member _.SimpleTryFinally() = + let mutable sum = 0 + for i = 0 to 999 do + try + sum <- sum + i + finally + sum <- sum + 1 + sum diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/ILGenCodegen.fsproj b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/ILGenCodegen.fsproj new file mode 100644 index 00000000000..b10b0472e2e --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/ILGenCodegen.fsproj @@ -0,0 +1,35 @@ + + + + Exe + true + + + + $(MSBuildThisFileDirectory)../../../../artifacts/bin/fsc/Release/$(TargetFramework)/fsc.dll + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/Program.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/Program.fs new file mode 100644 index 00000000000..122e4f4b673 --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/Program.fs @@ -0,0 +1,28 @@ +module ILGenCodegen.Program + +open System +open System.Reflection +open BenchmarkDotNet.Configs +open BenchmarkDotNet.Jobs +open BenchmarkDotNet.Running + +let config = + DefaultConfig.Instance + .AddJob( + Job.Default + .WithId("SdkCompiler") + .WithArguments([| MsBuildArgument "/p:BUILDING_USING_DOTNET=true" |]) + .AsBaseline()) + .AddJob( + Job.Default + .WithId("LocalCompiler") + .WithArguments([| MsBuildArgument "/p:BUILDING_USING_DOTNET=true" |]) + .WithCustomBuildConfiguration "LocalCompiler") + .WithOptions(ConfigOptions.JoinSummary) + .HideColumns("BuildConfiguration") + +ignore ( + BenchmarkSwitcher + .FromAssembly(Assembly.GetExecutingAssembly()) + .Run(Environment.GetCommandLineArgs(), config) +) diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/StelemLdelem.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/StelemLdelem.fs new file mode 100644 index 00000000000..6ef413293bb --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/StelemLdelem.fs @@ -0,0 +1,71 @@ +/// Phase 1: stelem/ldelem specialization +/// Tests array read/write performance for primitive types +/// Changed: ldelem System.Boolean → ldelem.u1, stelem System.Int32 → stelem.i4, etc. +module ILGenCodegen.StelemLdelem + +open BenchmarkDotNet.Attributes + +[] +type StelemLdelemBenchmark() = + + let boolArr = Array.create 10_000 true + let intArr = Array.init 10_000 id + let charArr = Array.create 10_000 'x' + let sbyteArr = Array.create 10_000 42y + let byteArr = Array.create 10_000 42uy + + [] + member _.BoolArrayReadWrite() = + let arr = boolArr + let mutable sum = 0 + for i = 0 to arr.Length - 1 do + if arr.[i] then sum <- sum + 1 + arr.[i] <- (i % 2 = 0) + sum + + [] + member _.IntArrayReadWrite() = + let arr = intArr + let mutable sum = 0 + for i = 0 to arr.Length - 1 do + sum <- sum + arr.[i] + arr.[i] <- i + sum + + [] + member _.CharArrayReadWrite() = + let arr = charArr + let mutable sum = 0 + for i = 0 to arr.Length - 1 do + sum <- sum + int arr.[i] + arr.[i] <- char (i % 128) + sum + + [] + member _.SByteArrayReadWrite() = + let arr = sbyteArr + let mutable sum = 0 + for i = 0 to arr.Length - 1 do + sum <- sum + int arr.[i] + arr.[i] <- sbyte (i % 127) + sum + + [] + member _.ByteArrayReadWrite() = + let arr = byteArr + let mutable sum = 0 + for i = 0 to arr.Length - 1 do + sum <- sum + int arr.[i] + arr.[i] <- byte (i % 256) + sum + + [] + member _.IntArrayFilterToArray() = + intArr |> Array.filter (fun x -> x % 2 = 0) |> ignore + + [] + member _.BoolArrayCountTrue() = + let mutable count = 0 + for b in boolArr do + if b then count <- count + 1 + count diff --git a/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/TaskMergeSources.fs b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/TaskMergeSources.fs new file mode 100644 index 00000000000..5ba046d8f82 --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/ILGenCodegen/TaskMergeSources.fs @@ -0,0 +1,46 @@ +/// Phase 4: Witness field initialization fix in state machine structs +/// Tests task CE with multiple sources (let! ... and! ...) +/// Changed: correct field init order in GenStructStateMachine for $W methods +module ILGenCodegen.TaskMergeSources + +open System.Threading.Tasks +open BenchmarkDotNet.Attributes + +[] +type TaskMergeSourcesBenchmark() = + + [] + member _.TaskLetBangAndBang() = + let t = + task { + let! a = Task.FromResult 1 + and! b = Task.FromResult 2 + return a + b + } + t.Result + + [] + member _.TaskLetBangAndBang3() = + let t = + task { + let! a = Task.FromResult 1 + and! b = Task.FromResult 2 + and! c = Task.FromResult 3 + return a + b + c + } + t.Result + + [] + member _.TaskLetBangSequential() = + let t = + task { + let! a = Task.FromResult 1 + let! b = Task.FromResult 2 + return a + b + } + t.Result + + [] + member _.TaskSimple() = + let t = task { return 42 } + t.Result From 6c0f56b7af8a458fcb0e0d9a14b779e4e05eb137 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Mon, 2 Mar 2026 10:21:36 +0100 Subject: [PATCH 08/15] remove superflous comments --- src/Compiler/AbstractIL/ilwrite.fs | 3 --- src/Compiler/CodeGen/IlxGen.fs | 29 +++-------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/src/Compiler/AbstractIL/ilwrite.fs b/src/Compiler/AbstractIL/ilwrite.fs index 7c49ec199d2..1430e6a7c81 100644 --- a/src/Compiler/AbstractIL/ilwrite.fs +++ b/src/Compiler/AbstractIL/ilwrite.fs @@ -1924,9 +1924,6 @@ module Codebuf = | Unaligned2 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x2 | Unaligned4 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x4 - /// Map ILType to ILBasicType for primitive types that have specialized stelem/ldelem instructions. - /// This avoids emitting `stelem ` / `ldelem ` for these types, - /// which triggers ILVerify StackUnexpected errors due to asymmetric verification type handling. let tryPrimitiveAsBasicType (ilg: ILGlobals) (ty: ILType) = if isILBoolTy ilg ty then Some DT_U1 elif isILSByteTy ilg ty then Some DT_I1 diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index a2025f0b94a..c7d57f48470 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -1162,10 +1162,7 @@ and sequel = /// Branch to the given mark | Br of Mark - /// Cast to the given interface type, then branch to the given mark. - /// Used at match/if-else join points when the result type is an interface - /// so that each branch casts to the interface before merging, preventing - /// ILVerify StackUnexpected errors at the join point. + /// Emit castclass to interface type then branch, ensuring correct merge type at join points (ECMA-335 III.1.8.1.3). | CastThenBr of ILType * Mark /// Execute the given comparison-then-branch instructions on the result of the expression @@ -1251,9 +1248,7 @@ and IlxGenEnv = /// Are we under the scope of a try, catch or finally? If so we can't tailcall. SEH = structured exception handling withinSEH: bool - /// Are we generating code inside a finally or fault handler? - /// If so, we must not emit filter blocks because ILVerify incorrectly computes - /// the entry stack for a filter nested inside a finally handler (dotnet/runtime issue). + /// Suppresses filter block emission inside finally/fault handlers (workaround for dotnet/runtime#112406). insideFinallyOrFaultHandler: bool /// Are we inside of a recursive let binding, while loop, or a for loop? @@ -3306,9 +3301,6 @@ and GenSequel cenv cloc cgbuf sequel = CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) | CastThenBr(ilTy, x) -> - // Cast to the interface type before branching to the join point. - // This ensures ILVerify sees the correct interface type at the merge point - // instead of computing LUB of different concrete types as System.Object. CG.EmitInstr cgbuf (pop 1) (Push [ ilTy ]) (I_castclass ilTy) if cgbuf.mgbuf.cenv.options.generateDebugSymbols then @@ -3569,11 +3561,6 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU let sequelOnBranches, afterJoin, stackAfterJoin, sequelAfterJoin = GenJoinPoint cenv cgbuf "match" eenv ty m sequel - // When the match result type is an interface and at least one branch - // pushes a different concrete class type, emit castclass in each branch - // before jumping to the join label. This ensures ILVerify sees the - // interface type at the merge point instead of computing LUB as Object. - // Only do this when branches produce reference types (not value types). let sequelOnBranches = match sequelOnBranches with | Br mark when @@ -4914,9 +4901,6 @@ and GenTryWith cenv cgbuf eenv (e1, valForFilter: Val, filterExpr, valForHandler GenTry cenv cgbuf eenv scopeMarks (e1, m, resTy, spTry) let seh = - // Don't generate filter blocks inside finally/fault handlers. - // ILVerify incorrectly computes the entry stack for a filter nested inside a finally handler, - // treating the filter entry as a finally entry (empty stack) instead of a filter entry (exception on stack). if not eenv.insideFinallyOrFaultHandler && (cenv.options.generateFilterBlocks || eligibleForFilter cenv filterExpr) @@ -7510,14 +7494,7 @@ and GenJoinPoint cenv cgbuf pos eenv ty m sequel = let stackAfterJoin = (pushed :: cgbuf.GetCurrentStack()) let afterJoin = CG.GenerateDelayMark cgbuf (pos + "_join") - // When the match result type is an interface and branches produce reference - // types, emit castclass in each branch before jumping to the join label. - // This ensures ILVerify sees the correct interface type at the merge point - // instead of computing LUB of different concrete class types as System.Object. - let sequelOnBranches = - Br afterJoin - - sequelOnBranches, afterJoin, stackAfterJoin, sequel + Br afterJoin, afterJoin, stackAfterJoin, sequel // Accumulate the decision graph as we go and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets sequel contf = From 8d4513dc8050cd2589f132c5981127733b5e184a Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Mon, 2 Mar 2026 10:29:27 +0100 Subject: [PATCH 09/15] Add release notes for ILVerify codegen fixes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/release-notes/.FSharp.Compiler.Service/10.0.300.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md index 253c920980f..d9b8d7a7b42 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md @@ -23,6 +23,7 @@ * Fix graph-based type checking incorrectly resolving dependencies when the same module name is defined across multiple files in the same namespace. ([PR #19280](https://github.com/dotnet/fsharp/pull/19280)) * F# Scripts: Fix default reference paths resolving when an SDK directory is specified. ([PR #19270](https://github.com/dotnet/fsharp/pull/19270)) * Improve static compilation of state machines. ([PR #19297](https://github.com/dotnet/fsharp/pull/19297)) +* Fix codegen to produce IL passing ILVerify: specialized stelem/ldelem for primitives, callvirt→call on value types, castclass at interface join points, filter→catch inside finally handlers, witness field alignment in state machine structs. ([PR #19372](https://github.com/dotnet/fsharp/pull/19372)) * Fix a bug where `let!` and `use!` were incorrectly allowed outside computation expressions. [PR #19347](https://github.com/dotnet/fsharp/pull/19347) ### Added From 02f9ed0fea9e73ba35f76c1ff047ba64a566fc56 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Mon, 2 Mar 2026 10:43:55 +0100 Subject: [PATCH 10/15] fantomas --- src/Compiler/CodeGen/IlxGen.fs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index c7d57f48470..2b93702331e 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -3569,7 +3569,8 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU && targets |> Array.forall (fun (TTarget(_, body, _)) -> let bodyTy = tyOfExpr cenv.g body - not (isStructTy cenv.g bodyTy) && not (isUnitTy cenv.g bodyTy)) -> + not (isStructTy cenv.g bodyTy) && not (isUnitTy cenv.g bodyTy)) + -> CastThenBr(GenType cenv m eenv.tyenv ty, mark) | _ -> sequelOnBranches @@ -4451,9 +4452,12 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = let ilThisTy = GenType cenv m eenv.tyenv ty I_callconstraint(useICallVirt, isTailCall, ilThisTy, mspec, None) | _ -> - if newobj then I_newobj(mspec, None) - elif useICallVirt && boxity <> AsValue then I_callvirt(isTailCall, mspec, None) - else I_call(isTailCall, mspec, None) + if newobj then + I_newobj(mspec, None) + elif useICallVirt && boxity <> AsValue then + I_callvirt(isTailCall, mspec, None) + else + I_call(isTailCall, mspec, None) // ok, now we're ready to generate if isSuperInit || isSelfInit then From 55414adbbb61a115d1ae753ed01a68173b33422f Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Mon, 2 Mar 2026 16:11:56 +0100 Subject: [PATCH 11/15] Fix CI baseline mismatches from codegen changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TailCall 06: Update IL offsets (IL_0040→IL_0034) due to stelem.i4 being shorter - ILVerify Debug baselines: Fix set_Item offset (0x1F→0x25), normalize pointerToNativeInt - ILVerify script: Handle empty baseline matching empty output (FSharp.Core Release) - StructDU net472 baseline: callvirt→call on value type ToString() - Trimming check: Update expected FSharp.Core.dll size (311296→311808) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/AheadOfTime/Trimming/check.ps1 | 2 +- .../EmittedIL/Nullness/StructDU.fs.il.net472.bsl | 2 +- .../FSharp.Compiler.ComponentTests/EmittedIL/TailCalls.fs | 8 ++++---- tests/ILVerify/ilverify.ps1 | 4 ++++ .../ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl | 4 ++-- ...erify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl | 4 ++-- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/AheadOfTime/Trimming/check.ps1 b/tests/AheadOfTime/Trimming/check.ps1 index ec64b57863f..1695a3684f0 100644 --- a/tests/AheadOfTime/Trimming/check.ps1 +++ b/tests/AheadOfTime/Trimming/check.ps1 @@ -63,7 +63,7 @@ function CheckTrim($root, $tfm, $outputfile, $expected_len, $callerLineNumber) { $allErrors = @() # Check net9.0 trimmed assemblies -$allErrors += CheckTrim -root "SelfContained_Trimming_Test" -tfm "net9.0" -outputfile "FSharp.Core.dll" -expected_len 311296 -callerLineNumber 66 +$allErrors += CheckTrim -root "SelfContained_Trimming_Test" -tfm "net9.0" -outputfile "FSharp.Core.dll" -expected_len 311808 -callerLineNumber 66 # Check net9.0 trimmed assemblies with static linked FSharpCore $allErrors += CheckTrim -root "StaticLinkedFSharpCore_Trimming_Test" -tfm "net9.0" -outputfile "StaticLinkedFSharpCore_Trimming_Test.dll" -expected_len 9169408 -callerLineNumber 69 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.net472.bsl index 61189193176..9ee35c80b50 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Nullness/StructDU.fs.il.net472.bsl @@ -425,7 +425,7 @@ .maxstack 8 IL_0000: ldarga.s x - IL_0002: callvirt instance string MyTestModule/Myassembly::ToString() + IL_0002: call instance string MyTestModule/Myassembly::ToString() IL_0007: ret } diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TailCalls.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TailCalls.fs index bc0d963ba6d..13ed704736f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TailCalls.fs +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TailCalls.fs @@ -248,10 +248,10 @@ let run() = |> shouldSucceed |> verifyIL [ """ - IL_0040: ldc.i4.s 42 - IL_0042: ldc.i4.5 - IL_0043: call void TailCall06::foo(int32, - !!0) + IL_0034: ldc.i4.s 42 + IL_0036: ldc.i4.5 + IL_0037: call void TailCall06::foo(int32, + !!0) """ ] diff --git a/tests/ILVerify/ilverify.ps1 b/tests/ILVerify/ilverify.ps1 index 9559d00dc42..60ee099d179 100644 --- a/tests/ILVerify/ilverify.ps1 +++ b/tests/ILVerify/ilverify.ps1 @@ -173,6 +173,10 @@ foreach ($project in $projects.Keys) { [string[]] $baseline = Get-Content $baseline_file # | ForEach-Object { Normalize-IlverifyOutputLine $_ } if ($baseline.Length -eq 0) { + if ($ilverify_output.Length -eq 0) { + Write-Host "Baseline file is empty and ILVerify produced no errors - OK." + continue + } Write-Host "Baseline file is empty: $baseline_file" if ($env:TEST_UPDATE_BSL -eq "1") { Write-Host "Updating empty baseline file: $baseline_file" diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl index debf5271955..e05b9eb3e10 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net10.0.bsl @@ -2,10 +2,10 @@ [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index debf5271955..e05b9eb3e10 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -2,10 +2,10 @@ [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.SafeUnmanagedMemoryStream::.ctor(uint8*, int64, int64, [S.P.CoreLib]System.IO.FileAccess, object)][offset 0x00000001] Unmanaged pointers are not a verifiable type. [IL]: Error [UnmanagedPointer]: : FSharp.Compiler.IO.RawByteMemory::.ctor(uint8*, int32, object)][offset 0x00000009] Unmanaged pointers are not a verifiable type. [IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::get_Item(int32)][offset 0x0000001E][found Native Int] Expected ByRef on the stack. -[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x0000001F][found Native Int] Expected ByRef on the stack. +[IL]: Error [StackByRef]: : FSharp.Compiler.IO.RawByteMemory::set_Item(int32, uint8)][offset 0x00000025][found Native Int] Expected ByRef on the stack. [IL]: Error [ReturnPtrToStack]: : Internal.Utilities.Text.Lexing.LexBuffer`1::get_LexemeView()][offset 0x00000019] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadKeyString([System.Reflection.Metadata]System.Reflection.Metadata.BlobReader&)][offset 0x00000026] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [ReturnPtrToStack]: : FSharp.Compiler.CodeAnalysis.ItemKeyStore::ReadFirstKeyString()][offset 0x00000070] Return type is ByRef, TypedReference, ArgHandle, or ArgIterator. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder::writeRange([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000011][found address of '[FSharp.Compiler.Service]FSharp.Compiler.Text.Range'][expected Native Int] Unexpected type on the stack. [IL]: Error [ExpectedNumericType]: : FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder::WriteAll([FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem[])][offset 0x0000001D][found address of '[FSharp.Compiler.Service]FSharp.Compiler.EditorServices.SemanticClassificationItem'] Expected numeric type on the stack. -[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt@106::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. +[IL]: Error [UnmanagedPointer]: : FSharp.Compiler.Interactive.Shell+Utilities+pointerToNativeInt::Invoke(object)][offset 0x00000007] Unmanaged pointers are not a verifiable type. From 7cf76d25aff80febce776702f800bc1d923942a3 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Mon, 2 Mar 2026 17:06:54 +0100 Subject: [PATCH 12/15] Fix ILVerify empty baseline check: filter to error lines only Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/ILVerify/ilverify.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ILVerify/ilverify.ps1 b/tests/ILVerify/ilverify.ps1 index 60ee099d179..41733ff2abf 100644 --- a/tests/ILVerify/ilverify.ps1 +++ b/tests/ILVerify/ilverify.ps1 @@ -173,7 +173,8 @@ foreach ($project in $projects.Keys) { [string[]] $baseline = Get-Content $baseline_file # | ForEach-Object { Normalize-IlverifyOutputLine $_ } if ($baseline.Length -eq 0) { - if ($ilverify_output.Length -eq 0) { + $errorLines = @($ilverify_output | Where-Object { $_ -and $_.Trim() -and $_ -match "\[IL\]" }) + if ($errorLines.Length -eq 0) { Write-Host "Baseline file is empty and ILVerify produced no errors - OK." continue } From 2a8cfc851535e47749d623671aa32d96dc80205d Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 6 Mar 2026 18:28:44 +0100 Subject: [PATCH 13/15] Fix CI: update trimmed FSharp.Core.dll expected size and restore missing release note Update SelfContained_Trimming_Test expected size from 311808 to 310784 bytes to match the actual trimmed output after merging main. Restore the culture-independent parsing release note entry (PR #19370) that was dropped during the merge conflict resolution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/release-notes/.FSharp.Core/10.0.300.md | 1 + tests/AheadOfTime/Trimming/check.ps1 | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/.FSharp.Core/10.0.300.md b/docs/release-notes/.FSharp.Core/10.0.300.md index fe9c39d742d..63321c19617 100644 --- a/docs/release-notes/.FSharp.Core/10.0.300.md +++ b/docs/release-notes/.FSharp.Core/10.0.300.md @@ -8,6 +8,7 @@ * Fix EvaluateQuotation to handle Sequential expressions, void method calls (unit return), and other patterns that were previously throwing NotSupportedException. Also properly handles unit-returning expressions by using Action delegates instead of Func delegates. ([Issue #19099](https://github.com/dotnet/fsharp/issues/19099)) * Fix query conditionals without else branch (if-then only) that were causing type mismatch errors. Now properly extracts element type from IQueryable for creating empty sequences. ([Issue #3445](https://github.com/dotnet/fsharp/issues/3445)) * Fix `Seq.empty` rendering as `"EmptyEnumerable"` in serializers by delegating to `System.Linq.Enumerable.Empty<'T>()` instead of using a custom DU type. ([Issue #17864](https://github.com/dotnet/fsharp/issues/17864), [PR #19317](https://github.com/dotnet/fsharp/pull/19317)) +* Ensure culture-independent parsing of .NET-style interpolated string holes. ([Issue #19367](https://github.com/dotnet/fsharp/issues/19367), [PR #19370](https://github.com/dotnet/fsharp/pull/19370)) ### Added diff --git a/tests/AheadOfTime/Trimming/check.ps1 b/tests/AheadOfTime/Trimming/check.ps1 index 53099eba9ba..2b15c468c2c 100644 --- a/tests/AheadOfTime/Trimming/check.ps1 +++ b/tests/AheadOfTime/Trimming/check.ps1 @@ -63,7 +63,7 @@ function CheckTrim($root, $tfm, $outputfile, $expected_len, $callerLineNumber) { $allErrors = @() # Check net9.0 trimmed assemblies -$allErrors += CheckTrim -root "SelfContained_Trimming_Test" -tfm "net9.0" -outputfile "FSharp.Core.dll" -expected_len 311808 -callerLineNumber 66 +$allErrors += CheckTrim -root "SelfContained_Trimming_Test" -tfm "net9.0" -outputfile "FSharp.Core.dll" -expected_len 310784 -callerLineNumber 66 # Check net9.0 trimmed assemblies with static linked FSharpCore $allErrors += CheckTrim -root "StaticLinkedFSharpCore_Trimming_Test" -tfm "net9.0" -outputfile "StaticLinkedFSharpCore_Trimming_Test.dll" -expected_len 9168384 -callerLineNumber 69 From 573c0cd7ee3dcc20f6cab2f6af67d2da6082461e Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 6 Mar 2026 18:44:48 +0100 Subject: [PATCH 14/15] Move release notes from 10.0.300 to 11.0.100 (post-freeze) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/release-notes/.FSharp.Compiler.Service/10.0.300.md | 1 - docs/release-notes/.FSharp.Compiler.Service/11.0.100.md | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/release-notes/.FSharp.Compiler.Service/11.0.100.md diff --git a/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md index 44e3bb828b0..135ab20b592 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/10.0.300.md @@ -24,7 +24,6 @@ * Fix graph-based type checking incorrectly resolving dependencies when the same module name is defined across multiple files in the same namespace. ([PR #19280](https://github.com/dotnet/fsharp/pull/19280)) * F# Scripts: Fix default reference paths resolving when an SDK directory is specified. ([PR #19270](https://github.com/dotnet/fsharp/pull/19270)) * Improve static compilation of state machines. ([PR #19297](https://github.com/dotnet/fsharp/pull/19297)) -* Fix codegen to produce IL passing ILVerify: specialized stelem/ldelem for primitives, callvirt→call on value types, castclass at interface join points, filter→catch inside finally handlers, witness field alignment in state machine structs. ([PR #19372](https://github.com/dotnet/fsharp/pull/19372)) * Fix a bug where `let!` and `use!` were incorrectly allowed outside computation expressions. [PR #19347](https://github.com/dotnet/fsharp/pull/19347) ### Added diff --git a/docs/release-notes/.FSharp.Compiler.Service/11.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/11.0.100.md new file mode 100644 index 00000000000..5c9cc011315 --- /dev/null +++ b/docs/release-notes/.FSharp.Compiler.Service/11.0.100.md @@ -0,0 +1,9 @@ +### Fixed + +* Fix codegen to produce IL passing ILVerify: specialized stelem/ldelem for primitives, callvirt→call on value types, castclass at interface join points, filter→catch inside finally handlers, witness field alignment in state machine structs. ([PR #19372](https://github.com/dotnet/fsharp/pull/19372)) + +### Added + +### Changed + +### Breaking Changes From cace776861a68925f9375169b157e4695a779cb1 Mon Sep 17 00:00:00 2001 From: Tomas Grosup Date: Fri, 6 Mar 2026 20:17:13 +0100 Subject: [PATCH 15/15] Fix flaky ModuleReaderCancellationTests on Linux CI AsyncLocal cancellation token cleanup may not have propagated after Async.RunSynchronously on slower CI platforms. Add tolerance delay before the HasCancellationToken assertion, matching the same pattern needed for MacOS CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ModuleReaderCancellationTests.fs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/FSharp.Compiler.Service.Tests/ModuleReaderCancellationTests.fs b/tests/FSharp.Compiler.Service.Tests/ModuleReaderCancellationTests.fs index f307586cd5c..f8a35c88ca2 100644 --- a/tests/FSharp.Compiler.Service.Tests/ModuleReaderCancellationTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/ModuleReaderCancellationTests.fs @@ -150,6 +150,10 @@ let parseAndCheck path source options = | _, FSharpCheckFileAnswer.Aborted -> None | _, FSharpCheckFileAnswer.Succeeded results -> Some results + // AsyncLocal cleanup may not have propagated yet on slower CI platforms (Linux, MacOS). + if Cancellable.HasCancellationToken then + System.Threading.Thread.Sleep(200) + Cancellable.HasCancellationToken |> shouldEqual false result