From ded0349883773e2c8df4caee6303470e01bb9ca8 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Mon, 6 Jan 2025 22:16:09 +0100
Subject: [PATCH 01/21] run type provider tests in sequence (#18200)
---
 .../ProjectAnalysisTests.fs                          | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs b/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
index 1570cd34d0c..71bffac7974 100644
--- a/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
+++ b/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
@@ -3691,7 +3691,7 @@ let _ = XmlProvider<"13">.GetSample()
     let options = { checker.GetProjectOptionsFromCommandLineArgs (projFileName, args) with SourceFiles = fileNames }
 
 // ".NET Core SKIPPED: Disabled until FSharp.Data.dll is build for dotnet core."
-[]
+[]
 let ``Test Project25 whole project errors`` () =
     let wholeProjectResults = checker.ParseAndCheckProject(Project25.options) |> Async.RunImmediate
     for e in wholeProjectResults.Diagnostics do
@@ -3699,7 +3699,7 @@ let ``Test Project25 whole project errors`` () =
     wholeProjectResults.Diagnostics.Length |> shouldEqual 0
 
 // ".NET Core SKIPPED: Disabled until FSharp.Data.dll is build for dotnet core."
-[]
+[]
 let ``Test Project25 symbol uses of type-provided members`` () =
     let wholeProjectResults = checker.ParseAndCheckProject(Project25.options) |> Async.RunImmediate
     let backgroundParseResults1, backgroundTypedParse1 =
@@ -3756,8 +3756,8 @@ let ``Test Project25 symbol uses of type-provided members`` () =
     usesOfGetSampleSymbol |> shouldEqual [|("file1", ((5, 8), (5, 25))); ("file1", ((10, 8), (10, 78)))|]
 
 // ".NET Core SKIPPED: Disabled until FSharp.Data.dll is build for dotnet core.")>]
-[]
-let ``Test symbol uses of type-provided types`` () =
+[]
+let ``Test Project25 symbol uses of type-provided types`` () =
     let wholeProjectResults = checker.ParseAndCheckProject(Project25.options) |> Async.RunImmediate
     let backgroundParseResults1, backgroundTypedParse1 =
         checker.GetBackgroundCheckResultsForFileInProject(Project25.fileName1, Project25.options)
@@ -3776,8 +3776,8 @@ let ``Test symbol uses of type-provided types`` () =
 
     usesOfGetSampleSymbol |> shouldEqual [|("file1", ((4, 15), (4, 26))); ("file1", ((10, 8), (10, 19)))|]
 
-[]
-let ``Test symbol uses of fully-qualified records`` () =
+[]
+let ``Test Project25 symbol uses of fully-qualified records`` () =
     let wholeProjectResults = checker.ParseAndCheckProject(Project25.options) |> Async.RunImmediate
     let backgroundParseResults1, backgroundTypedParse1 =
         checker.GetBackgroundCheckResultsForFileInProject(Project25.fileName1, Project25.options)
From 6ce069132dcce529c25a6404b7c27818f96f5b6a Mon Sep 17 00:00:00 2001
From: "Kevin Ransom (msft)" 
Date: Tue, 7 Jan 2025 04:18:55 -0800
Subject: [PATCH 02/21] Improve directory attribute refactor  - Break up PR
 #18161 - Part 1 (#18195)
* refactor
* tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop
---
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 .../EmittedIL/ForLoop/ForLoop.fs              | 416 ++++--------------
 .../EmittedIL/ForLoop/ForLoop01.fs            |   6 +
 ...ealInternalSignatureOff.OptimizeOff.il.bsl | 115 +++++
 ...RealInternalSignatureOn.OptimizeOff.il.bsl | 144 ++++++
 .../EmittedIL/ForLoop/ForLoop02.fs            |   7 +
 ...ealInternalSignatureOff.OptimizeOff.il.bsl |  90 ++++
 ...RealInternalSignatureOn.OptimizeOff.il.bsl | 109 +++++
 .../EmittedIL/ForLoop/ForLoop03.fs            |  14 +
 ...rnalSignatureOff.OptimizeOff.il.net472.bsl | 173 ++++++++
 ...nalSignatureOff.OptimizeOff.il.netcore.bsl | 167 +++++++
 ...ernalSignatureOn.OptimizeOff.il.net472.bsl | 189 ++++++++
 ...rnalSignatureOn.OptimizeOff.il.netcore.bsl | 183 ++++++++
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...alInternalSignatureOff.OptimizeOff.il.bsl} | 163 ++++---
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOn.OptimizeOff.il.bsl} |  21 +-
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...alInternalSignatureOff.OptimizeOff.il.bsl} | 163 +++----
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOn.OptimizeOff.il.bsl} |  35 +-
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOff.il.bsl | 226 ++++++++++
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...d03.fs.RealInternalSignatureOff.opt.il.bsl | 304 -------------
 ...RealInternalSignatureOn.OptimizeOff.il.bsl | 239 ++++++++++
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...nd03.fs.RealInternalSignatureOn.opt.il.bsl | 323 --------------
 ...ealInternalSignatureOff.OptimizeOff.il.bsl | 226 ++++++++++
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...d04.fs.RealInternalSignatureOff.opt.il.bsl | 304 -------------
 ...RealInternalSignatureOn.OptimizeOff.il.bsl | 239 ++++++++++
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...nd04.fs.RealInternalSignatureOn.opt.il.bsl | 323 --------------
 ...alInternalSignatureOff.OptimizeOff.il.bsl} | 237 +++++-----
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOn.OptimizeOff.il.bsl} | 165 ++++---
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 ...ealInternalSignatureOff.OptimizeOn.il.bsl} |   0
 ...RealInternalSignatureOn.OptimizeOn.il.bsl} |   0
 tests/FSharp.Test.Utilities/Compiler.fs       | 127 +++++-
 .../DirectoryAttribute.fs                     |  94 +---
 .../FSharp.Test.Utilities.fsproj              |   3 +-
 .../FileInlineDataAttribute.fs                | 163 +++++++
 .../ProjectGeneration.fs                      |   4 +-
 83 files changed, 2890 insertions(+), 2082 deletions(-)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnArray01.fs.RealInternalSignatureOff.il.bsl => ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnArray01.fs.RealInternalSignatureOn.il.bsl => ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnList01.fs.RealInternalSignatureOff.il.bsl => ForEachOnList01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnList01.fs.RealInternalSignatureOn.il.bsl => ForEachOnList01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnString01.fs.RealInternalSignatureOff.il.bsl => ForEachOnString01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachOnString01.fs.RealInternalSignatureOn.il.bsl => ForEachOnString01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepByte.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepByte.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepChar.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepChar.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepChar.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepChar.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt16.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt16.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt32.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt32.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt64.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepInt64.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepSByte.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepSByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepSByte.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepSByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt16.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepUInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt16.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepUInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt32.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepUInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt32.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepUInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt64.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepUInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUInt64.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepUInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.opt.il.bsl => ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.opt.il.bsl => ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.net472.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.net472.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoAllocationOfTuple01.fs.RealInternalSignatureOff.il.bsl => NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoAllocationOfTuple01.fs.RealInternalSignatureOn.il.bsl => NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable01.fsx.RealInternalSignatureOff.il.bsl => NoIEnumerable01.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable01.fsx.RealInternalSignatureOn.il.bsl => NoIEnumerable01.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable02.fsx.RealInternalSignatureOff.il.bsl => NoIEnumerable02.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable02.fsx.RealInternalSignatureOn.il.bsl => NoIEnumerable02.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable03.fsx.RealInternalSignatureOff.il.bsl => NoIEnumerable03.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NoIEnumerable03.fsx.RealInternalSignatureOn.il.bsl => NoIEnumerable03.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.opt.il.bsl => NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl} (61%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.il.bsl => NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.opt.il.bsl => NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl} (95%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.il.bsl => NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.opt.il.bsl => NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl} (60%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.il.bsl => NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.opt.il.bsl => NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl} (93%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.il.bsl => NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.il.bsl => NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 delete mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.opt.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.il.bsl => NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 delete mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOn.opt.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.il.bsl => NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 delete mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOff.opt.il.bsl
 create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.il.bsl => NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 delete mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd04.fs.RealInternalSignatureOn.opt.il.bsl
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.opt.il.bsl => NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOff.il.bsl} (52%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.il.bsl => NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.opt.il.bsl => NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOff.il.bsl} (69%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.il.bsl => NonTrivialBranchingBindingInEnd05.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ZeroToArrLength01.fs.RealInternalSignatureOff.il.bsl => ZeroToArrLength01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ZeroToArrLength01.fs.RealInternalSignatureOn.il.bsl => ZeroToArrLength01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ZeroToArrLength02.fs.RealInternalSignatureOff.il.bsl => ZeroToArrLength02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl} (100%)
 rename tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/{ZeroToArrLength02.fs.RealInternalSignatureOn.il.bsl => ZeroToArrLength02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl} (100%)
 create mode 100644 tests/FSharp.Test.Utilities/FileInlineDataAttribute.fs
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnArray01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnList01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachOnString01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepChar.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepSByte.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt16.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt32.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUInt64.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStepUIntPtr.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForEachRangeStep_UnitsOfMeasure.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop.fs
index 2f890a85222..a12316477a9 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop.fs
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop.fs
@@ -10,442 +10,210 @@ module ForLoop =
         compilation
         |> withOptions [ "--test:EmitFeeFeeAs100001" ]
         |> asExe
