Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions src/Compiler/Driver/OptimizeInputs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -510,15 +510,14 @@ let ApplyAllOptimizations
let phases = phases.ToArray()

let results, optEnvFirstLoop =
match tcConfig.optSettings.processingMode with
// Parallel optimization breaks determinism - turn it off in deterministic builds.
| Optimizer.OptimizationProcessingMode.Parallel when (not tcConfig.deterministic) ->
if tcConfig.deterministic then
optimizeFilesSequentially optEnv phases implFiles
else
let results, optEnvFirstPhase =
ParallelOptimization.optimizeFilesInParallel optEnv phases implFiles

results |> Array.toList, optEnvFirstPhase
| Optimizer.OptimizationProcessingMode.Parallel
| Optimizer.OptimizationProcessingMode.Sequential -> optimizeFilesSequentially optEnv phases implFiles

#if DEBUG
if tcConfig.showOptimizationData then
Expand Down Expand Up @@ -578,7 +577,7 @@ let GenerateIlxCode
isInteractive = tcConfig.isInteractive
isInteractiveItExpr = isInteractiveItExpr
alwaysCallVirt = tcConfig.alwaysCallVirt
parallelIlxGenEnabled = tcConfig.parallelIlxGen && not tcConfig.deterministic
parallelIlxGenEnabled = not tcConfig.deterministic
}

ilxGenerator.GenerateCode(ilxGenOpts, optimizedImpls, topAttrs.assemblyAttrs, topAttrs.netModuleAttrs)
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,18 @@
IL_002f: ret
}

.method public static int32 TestFunction6() cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call int32 assembly::f@10(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: ldnull
IL_0007: call int32 assembly::f@10(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000c: add
IL_000d: ret
}

.method assembly static int32 f@10(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar0) cil managed
{

Expand All @@ -85,18 +97,6 @@
IL_0020: ret
}

.method public static int32 TestFunction6() cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call int32 assembly::f@10(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: ldnull
IL_0007: call int32 assembly::f@10(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000c: add
IL_000d: ret
}

}

.class private abstract auto ansi sealed '<StartupCode$assembly>'.$assembly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,23 @@

}

.method public static class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit> f<a>(!!a x) cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: nop
IL_0007: ldnull
IL_0008: ldnull
IL_0009: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000e: nop
IL_000f: ldnull
IL_0010: newobj instance void class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit>::.ctor(!0,
!1)
IL_0015: ret
}

.method assembly static void g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar0) cil managed
{

Expand All @@ -110,23 +127,6 @@
IL_002e: ret
}

.method public static class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit> f<a>(!!a x) cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: nop
IL_0007: ldnull
IL_0008: ldnull
IL_0009: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000e: nop
IL_000f: ldnull
IL_0010: newobj instance void class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit>::.ctor(!0,
!1)
IL_0015: ret
}

}

.class private abstract auto ansi sealed '<StartupCode$assembly>'.$assembly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,23 @@

}

.method public static class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit> f<a>(!!a x) cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: nop
IL_0007: ldnull
IL_0008: ldnull
IL_0009: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000e: nop
IL_000f: ldnull
IL_0010: newobj instance void class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit>::.ctor(!0,
!1)
IL_0015: ret
}

.method assembly static void g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar0) cil managed
{

Expand All @@ -111,23 +128,6 @@
IL_002e: ret
}

.method public static class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit> f<a>(!!a x) cil managed
{

.maxstack 8
IL_0000: ldnull
IL_0001: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_0006: nop
IL_0007: ldnull
IL_0008: ldnull
IL_0009: call void assembly::g@12(class [FSharp.Core]Microsoft.FSharp.Core.Unit)
IL_000e: nop
IL_000f: ldnull
IL_0010: newobj instance void class [runtime]System.Tuple`2<class [FSharp.Core]Microsoft.FSharp.Core.Unit,class [FSharp.Core]Microsoft.FSharp.Core.Unit>::.ctor(!0,
!1)
IL_0015: ret
}

}

.class private abstract auto ansi sealed '<StartupCode$assembly>'.$assembly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,76 @@
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 auto ansi serializable sealed nested assembly beforefieldinit matchResult@38
extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>
{
.field static assembly initonly class assembly/matchResult@38 @_instance
.method assembly specialname rtspecialname instance void .ctor() cil managed
{
.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 )

.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>::.ctor()
IL_0006: ret
}

.method public strict virtual instance bool Invoke(int32 n) cil managed
{

.maxstack 8
IL_0000: ldarg.1
IL_0001: call bool assembly::condition(int32)
IL_0006: ret
}

.method private specialname rtspecialname static void .cctor() cil managed
{

.maxstack 10
IL_0000: newobj instance void assembly/matchResult@38::.ctor()
IL_0005: stsfld class assembly/matchResult@38 assembly/matchResult@38::@_instance
IL_000a: ret
}

}

.class auto ansi serializable sealed nested assembly beforefieldinit functionResult@43
extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>
{
.field static assembly initonly class assembly/functionResult@43 @_instance
.method assembly specialname rtspecialname instance void .ctor() cil managed
{
.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 )

.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>::.ctor()
IL_0006: ret
}

.method public strict virtual instance bool Invoke(int32 n) cil managed
{

.maxstack 8
IL_0000: ldarg.1
IL_0001: call bool assembly::condition(int32)
IL_0006: ret
}

.method private specialname rtspecialname static void .cctor() cil managed
{

.maxstack 10
IL_0000: newobj instance void assembly/functionResult@43::.ctor()
IL_0005: stsfld class assembly/functionResult@43 assembly/functionResult@43::@_instance
IL_000a: ret
}

}

.class auto ansi serializable sealed nested assembly beforefieldinit f@8
extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1<int32>,class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1<int32>>
{
Expand Down Expand Up @@ -163,76 +233,6 @@

}

.class auto ansi serializable sealed nested assembly beforefieldinit matchResult@38
extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>
{
.field static assembly initonly class assembly/matchResult@38 @_instance
.method assembly specialname rtspecialname instance void .ctor() cil managed
{
.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 )

.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>::.ctor()
IL_0006: ret
}

.method public strict virtual instance bool Invoke(int32 n) cil managed
{

.maxstack 8
IL_0000: ldarg.1
IL_0001: call bool assembly::condition(int32)
IL_0006: ret
}

.method private specialname rtspecialname static void .cctor() cil managed
{

.maxstack 10
IL_0000: newobj instance void assembly/matchResult@38::.ctor()
IL_0005: stsfld class assembly/matchResult@38 assembly/matchResult@38::@_instance
IL_000a: ret
}

}

.class auto ansi serializable sealed nested assembly beforefieldinit functionResult@43
extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>
{
.field static assembly initonly class assembly/functionResult@43 @_instance
.method assembly specialname rtspecialname instance void .ctor() cil managed
{
.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 )

.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2<int32,bool>::.ctor()
IL_0006: ret
}

.method public strict virtual instance bool Invoke(int32 n) cil managed
{

.maxstack 8
IL_0000: ldarg.1
IL_0001: call bool assembly::condition(int32)
IL_0006: ret
}

.method private specialname rtspecialname static void .cctor() cil managed
{

.maxstack 10
IL_0000: newobj instance void assembly/functionResult@43::.ctor()
IL_0005: stsfld class assembly/functionResult@43 assembly/functionResult@43::@_instance
IL_000a: ret
}

}

.method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1<int32> get_list() cil managed
{

Expand Down
Loading
Loading