-        |> withOptimize
         |> withEmbeddedPdb
         |> withEmbedAllSource
         |> ignoreWarnings
         |> verifyILBaseline
 
-    // SOURCE=NoAllocationOfTuple01.fs SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoAllocationOfTuple01.dll" # NoAllocationOfTuple01.fs
-    []
-    let ``NoAllocationOfTuple01_fs_RealInternalSignatureOff`` compilation =
+    // SOURCE=ForLoop01.fs                 SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop01.exe"	# ForLoop01.fs -
+    []
+    let ``ForLoop01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
-    // SOURCE=NoAllocationOfTuple01.fs SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoAllocationOfTuple01.dll" # NoAllocationOfTuple01.fs
-    []
-    let ``NoAllocationOfTuple01_fs_RealInternalSignatureOn`` compilation =
+    // SOURCE=ForLoop02.fs                 SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop02.exe"	# ForLoop02.fs
+    []
+    let ``ForLoop02_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
-    // SOURCE=ForEachOnArray01.fs      SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnArray01.dll"      # ForEachOnArray01.fs
-    []
-    let ``ForEachOnArray01_fs_RealInternalSignatureOff`` compilation =
+    // SOURCE=ForLoop03.fs                 SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForLoop03.exe"	# ForLoop03.fs
+    []
+    let ``ForLoop03_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
-    // SOURCE=ForEachOnArray01.fs      SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnArray01.dll"      # ForEachOnArray01.fs
-    []
-    let ``ForEachOnArray01_fs_RealInternalSignatureOn`` compilation =
+    // SOURCE=NoAllocationOfTuple01.fs SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoAllocationOfTuple01.dll" # NoAllocationOfTuple01.fs
+    []
+    let ``NoAllocationOfTuple01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
-    // SOURCE=ForEachOnList01.fs       SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnList01.dll"       # ForEachOnList01.fs
-    []
-    let ``ForEachOnList01_fs_RealInternalSignatureOff`` compilation =
+    // SOURCE=ForEachOnArray01.fs      SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnArray01.dll"      # ForEachOnArray01.fs
+    []
+    let ``ForEachOnArray01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachOnList01.fs       SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnList01.dll"       # ForEachOnList01.fs
-    []
-    let ``ForEachOnList01_fs_RealInternalSignatureOn`` compilation =
+    []
+    let ``ForEachOnList01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachOnString01.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnString01.dll"     # ForEachOnString01.fs
-    []
-    let ``ForEachOnString01_fs_RealInternalSignatureOff`` compilation =
+    []
+    let ``ForEachOnString01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachOnString01.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ForEachOnString01.dll"     # ForEachOnString01.fs
-    []
-    let ``ForEachOnString01_fs_RealInternalSignatureOn`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ZeroToArrLength01.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ZeroToArrLength01.dll"     # ZeroToArrLength01.fs
-    []
-    let ``ZeroToArrLength01_fs_RealInternalSignatureOff`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ZeroToArrLength01.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ZeroToArrLength01.dll"     # ZeroToArrLength01.fs
-    []
-    let ``ZeroToArrLength01_fs_RealInternalSignatureOn`` compilation =
+    []
+    let ``ZeroToArrLength01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ZeroToArrLength02.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ZeroToArrLength02.dll"     # ZeroToArrLength02.fs
-    []
-    let ``ZeroToArrLength02_fs_RealInternalSignatureOff`` compilation =
+    []
+    let ``ZeroToArrLength02_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ZeroToArrLength02.fs     SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ZeroToArrLength02.dll"     # ZeroToArrLength02.fs
-    []
-    let ``ZeroToArrLength02_fs_RealInternalSignatureOn`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NoIEnumerable01.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable01.dll"            # NoIEnumerable01.fsx
-    []
-    let ``NoIEnumerable01_fsx_RealInternalSignatureOff`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NoIEnumerable01.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable01.dll"            # NoIEnumerable01.fsx
-    []
-    let ``NoIEnumerable01_fsx_RealInternalSignatureOn`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NoIEnumerable02.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable02.dll"            # NoIEnumerable02.fsx
-    []
-    let ``NoIEnumerable02_fsx_RealInternalSignatureOff`` compilation =
+    []
+    let ``NoIEnumerable01_fsx`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NoIEnumerable02.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable02.dll"            # NoIEnumerable02.fsx
-    []
-    let ``NoIEnumerable02_fsx_RealInternalSignatureOn`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NoIEnumerable03.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable03.dll"            # NoIEnumerable03.fsx
-    []
-    let ``NoIEnumerable03_fsx_RealInternalSignatureOff`` compilation =
+    []
+    let ``NoIEnumerable02_fsx`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NoIEnumerable03.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd NoIEnumerable03.dll"            # NoIEnumerable03.fsx
-    []
-    let ``NoIEnumerable03_fsx_RealInternalSignatureOn`` compilation =
+    []
+    let ``NoIEnumerable03_fsx`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NonTrivialBranchingBindingInEnd01.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd01.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd01_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``NonTrivialBranchingBindingInEnd01_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd01.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd01.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd01_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd01.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd01.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd01_fs_RealInternalSignatureOff_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd01.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd01.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd01_fs_RealInternalSignatureOn_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NonTrivialBranchingBindingInEnd02.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd02.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd02_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd02.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd02.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd02_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd02.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd02.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd02_fs_RealInternalSignatureOff_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd02.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd02.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd02_fs_RealInternalSignatureOn_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd03.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd03.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd03_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``NonTrivialBranchingBindingInEnd02_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NonTrivialBranchingBindingInEnd03.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd03.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd03_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd03.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd03.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd03_fs_RealInternalSignatureOff_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd03.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd03.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd03_fs_RealInternalSignatureOn_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd04.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd04.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd04_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``NonTrivialBranchingBindingInEnd03_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NonTrivialBranchingBindingInEnd04.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd04.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd04_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``NonTrivialBranchingBindingInEnd04_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd04.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd04.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd04_fs_RealInternalSignatureOff_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd04.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd04.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd04_fs_RealInternalSignatureOn_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd05.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd05.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd05_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=NonTrivialBranchingBindingInEnd05.fs SCFLAGS="--optimize+"	# NonTrivialBranchingBindingInEnd05.fs --optimize+
-    []
-    let ``NonTrivialBranchingBindingInEnd05_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd05.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd05.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd05_fs_RealInternalSignatureOff_nonopt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=NonTrivialBranchingBindingInEnd05.fs SCFLAGS="--optimize-"	# NonTrivialBranchingBindingInEnd05.fs --optimize-
-    []
-    let ``NonTrivialBranchingBindingInEnd05_fs_RealInternalSignatureOn_nonopt`` compilation =
+    []
+    let ``NonTrivialBranchingBindingInEnd05_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepSByte.fs SCFLAGS="--optimize+"	# ForEachRangeStepSByte.fs --optimize+
-    []
-    let ``ForEachRangeStepSByte_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepSByte_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepSByte.fs SCFLAGS="--optimize+"	# ForEachRangeStepSByte.fs --optimize+
-    []
-    let ``ForEachRangeStepSByte_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepByte.fs SCFLAGS="--optimize+"	# ForEachRangeStepByte.fs --optimize+
-    []
-    let ``ForEachRangeStepByte_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepByte.fs SCFLAGS="--optimize+"	# ForEachRangeStepByte.fs --optimize+
-    []
-    let ``ForEachRangeStepByte_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStepByte_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepChar.fs SCFLAGS="--optimize+"	# ForEachRangeStepChar.fs --optimize+
-    []
-    let ``ForEachRangeStepChar_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepChar.fs SCFLAGS="--optimize+"	# ForEachRangeStepChar.fs --optimize+
-    []
-    let ``ForEachRangeStepChar_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepInt16.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt16.fs --optimize+
-    []
-    let ``ForEachRangeStepInt16_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepChar_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepInt16.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt16.fs --optimize+
-    []
-    let ``ForEachRangeStepInt16_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStepInt16_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepUInt16.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt16.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt16_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepUInt16_`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepUInt16.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt16.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt16_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepInt32.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt32.fs --optimize+
-    []
-    let ``ForEachRangeStepInt32_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepInt32.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt32.fs --optimize+
-    []
-    let ``ForEachRangeStepInt32_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStepInt32_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepUInt32.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt32.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt32_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepUInt32.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt32.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt32_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepInt64.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt64.fs --optimize+
-    []
-    let ``ForEachRangeStepInt64_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepUInt32_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepInt64.fs SCFLAGS="--optimize+"	# ForEachRangeStepInt64.fs --optimize+
-    []
-    let ``ForEachRangeStepInt64_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStepInt64_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepUInt64.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt64.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt64_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepUInt64_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepUInt64.fs SCFLAGS="--optimize+"	# ForEachRangeStepUInt64.fs --optimize+
-    []
-    let ``ForEachRangeStepUInt64_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepIntPtr.fs SCFLAGS="--optimize+"	# ForEachRangeStepIntPtr.fs --optimize+
-    []
-    let ``ForEachRangeStepIntPtr_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepIntPtr.fs SCFLAGS="--optimize+"	# ForEachRangeStepIntPtr.fs --optimize+
-    []
-    let ``ForEachRangeStepIntPtr_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStepIntPtr_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStepUIntPtr.fs SCFLAGS="--optimize+"	# ForEachRangeStepUIntPtr.fs --optimize+
-    []
-    let ``ForEachRangeStepUIntPtr_fs_RealInternalSignatureOff_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOff
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStepUIntPtr.fs SCFLAGS="--optimize+"	# ForEachRangeStepUIntPtr.fs --optimize+
-    []
-    let ``ForEachRangeStepUIntPtr_fs_RealInternalSignatureOn_opt`` compilation =
-        compilation
-        |> withRealInternalSignatureOn
-        |> verifyCompilation
-
-    // SOURCE=ForEachRangeStep_UnitsOfMeasure.fs SCFLAGS="--optimize+"	# ForEachRangeStep_UnitsOfMeasure.fs --optimize+
-    []
-    let ``ForEachRangeStep_UnitsOfMeasure_fs_RealInternalSignatureOff_opt`` compilation =
+    []
+    let ``ForEachRangeStepUIntPtr_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOff
+        |> getCompilation
         |> verifyCompilation
 
     // SOURCE=ForEachRangeStep_UnitsOfMeasure.fs SCFLAGS="--optimize+"	# ForEachRangeStep_UnitsOfMeasure.fs --optimize+
-    []
-    let ``ForEachRangeStep_UnitsOfMeasure_fs_RealInternalSignatureOn_opt`` compilation =
+    []
+    let ``ForEachRangeStep_UnitsOfMeasure_fs`` compilation =
         compilation
-        |> withRealInternalSignatureOn
+        |> getCompilation
         |> verifyCompilation
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs
new file mode 100644
index 00000000000..8d7d270e2c8
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs
@@ -0,0 +1,6 @@
+// #Regression #NoMono #NoMT #CodeGen #EmittedIL   
+// Regression test for TFS#712639
+// Incorrect span or overlapping debugging spans
+// The test will start failing once the bug is actually fixed
+for wi in [ 1 .. 3 ] do
+   printfn "%A" wi
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
new file mode 100644
index 00000000000..cf3ef015691
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
@@ -0,0 +1,115 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  4
+    .locals init (class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0,
+             valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_1,
+             uint64 V_2,
+             int32 V_3,
+             class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_4,
+             int32 V_5)
+    IL_0000:  ldc.i4.0
+    IL_0001:  conv.i8
+    IL_0002:  stloc.2
+    IL_0003:  ldc.i4.1
+    IL_0004:  stloc.3
+    IL_0005:  br.s       IL_0019
+
+    IL_0007:  ldloca.s   V_1
+    IL_0009:  ldloc.3
+    IL_000a:  call       instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0)
+    IL_000f:  nop
+    IL_0010:  ldloc.3
+    IL_0011:  ldc.i4.1
+    IL_0012:  add
+    IL_0013:  stloc.3
+    IL_0014:  ldloc.2
+    IL_0015:  ldc.i4.1
+    IL_0016:  conv.i8
+    IL_0017:  add
+    IL_0018:  stloc.2
+    IL_0019:  ldloc.2
+    IL_001a:  ldc.i4.3
+    IL_001b:  conv.i8
+    IL_001c:  blt.un.s   IL_0007
+
+    IL_001e:  ldloca.s   V_1
+    IL_0020:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close()
+    IL_0025:  stloc.0
+    IL_0026:  ldloc.0
+    IL_0027:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull()
+    IL_002c:  stloc.s    V_4
+    IL_002e:  br.s       IL_005a
+
+    IL_0030:  ldloc.0
+    IL_0031:  call       instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault()
+    IL_0036:  stloc.s    V_5
+    IL_0038:  ldstr      "%A"
+    IL_003d:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0042:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0047:  ldloc.s    V_5
+    IL_0049:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_004e:  pop
+    IL_004f:  ldloc.s    V_4
+    IL_0051:  stloc.0
+    IL_0052:  ldloc.0
+    IL_0053:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull()
+    IL_0058:  stloc.s    V_4
+    IL_005a:  ldloc.s    V_4
+    IL_005c:  brtrue.s   IL_0030
+
+    IL_005e:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
new file mode 100644
index 00000000000..5914c20eb17
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
@@ -0,0 +1,144 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.mresource public FSharpSignatureCompressedData.assembly
+{
+  
+  
+}
+.mresource public FSharpOptimizationCompressedData.assembly
+{
+  
+  
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .method private specialname rtspecialname static void  .cctor() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldc.i4.0
+    IL_0001:  stsfld     int32 ''.$assembly::init@
+    IL_0006:  ldsfld     int32 ''.$assembly::init@
+    IL_000b:  pop
+    IL_000c:  ret
+  } 
+
+  .method assembly specialname static void staticInitialization@() cil managed
+  {
+    
+    .maxstack  4
+    .locals init (class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0,
+             valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_1,
+             uint64 V_2,
+             int32 V_3,
+             class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_4,
+             int32 V_5)
+    IL_0000:  ldc.i4.0
+    IL_0001:  conv.i8
+    IL_0002:  stloc.2
+    IL_0003:  ldc.i4.1
+    IL_0004:  stloc.3
+    IL_0005:  br.s       IL_0019
+
+    IL_0007:  ldloca.s   V_1
+    IL_0009:  ldloc.3
+    IL_000a:  call       instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0)
+    IL_000f:  nop
+    IL_0010:  ldloc.3
+    IL_0011:  ldc.i4.1
+    IL_0012:  add
+    IL_0013:  stloc.3
+    IL_0014:  ldloc.2
+    IL_0015:  ldc.i4.1
+    IL_0016:  conv.i8
+    IL_0017:  add
+    IL_0018:  stloc.2
+    IL_0019:  ldloc.2
+    IL_001a:  ldc.i4.3
+    IL_001b:  conv.i8
+    IL_001c:  blt.un.s   IL_0007
+
+    IL_001e:  ldloca.s   V_1
+    IL_0020:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close()
+    IL_0025:  stloc.0
+    IL_0026:  ldloc.0
+    IL_0027:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull()
+    IL_002c:  stloc.s    V_4
+    IL_002e:  br.s       IL_005a
+
+    IL_0030:  ldloc.0
+    IL_0031:  call       instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault()
+    IL_0036:  stloc.s    V_5
+    IL_0038:  ldstr      "%A"
+    IL_003d:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0042:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0047:  ldloc.s    V_5
+    IL_0049:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_004e:  pop
+    IL_004f:  ldloc.s    V_4
+    IL_0051:  stloc.0
+    IL_0052:  ldloc.0
+    IL_0053:  call       instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull()
+    IL_0058:  stloc.s    V_4
+    IL_005a:  ldloc.s    V_4
+    IL_005c:  brtrue.s   IL_0030
+
+    IL_005e:  ret
+  } 
+
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  8
+    IL_0000:  call       void assembly::staticInitialization@()
+    IL_0005:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs
new file mode 100644
index 00000000000..04882e0ec2c
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs
@@ -0,0 +1,7 @@
+// #Regression #NoMono #NoMT #CodeGen #EmittedIL 
+// Regression test for TFS#712639
+// Incorrect span or overlapping debugging spans
+// The test will start failing once the bug is actually fixed
+for wi = 1 to 3 do
+    printfn "%A" wi
+ 
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
new file mode 100644
index 00000000000..9eabae75fe8
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
@@ -0,0 +1,90 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.mresource public FSharpSignatureCompressedData.assembly
+{
+  
+  
+}
+.mresource public FSharpOptimizationCompressedData.assembly
+{
+  
+  
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  5
+    .locals init (int32 V_0)
+    IL_0000:  ldc.i4.1
+    IL_0001:  stloc.0
+    IL_0002:  br.s       IL_001e
+
+    IL_0004:  ldstr      "%A"
+    IL_0009:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_000e:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0013:  ldloc.0
+    IL_0014:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_0019:  pop
+    IL_001a:  ldloc.0
+    IL_001b:  ldc.i4.1
+    IL_001c:  add
+    IL_001d:  stloc.0
+    IL_001e:  ldloc.0
+    IL_001f:  ldc.i4.1
+    IL_0020:  ldc.i4.3
+    IL_0021:  add
+    IL_0022:  blt.s      IL_0004
+
+    IL_0024:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
new file mode 100644
index 00000000000..652e223cd59
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
@@ -0,0 +1,109 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.mresource public FSharpSignatureCompressedData.assembly
+{
+  
+  
+}
+.mresource public FSharpOptimizationCompressedData.assembly
+{
+  
+  
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .method private specialname rtspecialname static void  .cctor() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldc.i4.0
+    IL_0001:  stsfld     int32 ''.$assembly::init@
+    IL_0006:  ldsfld     int32 ''.$assembly::init@
+    IL_000b:  pop
+    IL_000c:  ret
+  } 
+
+  .method assembly specialname static void staticInitialization@() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0)
+    IL_0000:  ldc.i4.1
+    IL_0001:  stloc.0
+    IL_0002:  br.s       IL_001e
+
+    IL_0004:  ldstr      "%A"
+    IL_0009:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_000e:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0013:  ldloc.0
+    IL_0014:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_0019:  pop
+    IL_001a:  ldloc.0
+    IL_001b:  ldc.i4.1
+    IL_001c:  add
+    IL_001d:  stloc.0
+    IL_001e:  ldloc.0
+    IL_001f:  ldc.i4.1
+    IL_0020:  ldc.i4.3
+    IL_0021:  add
+    IL_0022:  blt.s      IL_0004
+
+    IL_0024:  ret
+  } 
+
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  8
+    IL_0000:  call       void assembly::staticInitialization@()
+    IL_0005:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs
new file mode 100644
index 00000000000..9ce6ae8b25d
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs
@@ -0,0 +1,14 @@
+// #Regression #NoMono #NoMT #CodeGen #EmittedIL 
+// Regression test for FSharp1.0:4785
+// Title: Search the IEnumerator pattern first
+
+let ra = new ResizeArray(100)
+for i = 0 to 100 do ra.Add(i)
+
+
+let test1()  = 
+   let mutable z = 0
+   for i = 0 to 10000000 do
+     for x in ra do
+         z <- z + 1
+   printfn "z = %d" z
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.net472.bsl
new file mode 100644
index 00000000000..c2d8e84b8d7
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.net472.bsl
@@ -0,0 +1,173 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.mresource public FSharpSignatureCompressedData.assembly
+{
+  
+  
+}
+.mresource public FSharpOptimizationCompressedData.assembly
+{
+  
+  
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .method public specialname static class [runtime]System.Collections.Generic.List`1 get_ra() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     class [runtime]System.Collections.Generic.List`1 ''.$assembly::ra@5
+    IL_0005:  ret
+  } 
+
+  .method public static void  test1() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0,
+             int32 V_1,
+             class [runtime]System.Collections.Generic.List`1 V_2,
+             valuetype [runtime]System.Collections.Generic.List`1/Enumerator V_3,
+             int32 V_4)
+    IL_0000:  ldc.i4.0
+    IL_0001:  stloc.0
+    IL_0002:  ldc.i4.0
+    IL_0003:  stloc.1
+    IL_0004:  br.s       IL_003f
+
+    IL_0006:  call       class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_000b:  stloc.2
+    IL_000c:  ldloc.2
+    IL_000d:  callvirt   instance valuetype [runtime]System.Collections.Generic.List`1/Enumerator class [runtime]System.Collections.Generic.List`1::GetEnumerator()
+    IL_0012:  stloc.3
+    .try
+    {
+      IL_0013:  br.s       IL_0022
+
+      IL_0015:  ldloca.s   V_3
+      IL_0017:  call       instance !0 valuetype [runtime]System.Collections.Generic.List`1/Enumerator::get_Current()
+      IL_001c:  stloc.s    V_4
+      IL_001e:  ldloc.0
+      IL_001f:  ldc.i4.1
+      IL_0020:  add
+      IL_0021:  stloc.0
+      IL_0022:  ldloca.s   V_3
+      IL_0024:  call       instance bool valuetype [runtime]System.Collections.Generic.List`1/Enumerator::MoveNext()
+      IL_0029:  brtrue.s   IL_0015
+
+      IL_002b:  leave.s    IL_003b
+
+    }  
+    finally
+    {
+      IL_002d:  ldloca.s   V_3
+      IL_002f:  constrained. valuetype [runtime]System.Collections.Generic.List`1/Enumerator
+      IL_0035:  callvirt   instance void [runtime]System.IDisposable::Dispose()
+      IL_003a:  endfinally
+    }  
+    IL_003b:  ldloc.1
+    IL_003c:  ldc.i4.1
+    IL_003d:  add
+    IL_003e:  stloc.1
+    IL_003f:  ldloc.1
+    IL_0040:  ldc.i4.1
+    IL_0041:  ldc.i4     0x989680
+    IL_0046:  add
+    IL_0047:  blt.s      IL_0006
+
+    IL_0049:  ldstr      "z = %d"
+    IL_004e:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0053:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0058:  ldloc.0
+    IL_0059:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_005e:  pop
+    IL_005f:  ret
+  } 
+
+  .property class [runtime]System.Collections.Generic.List`1
+          ra()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+  } 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly class [runtime]System.Collections.Generic.List`1 ra@5
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  5
+    .locals init (class [runtime]System.Collections.Generic.List`1 V_0,
+             int32 V_1)
+    IL_0000:  ldc.i4.s   100
+    IL_0002:  newobj     instance void class [runtime]System.Collections.Generic.List`1::.ctor(int32)
+    IL_0007:  dup
+    IL_0008:  stsfld     class [runtime]System.Collections.Generic.List`1 ''.$assembly::ra@5
+    IL_000d:  stloc.0
+    IL_000e:  ldc.i4.0
+    IL_000f:  stloc.1
+    IL_0010:  br.s       IL_0021
+
+    IL_0012:  call       class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_0017:  ldloc.1
+    IL_0018:  callvirt   instance void class [runtime]System.Collections.Generic.List`1::Add(!0)
+    IL_001d:  ldloc.1
+    IL_001e:  ldc.i4.1
+    IL_001f:  add
+    IL_0020:  stloc.1
+    IL_0021:  ldloc.1
+    IL_0022:  ldc.i4.1
+    IL_0023:  ldc.i4.s   100
+    IL_0025:  add
+    IL_0026:  blt.s      IL_0012
+
+    IL_0028:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.bsl
new file mode 100644
index 00000000000..c23cb75c545
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOff.OptimizeOff.il.netcore.bsl
@@ -0,0 +1,167 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly extern System.Collections
+{
+  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         
+  .ver 9:0:0:0
+}
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .method public specialname static class [System.Collections]System.Collections.Generic.List`1 get_ra() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     class [System.Collections]System.Collections.Generic.List`1 ''.$assembly::ra@5
+    IL_0005:  ret
+  } 
+
+  .method public static void  test1() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0,
+             int32 V_1,
+             class [System.Collections]System.Collections.Generic.List`1 V_2,
+             valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator V_3,
+             int32 V_4)
+    IL_0000:  ldc.i4.0
+    IL_0001:  stloc.0
+    IL_0002:  ldc.i4.0
+    IL_0003:  stloc.1
+    IL_0004:  br.s       IL_003f
+
+    IL_0006:  call       class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_000b:  stloc.2
+    IL_000c:  ldloc.2
+    IL_000d:  callvirt   instance valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator class [System.Collections]System.Collections.Generic.List`1::GetEnumerator()
+    IL_0012:  stloc.3
+    .try
+    {
+      IL_0013:  br.s       IL_0022
+
+      IL_0015:  ldloca.s   V_3
+      IL_0017:  call       instance !0 valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator::get_Current()
+      IL_001c:  stloc.s    V_4
+      IL_001e:  ldloc.0
+      IL_001f:  ldc.i4.1
+      IL_0020:  add
+      IL_0021:  stloc.0
+      IL_0022:  ldloca.s   V_3
+      IL_0024:  call       instance bool valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator::MoveNext()
+      IL_0029:  brtrue.s   IL_0015
+
+      IL_002b:  leave.s    IL_003b
+
+    }  
+    finally
+    {
+      IL_002d:  ldloca.s   V_3
+      IL_002f:  constrained. valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator
+      IL_0035:  callvirt   instance void [runtime]System.IDisposable::Dispose()
+      IL_003a:  endfinally
+    }  
+    IL_003b:  ldloc.1
+    IL_003c:  ldc.i4.1
+    IL_003d:  add
+    IL_003e:  stloc.1
+    IL_003f:  ldloc.1
+    IL_0040:  ldc.i4.1
+    IL_0041:  ldc.i4     0x989680
+    IL_0046:  add
+    IL_0047:  blt.s      IL_0006
+
+    IL_0049:  ldstr      "z = %d"
+    IL_004e:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0053:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0058:  ldloc.0
+    IL_0059:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_005e:  pop
+    IL_005f:  ret
+  } 
+
+  .property class [System.Collections]System.Collections.Generic.List`1
+          ra()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+  } 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly class [System.Collections]System.Collections.Generic.List`1 ra@5
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  5
+    .locals init (class [System.Collections]System.Collections.Generic.List`1 V_0,
+             int32 V_1)
+    IL_0000:  ldc.i4.s   100
+    IL_0002:  newobj     instance void class [System.Collections]System.Collections.Generic.List`1::.ctor(int32)
+    IL_0007:  dup
+    IL_0008:  stsfld     class [System.Collections]System.Collections.Generic.List`1 ''.$assembly::ra@5
+    IL_000d:  stloc.0
+    IL_000e:  ldc.i4.0
+    IL_000f:  stloc.1
+    IL_0010:  br.s       IL_0021
+
+    IL_0012:  call       class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_0017:  ldloc.1
+    IL_0018:  callvirt   instance void class [System.Collections]System.Collections.Generic.List`1::Add(!0)
+    IL_001d:  ldloc.1
+    IL_001e:  ldc.i4.1
+    IL_001f:  add
+    IL_0020:  stloc.1
+    IL_0021:  ldloc.1
+    IL_0022:  ldc.i4.1
+    IL_0023:  ldc.i4.s   100
+    IL_0025:  add
+    IL_0026:  blt.s      IL_0012
+
+    IL_0028:  ret
+  } 
+
+} 
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.net472.bsl
new file mode 100644
index 00000000000..771e4efe186
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.net472.bsl
@@ -0,0 +1,189 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.mresource public FSharpSignatureCompressedData.assembly
+{
+  
+  
+}
+.mresource public FSharpOptimizationCompressedData.assembly
+{
+  
+  
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .field static assembly class [runtime]System.Collections.Generic.List`1 ra@5
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .method public specialname static class [runtime]System.Collections.Generic.List`1 get_ra() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     class [runtime]System.Collections.Generic.List`1 assembly::ra@5
+    IL_0005:  ret
+  } 
+
+  .method public static void  test1() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0,
+             int32 V_1,
+             class [runtime]System.Collections.Generic.List`1 V_2,
+             valuetype [runtime]System.Collections.Generic.List`1/Enumerator V_3,
+             int32 V_4)
+    IL_0000:  ldc.i4.0
+    IL_0001:  stloc.0
+    IL_0002:  ldc.i4.0
+    IL_0003:  stloc.1
+    IL_0004:  br.s       IL_003f
+
+    IL_0006:  call       class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_000b:  stloc.2
+    IL_000c:  ldloc.2
+    IL_000d:  callvirt   instance valuetype [runtime]System.Collections.Generic.List`1/Enumerator class [runtime]System.Collections.Generic.List`1::GetEnumerator()
+    IL_0012:  stloc.3
+    .try
+    {
+      IL_0013:  br.s       IL_0022
+
+      IL_0015:  ldloca.s   V_3
+      IL_0017:  call       instance !0 valuetype [runtime]System.Collections.Generic.List`1/Enumerator::get_Current()
+      IL_001c:  stloc.s    V_4
+      IL_001e:  ldloc.0
+      IL_001f:  ldc.i4.1
+      IL_0020:  add
+      IL_0021:  stloc.0
+      IL_0022:  ldloca.s   V_3
+      IL_0024:  call       instance bool valuetype [runtime]System.Collections.Generic.List`1/Enumerator::MoveNext()
+      IL_0029:  brtrue.s   IL_0015
+
+      IL_002b:  leave.s    IL_003b
+
+    }  
+    finally
+    {
+      IL_002d:  ldloca.s   V_3
+      IL_002f:  constrained. valuetype [runtime]System.Collections.Generic.List`1/Enumerator
+      IL_0035:  callvirt   instance void [runtime]System.IDisposable::Dispose()
+      IL_003a:  endfinally
+    }  
+    IL_003b:  ldloc.1
+    IL_003c:  ldc.i4.1
+    IL_003d:  add
+    IL_003e:  stloc.1
+    IL_003f:  ldloc.1
+    IL_0040:  ldc.i4.1
+    IL_0041:  ldc.i4     0x989680
+    IL_0046:  add
+    IL_0047:  blt.s      IL_0006
+
+    IL_0049:  ldstr      "z = %d"
+    IL_004e:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0053:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0058:  ldloc.0
+    IL_0059:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_005e:  pop
+    IL_005f:  ret
+  } 
+
+  .method private specialname rtspecialname static void  .cctor() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldc.i4.0
+    IL_0001:  stsfld     int32 ''.$assembly::init@
+    IL_0006:  ldsfld     int32 ''.$assembly::init@
+    IL_000b:  pop
+    IL_000c:  ret
+  } 
+
+  .method assembly specialname static void staticInitialization@() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0)
+    IL_0000:  ldc.i4.s   100
+    IL_0002:  newobj     instance void class [runtime]System.Collections.Generic.List`1::.ctor(int32)
+    IL_0007:  stsfld     class [runtime]System.Collections.Generic.List`1 assembly::ra@5
+    IL_000c:  ldc.i4.0
+    IL_000d:  stloc.0
+    IL_000e:  br.s       IL_001f
+
+    IL_0010:  call       class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_0015:  ldloc.0
+    IL_0016:  callvirt   instance void class [runtime]System.Collections.Generic.List`1::Add(!0)
+    IL_001b:  ldloc.0
+    IL_001c:  ldc.i4.1
+    IL_001d:  add
+    IL_001e:  stloc.0
+    IL_001f:  ldloc.0
+    IL_0020:  ldc.i4.1
+    IL_0021:  ldc.i4.s   100
+    IL_0023:  add
+    IL_0024:  blt.s      IL_0010
+
+    IL_0026:  ret
+  } 
+
+  .property class [runtime]System.Collections.Generic.List`1
+          ra()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get class [runtime]System.Collections.Generic.List`1 assembly::get_ra()
+  } 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  8
+    IL_0000:  call       void assembly::staticInitialization@()
+    IL_0005:  ret
+  } 
+
+} 
+
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.bsl
new file mode 100644
index 00000000000..0efd6c82922
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/ForLoop03.fs.RealInternalSignatureOn.OptimizeOff.il.netcore.bsl
@@ -0,0 +1,183 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly extern System.Collections
+{
+  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         
+  .ver 9:0:0:0
+}
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .field static assembly class [System.Collections]System.Collections.Generic.List`1 ra@5
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .method public specialname static class [System.Collections]System.Collections.Generic.List`1 get_ra() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     class [System.Collections]System.Collections.Generic.List`1 assembly::ra@5
+    IL_0005:  ret
+  } 
+
+  .method public static void  test1() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0,
+             int32 V_1,
+             class [System.Collections]System.Collections.Generic.List`1 V_2,
+             valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator V_3,
+             int32 V_4)
+    IL_0000:  ldc.i4.0
+    IL_0001:  stloc.0
+    IL_0002:  ldc.i4.0
+    IL_0003:  stloc.1
+    IL_0004:  br.s       IL_003f
+
+    IL_0006:  call       class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_000b:  stloc.2
+    IL_000c:  ldloc.2
+    IL_000d:  callvirt   instance valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator class [System.Collections]System.Collections.Generic.List`1::GetEnumerator()
+    IL_0012:  stloc.3
+    .try
+    {
+      IL_0013:  br.s       IL_0022
+
+      IL_0015:  ldloca.s   V_3
+      IL_0017:  call       instance !0 valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator::get_Current()
+      IL_001c:  stloc.s    V_4
+      IL_001e:  ldloc.0
+      IL_001f:  ldc.i4.1
+      IL_0020:  add
+      IL_0021:  stloc.0
+      IL_0022:  ldloca.s   V_3
+      IL_0024:  call       instance bool valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator::MoveNext()
+      IL_0029:  brtrue.s   IL_0015
+
+      IL_002b:  leave.s    IL_003b
+
+    }  
+    finally
+    {
+      IL_002d:  ldloca.s   V_3
+      IL_002f:  constrained. valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator
+      IL_0035:  callvirt   instance void [runtime]System.IDisposable::Dispose()
+      IL_003a:  endfinally
+    }  
+    IL_003b:  ldloc.1
+    IL_003c:  ldc.i4.1
+    IL_003d:  add
+    IL_003e:  stloc.1
+    IL_003f:  ldloc.1
+    IL_0040:  ldc.i4.1
+    IL_0041:  ldc.i4     0x989680
+    IL_0046:  add
+    IL_0047:  blt.s      IL_0006
+
+    IL_0049:  ldstr      "z = %d"
+    IL_004e:  newobj     instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [runtime]System.IO.TextWriter,class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit,int32>::.ctor(string)
+    IL_0053:  call       !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4)
+    IL_0058:  ldloc.0
+    IL_0059:  callvirt   instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0)
+    IL_005e:  pop
+    IL_005f:  ret
+  } 
+
+  .method private specialname rtspecialname static void  .cctor() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldc.i4.0
+    IL_0001:  stsfld     int32 ''.$assembly::init@
+    IL_0006:  ldsfld     int32 ''.$assembly::init@
+    IL_000b:  pop
+    IL_000c:  ret
+  } 
+
+  .method assembly specialname static void staticInitialization@() cil managed
+  {
+    
+    .maxstack  5
+    .locals init (int32 V_0)
+    IL_0000:  ldc.i4.s   100
+    IL_0002:  newobj     instance void class [System.Collections]System.Collections.Generic.List`1::.ctor(int32)
+    IL_0007:  stsfld     class [System.Collections]System.Collections.Generic.List`1 assembly::ra@5
+    IL_000c:  ldc.i4.0
+    IL_000d:  stloc.0
+    IL_000e:  br.s       IL_001f
+
+    IL_0010:  call       class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+    IL_0015:  ldloc.0
+    IL_0016:  callvirt   instance void class [System.Collections]System.Collections.Generic.List`1::Add(!0)
+    IL_001b:  ldloc.0
+    IL_001c:  ldc.i4.1
+    IL_001d:  add
+    IL_001e:  stloc.0
+    IL_001f:  ldloc.0
+    IL_0020:  ldc.i4.1
+    IL_0021:  ldc.i4.s   100
+    IL_0023:  add
+    IL_0024:  blt.s      IL_0010
+
+    IL_0026:  ret
+  } 
+
+  .property class [System.Collections]System.Collections.Generic.List`1
+          ra()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get class [System.Collections]System.Collections.Generic.List`1 assembly::get_ra()
+  } 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  8
+    IL_0000:  call       void assembly::staticInitialization@()
+    IL_0005:  ret
+  } 
+
+} 
+
+
+
+
+
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoAllocationOfTuple01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable01.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable02.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NoIEnumerable03.fsx.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
similarity index 61%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
index 7e035bf8d61..0689c964faf 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.opt.il.bsl
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOff.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
 
@@ -87,84 +77,93 @@
     .entrypoint
     
     .maxstack  7
-    .locals init (int32 V_0,
-             int32 V_1,
+    .locals init (int32[] V_0,
+             int32[] V_1,
              int32 V_2,
-             int32 V_3)
+             int32 V_3,
+             int32 V_4,
+             int32 V_5,
+             int32 V_6)
     IL_0000:  ldc.i4.8
     IL_0001:  ldc.i4.1
     IL_0002:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
                                                                                                     !!0)
-    IL_0007:  stsfld     int32[] ''.$assembly::r@6
-    IL_000c:  ldc.i4.5
-    IL_000d:  ldc.i4.2
-    IL_000e:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
+    IL_0007:  dup
+    IL_0008:  stsfld     int32[] ''.$assembly::r@6
+    IL_000d:  stloc.0
+    IL_000e:  ldc.i4.5
+    IL_000f:  ldc.i4.2
+    IL_0010:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
                                                                                                     !!0)
-    IL_0013:  stsfld     int32[] ''.$assembly::w@7
-    IL_0018:  ldc.i4.0
-    IL_0019:  stloc.1
-    IL_001a:  call       int32[] assembly::get_r()
-    IL_001f:  ldlen
-    IL_0020:  conv.i4
-    IL_0021:  stloc.2
-    IL_0022:  call       int32[] assembly::get_w()
-    IL_0027:  ldlen
-    IL_0028:  conv.i4
-    IL_0029:  stloc.3
-    IL_002a:  ldloc.2
-    IL_002b:  ldloc.3
-    IL_002c:  bge.s      IL_0032
-
-    IL_002e:  ldloc.2
-    IL_002f:  nop
-    IL_0030:  br.s       IL_0034
-
-    IL_0032:  ldloc.3
-    IL_0033:  nop
-    IL_0034:  ldc.i4.1
-    IL_0035:  sub
-    IL_0036:  stloc.0
-    IL_0037:  ldloc.0
-    IL_0038:  ldloc.1
-    IL_0039:  blt.s      IL_0067
-
-    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_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_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_0015:  dup
+    IL_0016:  stsfld     int32[] ''.$assembly::w@7
+    IL_001b:  stloc.1
+    IL_001c:  ldc.i4.0
+    IL_001d:  stloc.3
+    IL_001e:  call       int32[] assembly::get_r()
+    IL_0023:  ldlen
+    IL_0024:  conv.i4
+    IL_0025:  stloc.s    V_4
+    IL_0027:  call       int32[] assembly::get_w()
+    IL_002c:  ldlen
+    IL_002d:  conv.i4
+    IL_002e:  stloc.s    V_5
+    IL_0030:  ldloc.s    V_4
+    IL_0032:  ldloc.s    V_5
+    IL_0034:  bge.s      IL_003b
+
+    IL_0036:  ldloc.s    V_4
+    IL_0038:  nop
+    IL_0039:  br.s       IL_003e
+
+    IL_003b:  ldloc.s    V_5
+    IL_003d:  nop
+    IL_003e:  ldc.i4.1
+    IL_003f:  sub
+    IL_0040:  stloc.2
+    IL_0041:  ldloc.2
+    IL_0042:  ldloc.3
+    IL_0043:  blt.s      IL_0071
+
+    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_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_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
   } 
 
 } 
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
similarity index 95%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
index fd8662b1ca5..813692fac56 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.opt.il.bsl
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOff.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
 
@@ -81,7 +71,8 @@
     .locals init (int32 V_0,
              int32 V_1,
              int32 V_2,
-             int32 V_3)
+             int32 V_3,
+             int32 V_4)
     IL_0000:  ldc.i4.8
     IL_0001:  ldc.i4.1
     IL_0002:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
@@ -153,9 +144,11 @@
 
     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_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
   } 
 
   .property int32[] r()
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd01.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
similarity index 60%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
index 91f26499736..b86ee2d4a2c 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.opt.il.bsl
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOff.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
 
@@ -87,82 +77,93 @@
     .entrypoint
     
     .maxstack  7
-    .locals init (int32 V_0,
-             int32 V_1)
+    .locals init (int32[] V_0,
+             int32[] V_1,
+             int32 V_2,
+             int32 V_3,
+             int32 V_4,
+             int32 V_5,
+             int32 V_6)
     IL_0000:  ldc.i4.8
     IL_0001:  ldc.i4.1
     IL_0002:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
                                                                                                     !!0)
-    IL_0007:  stsfld     int32[] ''.$assembly::r@6
-    IL_000c:  ldc.i4.5
-    IL_000d:  ldc.i4.2
-    IL_000e:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
+    IL_0007:  dup
+    IL_0008:  stsfld     int32[] ''.$assembly::r@6
+    IL_000d:  stloc.0
+    IL_000e:  ldc.i4.5
+    IL_000f:  ldc.i4.2
+    IL_0010:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
                                                                                                     !!0)
-    IL_0013:  stsfld     int32[] ''.$assembly::w@7
-    IL_0018:  call       int32[] assembly::get_r()
-    IL_001d:  ldlen
-    IL_001e:  conv.i4
-    IL_001f:  stloc.0
-    IL_0020:  call       int32[] assembly::get_w()
-    IL_0025:  ldlen
-    IL_0026:  conv.i4
-    IL_0027:  stloc.1
-    IL_0028:  ldloc.0
-    IL_0029:  ldloc.1
-    IL_002a:  bge.s      IL_0030
-
-    IL_002c:  ldloc.0
-    IL_002d:  nop
-    IL_002e:  br.s       IL_0032
-
-    IL_0030:  ldloc.1
-    IL_0031:  nop
-    IL_0032:  ldc.i4.1
-    IL_0033:  sub
-    IL_0034:  stloc.1
-    IL_0035:  ldc.i4.0
-    IL_0036:  stloc.0
-    IL_0037:  ldloc.0
-    IL_0038:  ldloc.1
-    IL_0039:  bgt.s      IL_0067
-
-    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_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_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_0015:  dup
+    IL_0016:  stsfld     int32[] ''.$assembly::w@7
+    IL_001b:  stloc.1
+    IL_001c:  call       int32[] assembly::get_r()
+    IL_0021:  ldlen
+    IL_0022:  conv.i4
+    IL_0023:  stloc.s    V_4
+    IL_0025:  call       int32[] assembly::get_w()
+    IL_002a:  ldlen
+    IL_002b:  conv.i4
+    IL_002c:  stloc.s    V_5
+    IL_002e:  ldloc.s    V_4
+    IL_0030:  ldloc.s    V_5
+    IL_0032:  bge.s      IL_0039
+
+    IL_0034:  ldloc.s    V_4
+    IL_0036:  nop
+    IL_0037:  br.s       IL_003c
+
+    IL_0039:  ldloc.s    V_5
+    IL_003b:  nop
+    IL_003c:  ldc.i4.1
+    IL_003d:  sub
+    IL_003e:  stloc.3
+    IL_003f:  ldc.i4.0
+    IL_0040:  stloc.2
+    IL_0041:  ldloc.2
+    IL_0042:  ldloc.3
+    IL_0043:  bgt.s      IL_0071
+
+    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_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_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
   } 
 
 } 
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOff.OptimizeOn.il.bsl
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.opt.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
similarity index 93%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.opt.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.il.bsl
index f89292af139..860527ca19e 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.opt.il.bsl
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOff.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
 
@@ -79,7 +69,10 @@
     
     .maxstack  7
     .locals init (int32 V_0,
-             int32 V_1)
+             int32 V_1,
+             int32 V_2,
+             int32 V_3,
+             int32 V_4)
     IL_0000:  ldc.i4.8
     IL_0001:  ldc.i4.1
     IL_0002:  call       !!0[] [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Create(int32,
@@ -93,20 +86,20 @@
     IL_0018:  call       int32[] assembly::get_r()
     IL_001d:  ldlen
     IL_001e:  conv.i4
-    IL_001f:  stloc.0
+    IL_001f:  stloc.2
     IL_0020:  call       int32[] assembly::get_w()
     IL_0025:  ldlen
     IL_0026:  conv.i4
-    IL_0027:  stloc.1
-    IL_0028:  ldloc.0
-    IL_0029:  ldloc.1
+    IL_0027:  stloc.3
+    IL_0028:  ldloc.2
+    IL_0029:  ldloc.3
     IL_002a:  bge.s      IL_0030
 
-    IL_002c:  ldloc.0
+    IL_002c:  ldloc.2
     IL_002d:  nop
     IL_002e:  br.s       IL_0032
 
-    IL_0030:  ldloc.1
+    IL_0030:  ldloc.3
     IL_0031:  nop
     IL_0032:  ldc.i4.1
     IL_0033:  sub
@@ -151,9 +144,11 @@
 
     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_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
   } 
 
   .property int32[] r()
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.il.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
similarity index 100%
rename from tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.il.bsl
rename to tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd02.fs.RealInternalSignatureOn.OptimizeOn.il.bsl
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
new file mode 100644
index 00000000000..1c526104b4f
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/ForLoop/NonTrivialBranchingBindingInEnd03.fs.RealInternalSignatureOff.OptimizeOff.il.bsl
@@ -0,0 +1,226 @@
+
+
+
+
+
+.assembly extern runtime { }
+.assembly extern FSharp.Core { }
+.assembly assembly
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32,
+                                                                                                      int32,
+                                                                                                      int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) 
+
+  
+  
+
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module assembly.exe
+
+.imagebase {value}
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       
+.corflags 0x00000001    
+
+
+
+
+
+.class public abstract auto ansi sealed assembly
+       extends [runtime]System.Object
+{
+  .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) 
+  .method public specialname static int32[] get_r() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     int32[] ''.$assembly::r@6
+    IL_0005:  ret
+  } 
+
+  .method public specialname static int32[] get_w() cil managed
+  {
+    
+    .maxstack  8
+    IL_0000:  ldsfld     int32[] ''.$assembly::w@7
+    IL_0005:  ret
+  } 
+
+  .property int32[] r()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get int32[] assembly::get_r()
+  } 
+  .property int32[] w()
+  {
+    .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) 
+    .get int32[] assembly::get_w()
+  } 
+} 
+
+.class private abstract auto ansi sealed ''.$assembly
+       extends [runtime]System.Object
+{
+  .field static assembly int32[] r@6
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .field static assembly int32[] w@7
+  .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) 
+  .field static assembly int32 init@
+  .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 static void  main@() cil managed
+  {
+    .entrypoint
+    
+    .maxstack  7
+    .locals init (int32[] V_0,
+             int32[] V_1,
+             class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1