diff --git a/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md index 7282b2d0b5..47bdef37a7 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md +++ b/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md @@ -6,5 +6,6 @@ ### Changed * Change compiler default setting realsig+ when building assemblies ([Issue #17384](https://github.com/dotnet/fsharp/issues/17384), [PR #17378](https://github.com/dotnet/fsharp/pull/17385)) * Change compiler default setting for compressedMetadata ([Issue #17379](https://github.com/dotnet/fsharp/issues/17379), [PR #17383](https://github.com/dotnet/fsharp/pull/17383)) +* Enabled by default GraphBasedChecking, ParallelOptimization and ParallelIlxGen optimizations. [PR #17400](https://github.com/dotnet/fsharp/pull/17400) ### Breaking Changes diff --git a/src/Compiler/Driver/CompilerConfig.fs b/src/Compiler/Driver/CompilerConfig.fs index ba16b85429..8cf368d72e 100644 --- a/src/Compiler/Driver/CompilerConfig.fs +++ b/src/Compiler/Driver/CompilerConfig.fs @@ -524,6 +524,8 @@ type TcConfigBuilder = mutable emitTailcalls: bool mutable deterministic: bool mutable concurrentBuild: bool + mutable graphBasedChecking: bool + mutable parallelOptimization: bool mutable parallelIlxGen: bool mutable emitMetadataAssembly: MetadataAssemblyGeneration mutable preferredUiLang: string option @@ -768,7 +770,9 @@ type TcConfigBuilder = emitTailcalls = true deterministic = false concurrentBuild = true - parallelIlxGen = FSharpExperimentalFeaturesEnabledAutomatically + graphBasedChecking = true + parallelOptimization = true + parallelIlxGen = true emitMetadataAssembly = MetadataAssemblyGeneration.None preferredUiLang = None lcid = None @@ -814,11 +818,7 @@ type TcConfigBuilder = captureIdentifiersWhenParsing = false typeCheckingConfig = { - TypeCheckingConfig.Mode = - if FSharpExperimentalFeaturesEnabledAutomatically then - TypeCheckingMode.Graph - else - TypeCheckingMode.Sequential + TypeCheckingConfig.Mode = TypeCheckingMode.Graph DumpGraph = false } dumpSignatureData = false @@ -1329,6 +1329,8 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member _.emitTailcalls = data.emitTailcalls member _.deterministic = data.deterministic member _.concurrentBuild = data.concurrentBuild + member _.graphBasedChecking = data.graphBasedChecking + member _.parallelOptimization = data.parallelOptimization member _.parallelIlxGen = data.parallelIlxGen member _.emitMetadataAssembly = data.emitMetadataAssembly member _.pathMap = data.pathMap diff --git a/src/Compiler/Driver/CompilerConfig.fsi b/src/Compiler/Driver/CompilerConfig.fsi index 89e0039610..5a53a472d7 100644 --- a/src/Compiler/Driver/CompilerConfig.fsi +++ b/src/Compiler/Driver/CompilerConfig.fsi @@ -432,6 +432,10 @@ type TcConfigBuilder = mutable concurrentBuild: bool + mutable graphBasedChecking: bool + + mutable parallelOptimization: bool + mutable parallelIlxGen: bool mutable emitMetadataAssembly: MetadataAssemblyGeneration @@ -764,6 +768,10 @@ type TcConfig = member concurrentBuild: bool + member graphBasedChecking: bool + + member parallelOptimization: bool + member parallelIlxGen: bool member emitMetadataAssembly: MetadataAssemblyGeneration diff --git a/src/Compiler/Driver/CompilerOptions.fs b/src/Compiler/Driver/CompilerOptions.fs index e742a20e13..844f0730a6 100644 --- a/src/Compiler/Driver/CompilerOptions.fs +++ b/src/Compiler/Driver/CompilerOptions.fs @@ -571,6 +571,15 @@ let SetDeterministicSwitch (tcConfigB: TcConfigBuilder) switch = let SetRealsig (tcConfigB: TcConfigBuilder) switch = tcConfigB.realsig <- (switch = OptionSwitch.On) +let SetGraphTypeCheck (tcConfigB: TcConfigBuilder) switch = + tcConfigB.graphBasedChecking <- (switch = OptionSwitch.On) + +let SetParallelOptimization (tcConfigB: TcConfigBuilder) switch = + tcConfigB.parallelOptimization <- (switch = OptionSwitch.On) + +let SetParallelIlxGen (tcConfigB: TcConfigBuilder) switch = + tcConfigB.parallelIlxGen <- (switch = OptionSwitch.On) + let SetReferenceAssemblyOnlySwitch (tcConfigB: TcConfigBuilder) switch = match tcConfigB.emitMetadataAssembly with | MetadataAssemblyGeneration.None when (not tcConfigB.standalone) && tcConfigB.extraStaticLinkRoots.IsEmpty -> @@ -1048,6 +1057,29 @@ let codeGenerationFlags isFsi (tcConfigB: TcConfigBuilder) = None, Some(FSComp.SR.optsReflectionFree ()) ) + + CompilerOption( + "graphbasedchecking", + tagNone, + OptionSwitch(SetGraphTypeCheck tcConfigB), + None, + Some(FSComp.SR.optsGraphBasedChecking ()) + ) + + CompilerOption( + "paralleloptimization", + tagNone, + OptionSwitch(SetParallelOptimization tcConfigB), + None, + Some(FSComp.SR.optsParallelOptimization ()) + ) + CompilerOption( + "parallelilxgen", + tagNone, + OptionSwitch(SetParallelIlxGen tcConfigB), + None, + Some(FSComp.SR.optsParallelILXGen ()) + ) ] if isFsi then debug @ codegen else debug @ embed @ codegen diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index 55484591ab..02a3d84b0c 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -933,6 +933,9 @@ optsEmitDebugInfoInQuotations,"Emit debug information in quotations" optsPreferredUiLang,"Specify the preferred output language culture name (e.g. es-ES, ja-JP)" optsNoCopyFsharpCore,"Don't copy FSharp.Core.dll along the produced binaries" optsSignatureData,"Include F# interface information, the default is file. Essential for distributing libraries." +optsGraphBasedChecking,"Use graph-based checking for type inference" +optsParallelOptimization,"Enable parallel optimization." +optsParallelILXGen,"Enable parallel ILXGen." 1046,optsUnknownSignatureData,"Invalid value '%s' for --interfacedata, valid value are: none, file, compress." optsOptimizationData,"Specify included optimization information, the default is file. Important for distributed libraries." 1047,optsUnknownOptimizationData,"Invalid value '%s' for --optimizationdata, valid value are: none, file, compress." diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 6ff88000aa..e8093723fc 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -847,6 +847,11 @@ Zobrazí povolené hodnoty pro jazykovou verzi. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Neplatné použití generování referenčního sestavení, nepoužívejte --standalone ani --staticlink s --refonly nebo --refout. @@ -862,6 +867,16 @@ Zadejte zahrnuté informace o optimalizaci, výchozí hodnota je soubor. Důležité pro distribuované knihovny. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Název výstupního souboru pdb se nemůže shodovat s výstupním názvem souboru sestavení pomocí --pdb:filename.pdb. diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 7eedd1621e..540fe7a015 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -847,6 +847,11 @@ Anzeigen der zulässigen Werte für die Sprachversion. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Ungültige Verwendung der Ausgabe einer Referenzassembly. Verwenden Sie nicht „--standalone“ oder „--staticlink“ mit „--refonly“ oder „--refout“. @@ -862,6 +867,16 @@ Geben Sie die enthaltenen Optimierungsinformationen an, der Standardwert ist „file“. Wichtig für verteilte Bibliotheken. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Der Name der PDB-Ausgabedatei kann nicht mit dem Ausgabedateinamen für den Build übereinstimmen, verwenden Sie --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index fa499f1cd4..055d07c02b 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -847,6 +847,11 @@ Muestra los valores permitidos para la versión del lenguaje. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Uso no válido de emisión de un ensamblado de referencia, no use '--standalone or --staticlink' con '--refonly or --refout'. @@ -862,6 +867,16 @@ Especifique la información de optimización incluida, el valor predeterminado es el archivo. Importante para las bibliotecas distribuidas. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb El nombre del archivo de salida pdb no puede coincidir con el nombre de archivo de salida de compilación. Use --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index 7ad21f1b38..14c82a3a87 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -847,6 +847,11 @@ Affichez les valeurs autorisées pour la version du langage. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Utilisation non valide de l’émission d’un assembly de référence, n’utilisez pas '--standalone ou --staticlink' avec '--refonly ou --refout'. @@ -862,6 +867,16 @@ Spécifiez les informations d’optimisation incluses, la valeur par défaut est le fichier. Important pour les bibliothèques distribuées. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Le nom du fichier de sortie pdb ne peut pas correspondre au nom de fichier de sortie de build utilisé --pdb:filename.pdb. diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 80c600dcfb..f163113608 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -847,6 +847,11 @@ Visualizzare i valori consentiti per la versione della lingua. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Utilizzo non valido della creazione di un assembly di riferimento. Non usare insieme '--standalone o --staticlink' con '--refonly o --refout'.. @@ -862,6 +867,16 @@ Specificare le informazioni di ottimizzazione incluse. Il valore predefinito è file. Important per le librerie distribuite. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Il nome del file di output pdb non può corrispondere all’uso del nome file di output della compilazione --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index 94043ae19d..a3c922c8dd 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -847,6 +847,11 @@ 言語バージョンで許可されている値を表示します。 + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 参照アセンブリの出力の使用が無効です。'--standalone または --staticlink' を '--relabelly または --refout' と共に使用しないでください。 @@ -862,6 +867,16 @@ 含まれる最適化情報を指定します。既定値は file です。分散ライブラリの場合は重要です。 + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb PDB 出力ファイル名がビルド出力ファイル名と一致しません - --pdb:filename.pdb を使用してください diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index d55738f005..58aaded77e 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -847,6 +847,11 @@ 언어 버전에 허용되는 값을 표시합니다. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 참조 어셈블리 내보내기를 잘못 사용했습니다. '--refonly 또는 --refout'과 함께 '--standalone 또는 --staticlink'를 사용하지 마세요. @@ -862,6 +867,16 @@ 포함된 최적화 정보를 지정합니다. 기본값은 파일입니다. 분산 라이브러리에 중요합니다. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 출력 파일 이름은 빌드 출력 파일 이름 사용 --pdb:filename.pdb와 일치할 수 없습니다. diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index b054772bc4..cbd60e5426 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -847,6 +847,11 @@ Wyświetl dozwolone wartości dla wersji językowej. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Nieprawidłowe użycie emitowania zestawu odwołania. Nie używaj elementu „--standalone ani --staticlink” z elementem „--refonly lub --refout”. @@ -862,6 +867,16 @@ Określ dołączone informacje o optymalizacji. Wartość domyślna to plik. Ważne dla bibliotek rozproszonych. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Nazwa pliku wyjściowego pdb nie może być zgodna z nazwą pliku wyjściowego kompilacji, użyj parametru --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index ea7eabd09e..2a5e199c9e 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -847,6 +847,11 @@ Exiba os valores permitidos para a versão do idioma. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Uso inválido da emissão de um assembly de referência, não use '--standalone ou --staticlink' com '--refonly ou --refout'. @@ -862,6 +867,16 @@ Especifique as informações de otimização incluídas, o padrão é o file. Importante para bibliotecas distribuídas. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb O nome do arquivo de saída pdb não pode corresponder ao nome do arquivo de saída do build. Use --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 74b19581d7..0c3df79004 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -847,6 +847,11 @@ Отображение допустимых значений для версии языка. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Недопустимое использование при создании базовой сборки. Не используйте "--standalone or --staticlink" с "--refonly or --refout". @@ -862,6 +867,16 @@ Укажите включенные сведения об оптимизации, по умолчанию это файл. Необходимо для распределенных библиотек. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Имя выходного файла pdb не может совпадать с именем выходного файла сборки. Используйте --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 7bb1622d4a..fbae300a27 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -847,6 +847,11 @@ Dil sürümü için izin verilen değerleri görüntüleyin. + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Başvuru bütünleştirilmiş kodu oluşturmanın geçersiz kullanımı; '--standalone’ veya ‘--staticlink' seçeneğini '--refonly’ veya ‘--refout' ile birlikte kullanmayın. @@ -862,6 +867,16 @@ Dahil edilen iyileştirme bilgilerini belirtin; varsayılan değer dosyadır. Dağıtılmış kitaplıklar için önemlidir. + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb çıkış dosyası adı, derleme çıkış dosya adı kullanımı --pdb:filename.pdb ile eşleşmiyor diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 07d149b0f6..a9bb134a91 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -847,6 +847,11 @@ 显示语言版本的允许值。 + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 发出引用程序集的使用无效,请勿将 '--standalone 或 --staticlink' 与 '--refonly 或 --refout' 一起使用。 @@ -862,6 +867,16 @@ 指定包含的优化信息,默认值为文件。对于分发库非常重要。 + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 输出文件名不能与生成输出文件名 use --pdb: filename.pdb 匹配 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index 3e5b8d167a..8daac864d6 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -847,6 +847,11 @@ 顯示語言版本的允許值。 + + Use graph-based checking for type inference + Use graph-based checking for type inference + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 發出參考組件的使用無效,請勿同時使用 '--standalone 或 '--refonly' 和 '--refout'。 @@ -862,6 +867,16 @@ 指定包含的最佳化資訊,預設值為檔案。對於分散式文件庫很重要。 + + Enable parallel ILXGen. + Enable parallel ILXGen. + + + + Enable parallel optimization. + Enable parallel optimization. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 輸出檔案名與使用 --pdb:filename.pdb 的建置輸出檔案名不相符 diff --git a/src/FSharp.Build/Fsc.fs b/src/FSharp.Build/Fsc.fs index 6682208c0a..6fbe78c838 100644 --- a/src/FSharp.Build/Fsc.fs +++ b/src/FSharp.Build/Fsc.fs @@ -69,6 +69,9 @@ type public Fsc() as this = let mutable targetProfile: string MaybeNull = null let mutable targetType: string MaybeNull = null let mutable toolExe: string = "fsc.exe" + let mutable graphBasedChecking: bool = true + let mutable parallelOptimization: bool = true + let mutable parallelIlxGen: bool = true let defaultToolPath = let locationOfThisDll = @@ -358,6 +361,24 @@ type public Fsc() as this = if refOnly then builder.AppendSwitch("--refonly") + // graphbasedchecking + if graphBasedChecking then + builder.AppendSwitch("--graphbasedchecking+") + else + builder.AppendSwitch("--graphbasedchecking-") + + // paralleloptimization + if parallelOptimization then + builder.AppendSwitch("--paralleloptimization+") + else + builder.AppendSwitch("--paralleloptimization-") + + // parallelilxgen + if parallelIlxGen then + builder.AppendSwitch("--parallelilxgen+") + else + builder.AppendSwitch("--parallelilxgen-") + builder // --baseaddress @@ -661,6 +682,21 @@ type public Fsc() as this = with get () = List.toArray commandLineArgs and set (p) = commandLineArgs <- (List.ofArray p) + // --graphbasedchecking[+-] + member _.GraphBasedChecking + with get () = graphBasedChecking + and set (b) = graphBasedChecking <- b + + // --paralleloptimization[+-] + member _.ParallelOptimization + with get () = parallelOptimization + and set (b) = parallelOptimization <- b + + // --parallelilxgen[+-] + member _.ParallelIlxGen + with get () = parallelIlxGen + and set (b) = parallelIlxGen <- b + // ToolTask methods override _.ToolName = "fsc.exe" diff --git a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl index 8e20779911..7623c82b26 100644 --- a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl +++ b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl @@ -63,6 +63,9 @@ Copyright (c) Microsoft Corporation. All Rights Reserved. --pathmap: Maps physical paths to source path names output by the compiler --crossoptimize[+|-] Enable or disable cross-module optimizations --reflectionfree Disable implicit generation of constructs using reflection +--graphbasedchecking[+|-] Use graph-based checking for type inference +--paralleloptimization[+|-] Enable parallel optimization. +--parallelilxgen[+|-] Enable parallel ILXGen. - ERRORS AND WARNINGS - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl index b5b5eadeba..af9fc85a1d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -1107,6 +1099,42 @@ } } + .method public static int32 select1(class Match01/Test1 x) cil managed + { + + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance int32 Match01/Test1::get_Tag() + IL_0007: switch ( + IL_001c, + IL_0028, + IL_002a, + IL_002c) + IL_001c: ldarg.0 + IL_001d: castclass Match01/Test1/X11 + IL_0022: ldfld int32 Match01/Test1/X11::item + IL_0027: ret + + IL_0028: ldc.i4.2 + IL_0029: ret + + IL_002a: ldc.i4.3 + IL_002b: ret + + IL_002c: ldc.i4.4 + IL_002d: ret + } + + .method public static int32 fm(class Match01/Test1 y) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call int32 Match01::select1(class Match01/Test1) + IL_0006: ret + } + .method assembly static int32 CompareTo$cont@4(class Match01/Test1 this, class Match01/Test1 obj, class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed @@ -1376,42 +1404,6 @@ IL_00fc: ret } - .method public static int32 select1(class Match01/Test1 x) cil managed - { - - .maxstack 8 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call instance int32 Match01/Test1::get_Tag() - IL_0007: switch ( - IL_001c, - IL_0028, - IL_002a, - IL_002c) - IL_001c: ldarg.0 - IL_001d: castclass Match01/Test1/X11 - IL_0022: ldfld int32 Match01/Test1/X11::item - IL_0027: ret - - IL_0028: ldc.i4.2 - IL_0029: ret - - IL_002a: ldc.i4.3 - IL_002b: ret - - IL_002c: ldc.i4.4 - IL_002d: ret - } - - .method public static int32 fm(class Match01/Test1 y) cil managed - { - - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call int32 Match01::select1(class Match01/Test1) - IL_0006: ret - } - } .class private abstract auto ansi sealed ''.$Match01 @@ -1431,4 +1423,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl index 32456c5443..bfb35df04d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -173,95 +165,77 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.0 - IL_0001: brfalse IL_007d + IL_0001: brfalse.s IL_0063 - IL_0006: ldarg.1 - IL_0007: brfalse.s IL_007b - - IL_0009: ldarg.0 - IL_000a: pop - IL_000b: ldarg.0 - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0014: stloc.3 - IL_0015: ldloc.0 - IL_0016: ldfld int32 assembly/U::item1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.1 - IL_001e: ldfld int32 assembly/U::item1 - IL_0023: stloc.s V_5 - IL_0025: ldloc.3 - IL_0026: stloc.s V_6 + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0061 + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0011: stloc.3 + IL_0012: ldloc.0 + IL_0013: ldfld int32 assembly/U::item1 + IL_0018: stloc.s V_4 + IL_001a: ldloc.1 + IL_001b: ldfld int32 assembly/U::item1 + IL_0020: stloc.s V_5 + IL_0022: ldloc.s V_4 + IL_0024: ldloc.s V_5 + IL_0026: cgt IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: stloc.s V_8 - IL_0030: ldloc.s V_7 - IL_0032: ldloc.s V_8 - IL_0034: cgt - IL_0036: ldloc.s V_7 - IL_0038: ldloc.s V_8 - IL_003a: clt - IL_003c: sub - IL_003d: stloc.2 - IL_003e: ldloc.2 - IL_003f: ldc.i4.0 - IL_0040: bge.s IL_0044 - - IL_0042: ldloc.2 - IL_0043: ret - - IL_0044: ldloc.2 - IL_0045: ldc.i4.0 - IL_0046: ble.s IL_004a - - IL_0048: ldloc.2 - IL_0049: ret - - IL_004a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004f: stloc.s V_9 - IL_0051: ldloc.0 - IL_0052: ldfld int32 assembly/U::item2 - IL_0057: stloc.s V_10 - IL_0059: ldloc.1 - IL_005a: ldfld int32 assembly/U::item2 - IL_005f: stloc.s V_11 - IL_0061: ldloc.s V_9 - IL_0063: stloc.s V_12 - IL_0065: ldloc.s V_10 - IL_0067: stloc.s V_13 - IL_0069: ldloc.s V_11 - IL_006b: stloc.s V_14 - IL_006d: ldloc.s V_13 - IL_006f: ldloc.s V_14 - IL_0071: cgt - IL_0073: ldloc.s V_13 - IL_0075: ldloc.s V_14 - IL_0077: clt - IL_0079: sub - IL_007a: ret - - IL_007b: ldc.i4.1 - IL_007c: ret - - IL_007d: ldarg.1 - IL_007e: brfalse.s IL_0082 - - IL_0080: ldc.i4.m1 - IL_0081: ret - - IL_0082: ldc.i4.0 - IL_0083: ret + IL_002a: ldloc.s V_5 + IL_002c: clt + IL_002e: sub + IL_002f: stloc.2 + IL_0030: ldloc.2 + IL_0031: ldc.i4.0 + IL_0032: bge.s IL_0036 + + IL_0034: ldloc.2 + IL_0035: ret + + IL_0036: ldloc.2 + IL_0037: ldc.i4.0 + IL_0038: ble.s IL_003c + + IL_003a: ldloc.2 + IL_003b: ret + + IL_003c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0041: stloc.s V_6 + IL_0043: ldloc.0 + IL_0044: ldfld int32 assembly/U::item2 + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/U::item2 + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: brfalse.s IL_0068 + + IL_0066: ldc.i4.m1 + IL_0067: ret + + IL_0068: ldc.i4.0 + IL_0069: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -292,22 +266,16 @@ int32 V_6, class [runtime]System.Collections.IComparer V_7, int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12, - class [runtime]System.Collections.IComparer V_13, - int32 V_14, - int32 V_15) + int32 V_9) IL_0000: ldarg.1 IL_0001: unbox.any assembly/U IL_0006: stloc.0 IL_0007: ldarg.0 - IL_0008: brfalse.s IL_0080 + IL_0008: brfalse.s IL_0068 IL_000a: ldarg.1 IL_000b: unbox.any assembly/U - IL_0010: brfalse.s IL_007e + IL_0010: brfalse.s IL_0066 IL_0012: ldarg.0 IL_0013: pop @@ -323,69 +291,57 @@ IL_0023: ldloc.2 IL_0024: ldfld int32 assembly/U::item1 IL_0029: stloc.s V_6 - IL_002b: ldloc.s V_4 - IL_002d: stloc.s V_7 - IL_002f: ldloc.s V_5 - IL_0031: stloc.s V_8 + IL_002b: ldloc.s V_5 + IL_002d: ldloc.s V_6 + IL_002f: cgt + IL_0031: ldloc.s V_5 IL_0033: ldloc.s V_6 - IL_0035: stloc.s V_9 - IL_0037: ldloc.s V_8 - IL_0039: ldloc.s V_9 - IL_003b: cgt - IL_003d: ldloc.s V_8 - IL_003f: ldloc.s V_9 - IL_0041: clt - IL_0043: sub - IL_0044: stloc.3 - IL_0045: ldloc.3 - IL_0046: ldc.i4.0 - IL_0047: bge.s IL_004b - - IL_0049: ldloc.3 - IL_004a: ret - - IL_004b: ldloc.3 - IL_004c: ldc.i4.0 - IL_004d: ble.s IL_0051 - - IL_004f: ldloc.3 - IL_0050: ret - - IL_0051: ldarg.2 - IL_0052: stloc.s V_10 - IL_0054: ldloc.1 - IL_0055: ldfld int32 assembly/U::item2 - IL_005a: stloc.s V_11 - IL_005c: ldloc.2 - IL_005d: ldfld int32 assembly/U::item2 - IL_0062: stloc.s V_12 - IL_0064: ldloc.s V_10 - IL_0066: stloc.s V_13 - IL_0068: ldloc.s V_11 - IL_006a: stloc.s V_14 - IL_006c: ldloc.s V_12 - IL_006e: stloc.s V_15 - IL_0070: ldloc.s V_14 - IL_0072: ldloc.s V_15 - IL_0074: cgt - IL_0076: ldloc.s V_14 - IL_0078: ldloc.s V_15 - IL_007a: clt - IL_007c: sub - IL_007d: ret - - IL_007e: ldc.i4.1 - IL_007f: ret - - IL_0080: ldarg.1 - IL_0081: unbox.any assembly/U - IL_0086: brfalse.s IL_008a - - IL_0088: ldc.i4.m1 - IL_0089: ret - - IL_008a: ldc.i4.0 - IL_008b: ret + IL_0035: clt + IL_0037: sub + IL_0038: stloc.3 + IL_0039: ldloc.3 + IL_003a: ldc.i4.0 + IL_003b: bge.s IL_003f + + IL_003d: ldloc.3 + IL_003e: ret + + IL_003f: ldloc.3 + IL_0040: ldc.i4.0 + IL_0041: ble.s IL_0045 + + IL_0043: ldloc.3 + IL_0044: ret + + IL_0045: ldarg.2 + IL_0046: stloc.s V_7 + IL_0048: ldloc.1 + IL_0049: ldfld int32 assembly/U::item2 + IL_004e: stloc.s V_8 + IL_0050: ldloc.2 + IL_0051: ldfld int32 assembly/U::item2 + IL_0056: stloc.s V_9 + IL_0058: ldloc.s V_8 + IL_005a: ldloc.s V_9 + IL_005c: cgt + IL_005e: ldloc.s V_8 + IL_0060: ldloc.s V_9 + IL_0062: clt + IL_0064: sub + IL_0065: ret + + IL_0066: ldc.i4.1 + IL_0067: ret + + IL_0068: ldarg.1 + IL_0069: unbox.any assembly/U + IL_006e: brfalse.s IL_0072 + + IL_0070: ldc.i4.m1 + IL_0071: ret + + IL_0072: ldc.i4.0 + IL_0073: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -396,13 +352,9 @@ .locals init (int32 V_0, class assembly/U V_1, class [runtime]System.Collections.IEqualityComparer V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0049 + IL_0001: brfalse.s IL_003b IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -417,44 +369,36 @@ IL_0011: stloc.2 IL_0012: ldloc.1 IL_0013: ldfld int32 assembly/U::item2 - IL_0018: stloc.3 - IL_0019: ldloc.2 - IL_001a: stloc.s V_4 - IL_001c: ldloc.3 - IL_001d: ldloc.0 - IL_001e: ldc.i4.6 - IL_001f: shl - IL_0020: ldloc.0 - IL_0021: ldc.i4.2 - IL_0022: shr - IL_0023: add - IL_0024: add - IL_0025: add - IL_0026: stloc.0 - IL_0027: ldc.i4 0x9e3779b9 - IL_002c: ldarg.1 - IL_002d: stloc.s V_5 - IL_002f: ldloc.1 - IL_0030: ldfld int32 assembly/U::item1 - IL_0035: stloc.s V_6 - IL_0037: ldloc.s V_5 - IL_0039: stloc.s V_7 - IL_003b: ldloc.s V_6 - IL_003d: ldloc.0 - IL_003e: ldc.i4.6 - IL_003f: shl - IL_0040: ldloc.0 - IL_0041: ldc.i4.2 - IL_0042: shr - IL_0043: add - IL_0044: add - IL_0045: add - IL_0046: stloc.0 - IL_0047: ldloc.0 - IL_0048: ret - - IL_0049: ldc.i4.0 - IL_004a: ret + IL_0018: ldloc.0 + IL_0019: ldc.i4.6 + IL_001a: shl + IL_001b: ldloc.0 + IL_001c: ldc.i4.2 + IL_001d: shr + IL_001e: add + IL_001f: add + IL_0020: add + IL_0021: stloc.0 + IL_0022: ldc.i4 0x9e3779b9 + IL_0027: ldarg.1 + IL_0028: stloc.3 + IL_0029: ldloc.1 + IL_002a: ldfld int32 assembly/U::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr + IL_0035: add + IL_0036: add + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -479,18 +423,12 @@ class assembly/U V_1, class assembly/U V_2, class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6, - class [runtime]System.Collections.IEqualityComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IEqualityComparer V_10) + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004d + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_004b + IL_0004: brfalse.s IL_0034 IL_0006: ldarg.1 IL_0007: stloc.0 @@ -504,44 +442,32 @@ IL_000f: stloc.3 IL_0010: ldloc.1 IL_0011: ldfld int32 assembly/U::item1 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_4 - IL_0025: ldloc.s V_5 - IL_0027: ceq - IL_0029: brfalse.s IL_0049 - - IL_002b: ldarg.2 - IL_002c: stloc.s V_7 - IL_002e: ldloc.1 - IL_002f: ldfld int32 assembly/U::item2 - IL_0034: stloc.s V_8 - IL_0036: ldloc.2 - IL_0037: ldfld int32 assembly/U::item2 - IL_003c: stloc.s V_9 - IL_003e: ldloc.s V_7 - IL_0040: stloc.s V_10 - IL_0042: ldloc.s V_8 - IL_0044: ldloc.s V_9 - IL_0046: ceq - IL_0048: ret - - IL_0049: ldc.i4.0 - IL_004a: ret - - IL_004b: ldc.i4.0 - IL_004c: ret - - IL_004d: ldarg.1 - IL_004e: ldnull - IL_004f: cgt.un - IL_0051: ldc.i4.0 - IL_0052: ceq - IL_0054: ret + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: ldc.i4.0 + IL_003b: ceq + IL_003d: ret } .method public hidebysig virtual final @@ -699,4 +625,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl index a65cea31c6..32a7a8142d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -124,18 +116,12 @@ int32 V_3, class [runtime]System.Collections.IComparer V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12) + int32 V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0070 + IL_0001: brfalse.s IL_0057 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_006e + IL_0004: brfalse.s IL_0055 IL_0006: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() IL_000b: stloc.1 @@ -145,68 +131,56 @@ IL_0013: ldarg.1 IL_0014: ldfld int32 assembly/R::x@ IL_0019: stloc.3 - IL_001a: ldloc.1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.2 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_5 - IL_0025: ldloc.s V_6 - IL_0027: cgt - IL_0029: ldloc.s V_5 - IL_002b: ldloc.s V_6 - IL_002d: clt - IL_002f: sub - IL_0030: stloc.0 - IL_0031: ldloc.0 - IL_0032: ldc.i4.0 - IL_0033: bge.s IL_0037 - - IL_0035: ldloc.0 - IL_0036: ret + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: cgt + IL_001e: ldloc.2 + IL_001f: ldloc.3 + IL_0020: clt + IL_0022: sub + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: bge.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret - IL_0037: ldloc.0 - IL_0038: ldc.i4.0 - IL_0039: ble.s IL_003d - - IL_003b: ldloc.0 - IL_003c: ret - - IL_003d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0042: stloc.s V_7 - IL_0044: ldarg.0 - IL_0045: ldfld int32 assembly/R::y@ - IL_004a: stloc.s V_8 - IL_004c: ldarg.1 - IL_004d: ldfld int32 assembly/R::y@ - IL_0052: stloc.s V_9 - IL_0054: ldloc.s V_7 - IL_0056: stloc.s V_10 - IL_0058: ldloc.s V_8 - IL_005a: stloc.s V_11 - IL_005c: ldloc.s V_9 - IL_005e: stloc.s V_12 - IL_0060: ldloc.s V_11 - IL_0062: ldloc.s V_12 - IL_0064: cgt - IL_0066: ldloc.s V_11 - IL_0068: ldloc.s V_12 - IL_006a: clt - IL_006c: sub - IL_006d: ret - - IL_006e: ldc.i4.1 - IL_006f: ret - - IL_0070: ldarg.1 - IL_0071: brfalse.s IL_0075 - - IL_0073: ldc.i4.m1 - IL_0074: ret - - IL_0075: ldc.i4.0 - IL_0076: ret + IL_002a: ldloc.0 + IL_002b: ldc.i4.0 + IL_002c: ble.s IL_0030 + + IL_002e: ldloc.0 + IL_002f: ret + + IL_0030: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0035: stloc.s V_4 + IL_0037: ldarg.0 + IL_0038: ldfld int32 assembly/R::y@ + IL_003d: stloc.s V_5 + IL_003f: ldarg.1 + IL_0040: ldfld int32 assembly/R::y@ + IL_0045: stloc.s V_6 + IL_0047: ldloc.s V_5 + IL_0049: ldloc.s V_6 + IL_004b: cgt + IL_004d: ldloc.s V_5 + IL_004f: ldloc.s V_6 + IL_0051: clt + IL_0053: sub + IL_0054: ret + + IL_0055: ldc.i4.1 + IL_0056: ret + + IL_0057: ldarg.1 + IL_0058: brfalse.s IL_005c + + IL_005a: ldc.i4.m1 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -236,24 +210,18 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.1 IL_0001: unbox.any assembly/R IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 IL_0009: ldarg.0 - IL_000a: brfalse.s IL_007a + IL_000a: brfalse.s IL_0063 IL_000c: ldarg.1 IL_000d: unbox.any assembly/R - IL_0012: brfalse.s IL_0078 + IL_0012: brfalse.s IL_0061 IL_0014: ldarg.2 IL_0015: stloc.3 @@ -263,69 +231,57 @@ IL_001e: ldloc.1 IL_001f: ldfld int32 assembly/R::x@ IL_0024: stloc.s V_5 - IL_0026: ldloc.3 - IL_0027: stloc.s V_6 - IL_0029: ldloc.s V_4 - IL_002b: stloc.s V_7 - IL_002d: ldloc.s V_5 - IL_002f: stloc.s V_8 - IL_0031: ldloc.s V_7 - IL_0033: ldloc.s V_8 - IL_0035: cgt - IL_0037: ldloc.s V_7 - IL_0039: ldloc.s V_8 - IL_003b: clt - IL_003d: sub - IL_003e: stloc.2 - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: bge.s IL_0045 - - IL_0043: ldloc.2 - IL_0044: ret - - IL_0045: ldloc.2 - IL_0046: ldc.i4.0 - IL_0047: ble.s IL_004b - - IL_0049: ldloc.2 - IL_004a: ret - - IL_004b: ldarg.2 - IL_004c: stloc.s V_9 - IL_004e: ldarg.0 - IL_004f: ldfld int32 assembly/R::y@ - IL_0054: stloc.s V_10 - IL_0056: ldloc.1 - IL_0057: ldfld int32 assembly/R::y@ - IL_005c: stloc.s V_11 - IL_005e: ldloc.s V_9 - IL_0060: stloc.s V_12 - IL_0062: ldloc.s V_10 - IL_0064: stloc.s V_13 - IL_0066: ldloc.s V_11 - IL_0068: stloc.s V_14 - IL_006a: ldloc.s V_13 - IL_006c: ldloc.s V_14 - IL_006e: cgt - IL_0070: ldloc.s V_13 - IL_0072: ldloc.s V_14 - IL_0074: clt - IL_0076: sub - IL_0077: ret - - IL_0078: ldc.i4.1 - IL_0079: ret - - IL_007a: ldarg.1 - IL_007b: unbox.any assembly/R - IL_0080: brfalse.s IL_0084 - - IL_0082: ldc.i4.m1 - IL_0083: ret - - IL_0084: ldc.i4.0 - IL_0085: ret + IL_0026: ldloc.s V_4 + IL_0028: ldloc.s V_5 + IL_002a: cgt + IL_002c: ldloc.s V_4 + IL_002e: ldloc.s V_5 + IL_0030: clt + IL_0032: sub + IL_0033: stloc.2 + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a + + IL_0038: ldloc.2 + IL_0039: ret + + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 + + IL_003e: ldloc.2 + IL_003f: ret + + IL_0040: ldarg.2 + IL_0041: stloc.s V_6 + IL_0043: ldarg.0 + IL_0044: ldfld int32 assembly/R::y@ + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/R::y@ + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: unbox.any assembly/R + IL_0069: brfalse.s IL_006d + + IL_006b: ldc.i4.m1 + IL_006c: ret + + IL_006d: ldc.i4.0 + IL_006e: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -335,13 +291,9 @@ .maxstack 7 .locals init (int32 V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0042 + IL_0001: brfalse.s IL_0035 IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -350,44 +302,36 @@ IL_000b: stloc.1 IL_000c: ldarg.0 IL_000d: ldfld int32 assembly/R::y@ - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldloc.2 - IL_0016: ldloc.0 - IL_0017: ldc.i4.6 - IL_0018: shl - IL_0019: ldloc.0 - IL_001a: ldc.i4.2 - IL_001b: shr - IL_001c: add - IL_001d: add - IL_001e: add - IL_001f: stloc.0 - IL_0020: ldc.i4 0x9e3779b9 - IL_0025: ldarg.1 - IL_0026: stloc.s V_4 - IL_0028: ldarg.0 - IL_0029: ldfld int32 assembly/R::x@ - IL_002e: stloc.s V_5 - IL_0030: ldloc.s V_4 - IL_0032: stloc.s V_6 - IL_0034: ldloc.s V_5 - IL_0036: ldloc.0 - IL_0037: ldc.i4.6 - IL_0038: shl - IL_0039: ldloc.0 - IL_003a: ldc.i4.2 - IL_003b: shr - IL_003c: add - IL_003d: add - IL_003e: add - IL_003f: stloc.0 - IL_0040: ldloc.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0012: ldloc.0 + IL_0013: ldc.i4.6 + IL_0014: shl + IL_0015: ldloc.0 + IL_0016: ldc.i4.2 + IL_0017: shr + IL_0018: add + IL_0019: add + IL_001a: add + IL_001b: stloc.0 + IL_001c: ldc.i4 0x9e3779b9 + IL_0021: ldarg.1 + IL_0022: stloc.2 + IL_0023: ldarg.0 + IL_0024: ldfld int32 assembly/R::x@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr + IL_002f: add + IL_0030: add + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret + + IL_0035: ldc.i4.0 + IL_0036: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -410,18 +354,12 @@ .maxstack 4 .locals init (class assembly/R V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - int32 V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0043 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0041 + IL_0004: brfalse.s IL_002d IL_0006: ldarg.1 IL_0007: stloc.0 @@ -429,44 +367,32 @@ IL_0009: stloc.1 IL_000a: ldarg.0 IL_000b: ldfld int32 assembly/R::x@ - IL_0010: stloc.2 - IL_0011: ldloc.0 - IL_0012: ldfld int32 assembly/R::x@ - IL_0017: stloc.3 - IL_0018: ldloc.1 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldloc.3 - IL_001d: ceq - IL_001f: brfalse.s IL_003f - - IL_0021: ldarg.2 - IL_0022: stloc.s V_5 - IL_0024: ldarg.0 - IL_0025: ldfld int32 assembly/R::y@ - IL_002a: stloc.s V_6 - IL_002c: ldloc.0 - IL_002d: ldfld int32 assembly/R::y@ - IL_0032: stloc.s V_7 - IL_0034: ldloc.s V_5 - IL_0036: stloc.s V_8 - IL_0038: ldloc.s V_6 - IL_003a: ldloc.s V_7 - IL_003c: ceq - IL_003e: ret - - IL_003f: ldc.i4.0 - IL_0040: ret - - IL_0041: ldc.i4.0 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: ldc.i4.0 - IL_0048: ceq - IL_004a: ret + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/R::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/R::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/R::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final @@ -603,4 +529,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl index 115c16b843..ef672db9ea 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -173,95 +165,77 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.0 - IL_0001: brfalse IL_007d + IL_0001: brfalse.s IL_0063 - IL_0006: ldarg.1 - IL_0007: brfalse.s IL_007b + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0061 - IL_0009: ldarg.0 - IL_000a: pop - IL_000b: ldarg.0 - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0014: stloc.3 - IL_0015: ldloc.0 - IL_0016: ldfld int32 assembly/U::item1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.1 - IL_001e: ldfld int32 assembly/U::item1 - IL_0023: stloc.s V_5 - IL_0025: ldloc.3 - IL_0026: stloc.s V_6 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0011: stloc.3 + IL_0012: ldloc.0 + IL_0013: ldfld int32 assembly/U::item1 + IL_0018: stloc.s V_4 + IL_001a: ldloc.1 + IL_001b: ldfld int32 assembly/U::item1 + IL_0020: stloc.s V_5 + IL_0022: ldloc.s V_4 + IL_0024: ldloc.s V_5 + IL_0026: cgt IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: stloc.s V_8 - IL_0030: ldloc.s V_7 - IL_0032: ldloc.s V_8 - IL_0034: cgt - IL_0036: ldloc.s V_7 - IL_0038: ldloc.s V_8 - IL_003a: clt - IL_003c: sub - IL_003d: stloc.2 - IL_003e: ldloc.2 - IL_003f: ldc.i4.0 - IL_0040: bge.s IL_0044 - - IL_0042: ldloc.2 - IL_0043: ret - - IL_0044: ldloc.2 - IL_0045: ldc.i4.0 - IL_0046: ble.s IL_004a - - IL_0048: ldloc.2 - IL_0049: ret - - IL_004a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004f: stloc.s V_9 - IL_0051: ldloc.0 - IL_0052: ldfld int32 assembly/U::item2 - IL_0057: stloc.s V_10 - IL_0059: ldloc.1 - IL_005a: ldfld int32 assembly/U::item2 - IL_005f: stloc.s V_11 - IL_0061: ldloc.s V_9 - IL_0063: stloc.s V_12 - IL_0065: ldloc.s V_10 - IL_0067: stloc.s V_13 - IL_0069: ldloc.s V_11 - IL_006b: stloc.s V_14 - IL_006d: ldloc.s V_13 - IL_006f: ldloc.s V_14 - IL_0071: cgt - IL_0073: ldloc.s V_13 - IL_0075: ldloc.s V_14 - IL_0077: clt - IL_0079: sub - IL_007a: ret - - IL_007b: ldc.i4.1 - IL_007c: ret - - IL_007d: ldarg.1 - IL_007e: brfalse.s IL_0082 - - IL_0080: ldc.i4.m1 - IL_0081: ret - - IL_0082: ldc.i4.0 - IL_0083: ret + IL_002a: ldloc.s V_5 + IL_002c: clt + IL_002e: sub + IL_002f: stloc.2 + IL_0030: ldloc.2 + IL_0031: ldc.i4.0 + IL_0032: bge.s IL_0036 + + IL_0034: ldloc.2 + IL_0035: ret + + IL_0036: ldloc.2 + IL_0037: ldc.i4.0 + IL_0038: ble.s IL_003c + + IL_003a: ldloc.2 + IL_003b: ret + + IL_003c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0041: stloc.s V_6 + IL_0043: ldloc.0 + IL_0044: ldfld int32 assembly/U::item2 + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/U::item2 + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: brfalse.s IL_0068 + + IL_0066: ldc.i4.m1 + IL_0067: ret + + IL_0068: ldc.i4.0 + IL_0069: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -292,22 +266,16 @@ int32 V_6, class [runtime]System.Collections.IComparer V_7, int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12, - class [runtime]System.Collections.IComparer V_13, - int32 V_14, - int32 V_15) + int32 V_9) IL_0000: ldarg.1 IL_0001: unbox.any assembly/U IL_0006: stloc.0 IL_0007: ldarg.0 - IL_0008: brfalse.s IL_0080 + IL_0008: brfalse.s IL_0068 IL_000a: ldarg.1 IL_000b: unbox.any assembly/U - IL_0010: brfalse.s IL_007e + IL_0010: brfalse.s IL_0066 IL_0012: ldarg.0 IL_0013: pop @@ -323,69 +291,57 @@ IL_0023: ldloc.2 IL_0024: ldfld int32 assembly/U::item1 IL_0029: stloc.s V_6 - IL_002b: ldloc.s V_4 - IL_002d: stloc.s V_7 - IL_002f: ldloc.s V_5 - IL_0031: stloc.s V_8 + IL_002b: ldloc.s V_5 + IL_002d: ldloc.s V_6 + IL_002f: cgt + IL_0031: ldloc.s V_5 IL_0033: ldloc.s V_6 - IL_0035: stloc.s V_9 - IL_0037: ldloc.s V_8 - IL_0039: ldloc.s V_9 - IL_003b: cgt - IL_003d: ldloc.s V_8 - IL_003f: ldloc.s V_9 - IL_0041: clt - IL_0043: sub - IL_0044: stloc.3 - IL_0045: ldloc.3 - IL_0046: ldc.i4.0 - IL_0047: bge.s IL_004b - - IL_0049: ldloc.3 - IL_004a: ret - - IL_004b: ldloc.3 - IL_004c: ldc.i4.0 - IL_004d: ble.s IL_0051 - - IL_004f: ldloc.3 - IL_0050: ret - - IL_0051: ldarg.2 - IL_0052: stloc.s V_10 - IL_0054: ldloc.1 - IL_0055: ldfld int32 assembly/U::item2 - IL_005a: stloc.s V_11 - IL_005c: ldloc.2 - IL_005d: ldfld int32 assembly/U::item2 - IL_0062: stloc.s V_12 - IL_0064: ldloc.s V_10 - IL_0066: stloc.s V_13 - IL_0068: ldloc.s V_11 - IL_006a: stloc.s V_14 - IL_006c: ldloc.s V_12 - IL_006e: stloc.s V_15 - IL_0070: ldloc.s V_14 - IL_0072: ldloc.s V_15 - IL_0074: cgt - IL_0076: ldloc.s V_14 - IL_0078: ldloc.s V_15 - IL_007a: clt - IL_007c: sub - IL_007d: ret - - IL_007e: ldc.i4.1 - IL_007f: ret - - IL_0080: ldarg.1 - IL_0081: unbox.any assembly/U - IL_0086: brfalse.s IL_008a - - IL_0088: ldc.i4.m1 - IL_0089: ret - - IL_008a: ldc.i4.0 - IL_008b: ret + IL_0035: clt + IL_0037: sub + IL_0038: stloc.3 + IL_0039: ldloc.3 + IL_003a: ldc.i4.0 + IL_003b: bge.s IL_003f + + IL_003d: ldloc.3 + IL_003e: ret + + IL_003f: ldloc.3 + IL_0040: ldc.i4.0 + IL_0041: ble.s IL_0045 + + IL_0043: ldloc.3 + IL_0044: ret + + IL_0045: ldarg.2 + IL_0046: stloc.s V_7 + IL_0048: ldloc.1 + IL_0049: ldfld int32 assembly/U::item2 + IL_004e: stloc.s V_8 + IL_0050: ldloc.2 + IL_0051: ldfld int32 assembly/U::item2 + IL_0056: stloc.s V_9 + IL_0058: ldloc.s V_8 + IL_005a: ldloc.s V_9 + IL_005c: cgt + IL_005e: ldloc.s V_8 + IL_0060: ldloc.s V_9 + IL_0062: clt + IL_0064: sub + IL_0065: ret + + IL_0066: ldc.i4.1 + IL_0067: ret + + IL_0068: ldarg.1 + IL_0069: unbox.any assembly/U + IL_006e: brfalse.s IL_0072 + + IL_0070: ldc.i4.m1 + IL_0071: ret + + IL_0072: ldc.i4.0 + IL_0073: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -396,13 +352,9 @@ .locals init (int32 V_0, class assembly/U V_1, class [runtime]System.Collections.IEqualityComparer V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0049 + IL_0001: brfalse.s IL_003b IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -417,44 +369,36 @@ IL_0011: stloc.2 IL_0012: ldloc.1 IL_0013: ldfld int32 assembly/U::item2 - IL_0018: stloc.3 - IL_0019: ldloc.2 - IL_001a: stloc.s V_4 - IL_001c: ldloc.3 - IL_001d: ldloc.0 - IL_001e: ldc.i4.6 - IL_001f: shl - IL_0020: ldloc.0 - IL_0021: ldc.i4.2 - IL_0022: shr - IL_0023: add - IL_0024: add - IL_0025: add - IL_0026: stloc.0 - IL_0027: ldc.i4 0x9e3779b9 - IL_002c: ldarg.1 - IL_002d: stloc.s V_5 - IL_002f: ldloc.1 - IL_0030: ldfld int32 assembly/U::item1 - IL_0035: stloc.s V_6 - IL_0037: ldloc.s V_5 - IL_0039: stloc.s V_7 - IL_003b: ldloc.s V_6 - IL_003d: ldloc.0 - IL_003e: ldc.i4.6 - IL_003f: shl - IL_0040: ldloc.0 - IL_0041: ldc.i4.2 - IL_0042: shr - IL_0043: add - IL_0044: add - IL_0045: add - IL_0046: stloc.0 - IL_0047: ldloc.0 - IL_0048: ret - - IL_0049: ldc.i4.0 - IL_004a: ret + IL_0018: ldloc.0 + IL_0019: ldc.i4.6 + IL_001a: shl + IL_001b: ldloc.0 + IL_001c: ldc.i4.2 + IL_001d: shr + IL_001e: add + IL_001f: add + IL_0020: add + IL_0021: stloc.0 + IL_0022: ldc.i4 0x9e3779b9 + IL_0027: ldarg.1 + IL_0028: stloc.3 + IL_0029: ldloc.1 + IL_002a: ldfld int32 assembly/U::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr + IL_0035: add + IL_0036: add + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -479,18 +423,12 @@ class assembly/U V_1, class assembly/U V_2, class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6, - class [runtime]System.Collections.IEqualityComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IEqualityComparer V_10) + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004d + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_004b + IL_0004: brfalse.s IL_0034 IL_0006: ldarg.1 IL_0007: stloc.0 @@ -504,44 +442,32 @@ IL_000f: stloc.3 IL_0010: ldloc.1 IL_0011: ldfld int32 assembly/U::item1 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_4 - IL_0025: ldloc.s V_5 - IL_0027: ceq - IL_0029: brfalse.s IL_0049 - - IL_002b: ldarg.2 - IL_002c: stloc.s V_7 - IL_002e: ldloc.1 - IL_002f: ldfld int32 assembly/U::item2 - IL_0034: stloc.s V_8 - IL_0036: ldloc.2 - IL_0037: ldfld int32 assembly/U::item2 - IL_003c: stloc.s V_9 - IL_003e: ldloc.s V_7 - IL_0040: stloc.s V_10 - IL_0042: ldloc.s V_8 - IL_0044: ldloc.s V_9 - IL_0046: ceq - IL_0048: ret - - IL_0049: ldc.i4.0 - IL_004a: ret - - IL_004b: ldc.i4.0 - IL_004c: ret - - IL_004d: ldarg.1 - IL_004e: ldnull - IL_004f: cgt.un - IL_0051: ldc.i4.0 - IL_0052: ceq - IL_0054: ret + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: ldc.i4.0 + IL_003b: ceq + IL_003d: ret } .method public hidebysig virtual final @@ -786,4 +712,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl index 8de09a8c9d..08d510bc4e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -148,18 +140,12 @@ int32 V_3, class [runtime]System.Collections.IComparer V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IComparer V_7, - int32 V_8, - int32 V_9, - class [runtime]System.Collections.IComparer V_10, - int32 V_11, - int32 V_12) + int32 V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0070 + IL_0001: brfalse.s IL_0057 IL_0003: ldarg.1 - IL_0004: brfalse.s IL_006e + IL_0004: brfalse.s IL_0055 IL_0006: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() IL_000b: stloc.1 @@ -169,68 +155,56 @@ IL_0013: ldarg.1 IL_0014: ldfld int32 assembly/Point::x@ IL_0019: stloc.3 - IL_001a: ldloc.1 - IL_001b: stloc.s V_4 - IL_001d: ldloc.2 - IL_001e: stloc.s V_5 - IL_0020: ldloc.3 - IL_0021: stloc.s V_6 - IL_0023: ldloc.s V_5 - IL_0025: ldloc.s V_6 - IL_0027: cgt - IL_0029: ldloc.s V_5 - IL_002b: ldloc.s V_6 - IL_002d: clt - IL_002f: sub - IL_0030: stloc.0 - IL_0031: ldloc.0 - IL_0032: ldc.i4.0 - IL_0033: bge.s IL_0037 - - IL_0035: ldloc.0 - IL_0036: ret + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: cgt + IL_001e: ldloc.2 + IL_001f: ldloc.3 + IL_0020: clt + IL_0022: sub + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: bge.s IL_002a - IL_0037: ldloc.0 - IL_0038: ldc.i4.0 - IL_0039: ble.s IL_003d - - IL_003b: ldloc.0 - IL_003c: ret - - IL_003d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0042: stloc.s V_7 - IL_0044: ldarg.0 - IL_0045: ldfld int32 assembly/Point::y@ - IL_004a: stloc.s V_8 - IL_004c: ldarg.1 - IL_004d: ldfld int32 assembly/Point::y@ - IL_0052: stloc.s V_9 - IL_0054: ldloc.s V_7 - IL_0056: stloc.s V_10 - IL_0058: ldloc.s V_8 - IL_005a: stloc.s V_11 - IL_005c: ldloc.s V_9 - IL_005e: stloc.s V_12 - IL_0060: ldloc.s V_11 - IL_0062: ldloc.s V_12 - IL_0064: cgt - IL_0066: ldloc.s V_11 - IL_0068: ldloc.s V_12 - IL_006a: clt - IL_006c: sub - IL_006d: ret - - IL_006e: ldc.i4.1 - IL_006f: ret - - IL_0070: ldarg.1 - IL_0071: brfalse.s IL_0075 - - IL_0073: ldc.i4.m1 - IL_0074: ret - - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0028: ldloc.0 + IL_0029: ret + + IL_002a: ldloc.0 + IL_002b: ldc.i4.0 + IL_002c: ble.s IL_0030 + + IL_002e: ldloc.0 + IL_002f: ret + + IL_0030: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0035: stloc.s V_4 + IL_0037: ldarg.0 + IL_0038: ldfld int32 assembly/Point::y@ + IL_003d: stloc.s V_5 + IL_003f: ldarg.1 + IL_0040: ldfld int32 assembly/Point::y@ + IL_0045: stloc.s V_6 + IL_0047: ldloc.s V_5 + IL_0049: ldloc.s V_6 + IL_004b: cgt + IL_004d: ldloc.s V_5 + IL_004f: ldloc.s V_6 + IL_0051: clt + IL_0053: sub + IL_0054: ret + + IL_0055: ldc.i4.1 + IL_0056: ret + + IL_0057: ldarg.1 + IL_0058: brfalse.s IL_005c + + IL_005a: ldc.i4.m1 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret } .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed @@ -260,24 +234,18 @@ int32 V_5, class [runtime]System.Collections.IComparer V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IComparer V_9, - int32 V_10, - int32 V_11, - class [runtime]System.Collections.IComparer V_12, - int32 V_13, - int32 V_14) + int32 V_8) IL_0000: ldarg.1 IL_0001: unbox.any assembly/Point IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 IL_0009: ldarg.0 - IL_000a: brfalse.s IL_007a + IL_000a: brfalse.s IL_0063 IL_000c: ldarg.1 IL_000d: unbox.any assembly/Point - IL_0012: brfalse.s IL_0078 + IL_0012: brfalse.s IL_0061 IL_0014: ldarg.2 IL_0015: stloc.3 @@ -287,69 +255,57 @@ IL_001e: ldloc.1 IL_001f: ldfld int32 assembly/Point::x@ IL_0024: stloc.s V_5 - IL_0026: ldloc.3 - IL_0027: stloc.s V_6 - IL_0029: ldloc.s V_4 - IL_002b: stloc.s V_7 - IL_002d: ldloc.s V_5 - IL_002f: stloc.s V_8 - IL_0031: ldloc.s V_7 - IL_0033: ldloc.s V_8 - IL_0035: cgt - IL_0037: ldloc.s V_7 - IL_0039: ldloc.s V_8 - IL_003b: clt - IL_003d: sub - IL_003e: stloc.2 - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: bge.s IL_0045 - - IL_0043: ldloc.2 - IL_0044: ret - - IL_0045: ldloc.2 - IL_0046: ldc.i4.0 - IL_0047: ble.s IL_004b - - IL_0049: ldloc.2 - IL_004a: ret - - IL_004b: ldarg.2 - IL_004c: stloc.s V_9 - IL_004e: ldarg.0 - IL_004f: ldfld int32 assembly/Point::y@ - IL_0054: stloc.s V_10 - IL_0056: ldloc.1 - IL_0057: ldfld int32 assembly/Point::y@ - IL_005c: stloc.s V_11 - IL_005e: ldloc.s V_9 - IL_0060: stloc.s V_12 - IL_0062: ldloc.s V_10 - IL_0064: stloc.s V_13 - IL_0066: ldloc.s V_11 - IL_0068: stloc.s V_14 - IL_006a: ldloc.s V_13 - IL_006c: ldloc.s V_14 - IL_006e: cgt - IL_0070: ldloc.s V_13 - IL_0072: ldloc.s V_14 - IL_0074: clt - IL_0076: sub - IL_0077: ret - - IL_0078: ldc.i4.1 - IL_0079: ret - - IL_007a: ldarg.1 - IL_007b: unbox.any assembly/Point - IL_0080: brfalse.s IL_0084 - - IL_0082: ldc.i4.m1 - IL_0083: ret - - IL_0084: ldc.i4.0 - IL_0085: ret + IL_0026: ldloc.s V_4 + IL_0028: ldloc.s V_5 + IL_002a: cgt + IL_002c: ldloc.s V_4 + IL_002e: ldloc.s V_5 + IL_0030: clt + IL_0032: sub + IL_0033: stloc.2 + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a + + IL_0038: ldloc.2 + IL_0039: ret + + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 + + IL_003e: ldloc.2 + IL_003f: ret + + IL_0040: ldarg.2 + IL_0041: stloc.s V_6 + IL_0043: ldarg.0 + IL_0044: ldfld int32 assembly/Point::y@ + IL_0049: stloc.s V_7 + IL_004b: ldloc.1 + IL_004c: ldfld int32 assembly/Point::y@ + IL_0051: stloc.s V_8 + IL_0053: ldloc.s V_7 + IL_0055: ldloc.s V_8 + IL_0057: cgt + IL_0059: ldloc.s V_7 + IL_005b: ldloc.s V_8 + IL_005d: clt + IL_005f: sub + IL_0060: ret + + IL_0061: ldc.i4.1 + IL_0062: ret + + IL_0063: ldarg.1 + IL_0064: unbox.any assembly/Point + IL_0069: brfalse.s IL_006d + + IL_006b: ldc.i4.m1 + IL_006c: ret + + IL_006d: ldc.i4.0 + IL_006e: ret } .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -359,13 +315,9 @@ .maxstack 7 .locals init (int32 V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0042 + IL_0001: brfalse.s IL_0035 IL_0003: ldc.i4.0 IL_0004: stloc.0 @@ -374,44 +326,36 @@ IL_000b: stloc.1 IL_000c: ldarg.0 IL_000d: ldfld int32 assembly/Point::y@ - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldloc.2 - IL_0016: ldloc.0 - IL_0017: ldc.i4.6 - IL_0018: shl - IL_0019: ldloc.0 - IL_001a: ldc.i4.2 - IL_001b: shr - IL_001c: add - IL_001d: add - IL_001e: add - IL_001f: stloc.0 - IL_0020: ldc.i4 0x9e3779b9 - IL_0025: ldarg.1 - IL_0026: stloc.s V_4 - IL_0028: ldarg.0 - IL_0029: ldfld int32 assembly/Point::x@ - IL_002e: stloc.s V_5 - IL_0030: ldloc.s V_4 - IL_0032: stloc.s V_6 - IL_0034: ldloc.s V_5 - IL_0036: ldloc.0 - IL_0037: ldc.i4.6 - IL_0038: shl - IL_0039: ldloc.0 - IL_003a: ldc.i4.2 - IL_003b: shr - IL_003c: add - IL_003d: add - IL_003e: add - IL_003f: stloc.0 - IL_0040: ldloc.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0012: ldloc.0 + IL_0013: ldc.i4.6 + IL_0014: shl + IL_0015: ldloc.0 + IL_0016: ldc.i4.2 + IL_0017: shr + IL_0018: add + IL_0019: add + IL_001a: add + IL_001b: stloc.0 + IL_001c: ldc.i4 0x9e3779b9 + IL_0021: ldarg.1 + IL_0022: stloc.2 + IL_0023: ldarg.0 + IL_0024: ldfld int32 assembly/Point::x@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr + IL_002f: add + IL_0030: add + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret + + IL_0035: ldc.i4.0 + IL_0036: ret } .method public hidebysig virtual final instance int32 GetHashCode() cil managed @@ -434,18 +378,12 @@ .maxstack 4 .locals init (class assembly/Point V_0, class [runtime]System.Collections.IEqualityComparer V_1, - int32 V_2, - int32 V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5, - int32 V_6, - int32 V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0043 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0041 + IL_0004: brfalse.s IL_002d IL_0006: ldarg.1 IL_0007: stloc.0 @@ -453,44 +391,32 @@ IL_0009: stloc.1 IL_000a: ldarg.0 IL_000b: ldfld int32 assembly/Point::x@ - IL_0010: stloc.2 - IL_0011: ldloc.0 - IL_0012: ldfld int32 assembly/Point::x@ - IL_0017: stloc.3 - IL_0018: ldloc.1 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldloc.3 - IL_001d: ceq - IL_001f: brfalse.s IL_003f - - IL_0021: ldarg.2 - IL_0022: stloc.s V_5 - IL_0024: ldarg.0 - IL_0025: ldfld int32 assembly/Point::y@ - IL_002a: stloc.s V_6 - IL_002c: ldloc.0 - IL_002d: ldfld int32 assembly/Point::y@ - IL_0032: stloc.s V_7 - IL_0034: ldloc.s V_5 - IL_0036: stloc.s V_8 - IL_0038: ldloc.s V_6 - IL_003a: ldloc.s V_7 - IL_003c: ceq - IL_003e: ret - - IL_003f: ldc.i4.0 - IL_0040: ret - - IL_0041: ldc.i4.0 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: ldc.i4.0 - IL_0048: ceq - IL_004a: ret + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/Point::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/Point::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/Point::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final @@ -603,11 +529,7 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.1 IL_0001: ldc.i4.2 IL_0002: newobj instance void assembly/Point::.ctor(int32, @@ -624,33 +546,25 @@ IL_0014: ldc.i4.0 IL_0015: stloc.s V_4 IL_0017: ldloc.3 - IL_0018: stloc.s V_5 - IL_001a: ldloc.s V_4 - IL_001c: stloc.s V_6 - IL_001e: ldloc.s V_5 - IL_0020: ldloc.s V_6 - IL_0022: conv.i - IL_0023: sizeof [runtime]System.Int32 - IL_0029: mul - IL_002a: add - IL_002b: ldobj [runtime]System.Int32 - IL_0030: ldloc.1 - IL_0031: stloc.s V_7 - IL_0033: ldc.i4.1 - IL_0034: stloc.s V_8 - IL_0036: ldloc.s V_7 - IL_0038: stloc.s V_9 - IL_003a: ldloc.s V_8 - IL_003c: stloc.s V_10 - IL_003e: ldloc.s V_9 - IL_0040: ldloc.s V_10 - IL_0042: conv.i - IL_0043: sizeof [runtime]System.Int32 - IL_0049: mul - IL_004a: add - IL_004b: ldobj [runtime]System.Int32 - IL_0050: add - IL_0051: ret + IL_0018: ldloc.s V_4 + IL_001a: conv.i + IL_001b: sizeof [runtime]System.Int32 + IL_0021: mul + IL_0022: add + IL_0023: ldobj [runtime]System.Int32 + IL_0028: ldloc.1 + IL_0029: stloc.s V_5 + IL_002b: ldc.i4.1 + IL_002c: stloc.s V_6 + IL_002e: ldloc.s V_5 + IL_0030: ldloc.s V_6 + IL_0032: conv.i + IL_0033: sizeof [runtime]System.Int32 + IL_0039: mul + IL_003a: add + IL_003b: ldobj [runtime]System.Int32 + IL_0040: add + IL_0041: ret } .method public static int32 pinRef() cil managed @@ -688,11 +602,7 @@ native int V_4, int32 V_5, native int V_6, - int32 V_7, - native int V_8, - int32 V_9, - native int V_10, - int32 V_11) + int32 V_7) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup @@ -752,33 +662,25 @@ IL_008d: ldc.i4.0 IL_008e: stloc.s V_5 IL_0090: ldloc.s V_4 - IL_0092: stloc.s V_6 - IL_0094: ldloc.s V_5 - IL_0096: stloc.s V_7 - IL_0098: ldloc.s V_6 - IL_009a: ldloc.s V_7 - IL_009c: conv.i - IL_009d: sizeof [runtime]System.Double - IL_00a3: mul - IL_00a4: add - IL_00a5: ldobj [runtime]System.Double - IL_00aa: ldloc.1 - IL_00ab: stloc.s V_8 - IL_00ad: ldc.i4.1 - IL_00ae: stloc.s V_9 - IL_00b0: ldloc.s V_8 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: stloc.s V_11 - IL_00b8: ldloc.s V_10 - IL_00ba: ldloc.s V_11 - IL_00bc: conv.i - IL_00bd: sizeof [runtime]System.Double - IL_00c3: mul - IL_00c4: add - IL_00c5: ldobj [runtime]System.Double - IL_00ca: add - IL_00cb: ret + IL_0092: ldloc.s V_5 + IL_0094: conv.i + IL_0095: sizeof [runtime]System.Double + IL_009b: mul + IL_009c: add + IL_009d: ldobj [runtime]System.Double + IL_00a2: ldloc.1 + IL_00a3: stloc.s V_6 + IL_00a5: ldc.i4.1 + IL_00a6: stloc.s V_7 + IL_00a8: ldloc.s V_6 + IL_00aa: ldloc.s V_7 + IL_00ac: conv.i + IL_00ad: sizeof [runtime]System.Double + IL_00b3: mul + IL_00b4: add + IL_00b5: ldobj [runtime]System.Double + IL_00ba: add + IL_00bb: ret } .method public static float64 pinArray2() cil managed @@ -791,11 +693,7 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldc.i4.6 IL_0001: newarr [runtime]System.Double IL_0006: dup @@ -835,33 +733,25 @@ IL_0074: ldc.i4.0 IL_0075: stloc.s V_4 IL_0077: ldloc.3 - IL_0078: stloc.s V_5 - IL_007a: ldloc.s V_4 - IL_007c: stloc.s V_6 - IL_007e: ldloc.s V_5 - IL_0080: ldloc.s V_6 - IL_0082: conv.i - IL_0083: sizeof [runtime]System.Double - IL_0089: mul - IL_008a: add - IL_008b: ldobj [runtime]System.Double - IL_0090: ldloc.1 - IL_0091: stloc.s V_7 - IL_0093: ldc.i4.1 - IL_0094: stloc.s V_8 - IL_0096: ldloc.s V_7 - IL_0098: stloc.s V_9 - IL_009a: ldloc.s V_8 - IL_009c: stloc.s V_10 - IL_009e: ldloc.s V_9 - IL_00a0: ldloc.s V_10 - IL_00a2: conv.i - IL_00a3: sizeof [runtime]System.Double - IL_00a9: mul - IL_00aa: add - IL_00ab: ldobj [runtime]System.Double - IL_00b0: add - IL_00b1: ret + IL_0078: ldloc.s V_4 + IL_007a: conv.i + IL_007b: sizeof [runtime]System.Double + IL_0081: mul + IL_0082: add + IL_0083: ldobj [runtime]System.Double + IL_0088: ldloc.1 + IL_0089: stloc.s V_5 + IL_008b: ldc.i4.1 + IL_008c: stloc.s V_6 + IL_008e: ldloc.s V_5 + IL_0090: ldloc.s V_6 + IL_0092: conv.i + IL_0093: sizeof [runtime]System.Double + IL_0099: mul + IL_009a: add + IL_009b: ldobj [runtime]System.Double + IL_00a0: add + IL_00a1: ret } .method public static class [runtime]System.Tuple`2 pinString() cil managed @@ -874,11 +764,7 @@ native int V_3, int32 V_4, native int V_5, - int32 V_6, - native int V_7, - int32 V_8, - native int V_9, - int32 V_10) + int32 V_6) IL_0000: ldstr "Hello World" IL_0005: stloc.0 IL_0006: ldloc.0 @@ -901,34 +787,26 @@ IL_001b: ldc.i4.0 IL_001c: stloc.s V_4 IL_001e: ldloc.3 - IL_001f: stloc.s V_5 - IL_0021: ldloc.s V_4 - IL_0023: stloc.s V_6 - IL_0025: ldloc.s V_5 - IL_0027: ldloc.s V_6 - IL_0029: conv.i - IL_002a: sizeof [runtime]System.Char - IL_0030: mul - IL_0031: add - IL_0032: ldobj [runtime]System.Char - IL_0037: ldloc.1 - IL_0038: stloc.s V_7 - IL_003a: ldc.i4.1 - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_7 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_8 - IL_0043: stloc.s V_10 - IL_0045: ldloc.s V_9 - IL_0047: ldloc.s V_10 - IL_0049: conv.i - IL_004a: sizeof [runtime]System.Char - IL_0050: mul - IL_0051: add - IL_0052: ldobj [runtime]System.Char - IL_0057: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + IL_001f: ldloc.s V_4 + IL_0021: conv.i + IL_0022: sizeof [runtime]System.Char + IL_0028: mul + IL_0029: add + IL_002a: ldobj [runtime]System.Char + IL_002f: ldloc.1 + IL_0030: stloc.s V_5 + IL_0032: ldc.i4.1 + IL_0033: stloc.s V_6 + IL_0035: ldloc.s V_5 + IL_0037: ldloc.s V_6 + IL_0039: conv.i + IL_003a: sizeof [runtime]System.Char + IL_0040: mul + IL_0041: add + IL_0042: ldobj [runtime]System.Char + IL_0047: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, !1) - IL_005c: ret + IL_004c: ret } } @@ -950,4 +828,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.debug.bsl index f6fd1e69d1..c19d713617 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -43,6 +35,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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() + IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() + IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/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> { @@ -173,76 +235,6 @@ } - .class auto ansi serializable sealed nested assembly beforefieldinit matchResult@38 - extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() - IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() - IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/functionResult@43::@_instance - IL_000a: ret - } - - } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_list() cil managed { @@ -402,4 +394,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.release.bsl index f6fd1e69d1..c19d713617 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOff.fs.il.release.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -43,6 +35,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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() + IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() + IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/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> { @@ -173,76 +235,6 @@ } - .class auto ansi serializable sealed nested assembly beforefieldinit matchResult@38 - extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() - IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() - IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/functionResult@43::@_instance - IL_000a: ret - } - - } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_list() cil managed { @@ -402,4 +394,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.debug.bsl index ffb2898dcf..696aecf4ab 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.debug.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -43,6 +35,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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() + IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() + IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/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> { @@ -173,76 +235,6 @@ } - .class auto ansi serializable sealed nested assembly beforefieldinit matchResult@38 - extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() - IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() - IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/functionResult@43::@_instance - IL_000a: ret - } - - } - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list@3 .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 matchResult@38 @@ -412,4 +404,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.release.bsl index ffb2898dcf..696aecf4ab 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/Verify13043_RealInternalSignatureOn.fs.il.release.bsl @@ -17,16 +17,8 @@ .hash algorithm 0x00008004 .ver 0:0:0:0 } -.mresource public FSharpSignatureCompressedData.assembly -{ - - -} -.mresource public FSharpOptimizationCompressedData.assembly -{ - - -} +.mresource public FSharpSignatureCompressedData.assembly { } +.mresource public FSharpOptimizationCompressedData.assembly { } .module assembly.exe .imagebase {value} @@ -43,6 +35,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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() + IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 + { + .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) + IL_0006: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 10 + IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() + IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/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> { @@ -173,76 +235,6 @@ } - .class auto ansi serializable sealed nested assembly beforefieldinit matchResult@38 - extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/matchResult@38::.ctor() - IL_0005: stsfld class Verify13043/matchResult@38 Verify13043/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 - { - .field static assembly initonly class Verify13043/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::.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 Verify13043::condition(int32) - IL_0006: ret - } - - .method private specialname rtspecialname static void .cctor() cil managed - { - - .maxstack 10 - IL_0000: newobj instance void Verify13043/functionResult@43::.ctor() - IL_0005: stsfld class Verify13043/functionResult@43 Verify13043/functionResult@43::@_instance - IL_000a: ret - } - - } - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list@3 .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 matchResult@38 @@ -412,4 +404,3 @@ - diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/Graph/CompilationTests.fs b/tests/FSharp.Compiler.ComponentTests/TypeChecks/Graph/CompilationTests.fs index 829810f3ee..033cb71933 100644 --- a/tests/FSharp.Compiler.ComponentTests/TypeChecks/Graph/CompilationTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/TypeChecks/Graph/CompilationTests.fs @@ -13,7 +13,7 @@ type Method = let methodOptions (method: Method) = match method with | Method.Sequential -> [] - | Method.Graph -> [ "--test:GraphBasedChecking"; "--test:DumpCheckingGraph" ] + | Method.Graph -> [ "GraphBasedChecking"; "--test:DumpCheckingGraph" ] let withMethod (method: Method) (cu: CompilationUnit) : CompilationUnit = match cu with diff --git a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/GraphTypeCheckingBenchmarks.fs b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/GraphTypeCheckingBenchmarks.fs index 3f2f170a41..1b950c8323 100644 --- a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/GraphTypeCheckingBenchmarks.fs +++ b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/GraphTypeCheckingBenchmarks.fs @@ -45,7 +45,7 @@ type GraphTypeCheckingBenchmarks() = OtherOptions = [ if this.GraphTypeChecking then - "--test:GraphBasedChecking" + "GraphBasedChecking" ] } @@ -67,7 +67,7 @@ type GraphTypeCheckingBenchmarks() = OtherOptions = [ if this.GraphTypeChecking then - "--test:GraphBasedChecking" + "GraphBasedChecking" ] } diff --git a/tests/fsharp/single-test.fs b/tests/fsharp/single-test.fs index 4bcad9740f..ea87d32876 100644 --- a/tests/fsharp/single-test.fs +++ b/tests/fsharp/single-test.fs @@ -335,7 +335,7 @@ let singleTestBuildAndRunCore cfg copyFiles p languageVersion = let sources = extraSources |> List.filter (fileExists cfg) fsc cfg "%s --optimize -a -o:test--optimize-lib.dll -g --langversion:preview " cfg.fsc_flags sources - fsc cfg "%s --realsig- --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g --langversion:preview " cfg.fsc_flags sources + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g --langversion:preview " cfg.fsc_flags sources peverify cfg "test--optimize-lib.dll" peverify cfg "test--optimize-client-of-lib.exe" diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs index 30c2e3b40d..e0ad37545d 100644 --- a/tests/fsharp/tests.fs +++ b/tests/fsharp/tests.fs @@ -1423,53 +1423,53 @@ module CoreTests = let topinit () = let cfg = testConfig "core/topinit" - fsc cfg "%s --realsig- --optimize -o both69514.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -o both69514.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] peverify cfg "both69514.exe" - fsc cfg "%s --realsig- --optimize- -o both69514-noopt.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize- -o both69514-noopt.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] peverify cfg "both69514-noopt.exe" - fsc cfg "%s --realsig- --optimize -a -g" cfg.fsc_flags ["lib69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -a -g" cfg.fsc_flags ["lib69514.fs"] peverify cfg "lib69514.dll" - fsc cfg "%s --realsig- --optimize -r:lib69514.dll -g" cfg.fsc_flags ["app69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -r:lib69514.dll -g" cfg.fsc_flags ["app69514.fs"] peverify cfg "app69514.exe" - fsc cfg "%s --realsig- --optimize- -o:lib69514-noopt.dll -a -g" cfg.fsc_flags ["lib69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize- -o:lib69514-noopt.dll -a -g" cfg.fsc_flags ["lib69514.fs"] peverify cfg "lib69514-noopt.dll" - fsc cfg "%s --realsig- --optimize- -r:lib69514-noopt.dll -o:app69514-noopt.exe -g" cfg.fsc_flags ["app69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize- -r:lib69514-noopt.dll -o:app69514-noopt.exe -g" cfg.fsc_flags ["app69514.fs"] peverify cfg "app69514-noopt.exe" - fsc cfg "%s --realsig- --optimize- -o:lib69514-noopt-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize- -o:lib69514-noopt-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] peverify cfg "lib69514-noopt-withsig.dll" - fsc cfg "%s --realsig- --optimize- -r:lib69514-noopt-withsig.dll -o:app69514-noopt-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize- -r:lib69514-noopt-withsig.dll -o:app69514-noopt-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] peverify cfg "app69514-noopt-withsig.exe" - fsc cfg "%s --realsig- -o:lib69514-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- -o:lib69514-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] peverify cfg "lib69514-withsig.dll" - fsc cfg "%s -r:lib69514-withsig.dll --realsig- -o:app69514-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] + fsc cfg "%s -r:lib69514-withsig.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- -o:app69514-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] peverify cfg "app69514-withsig.exe" - fsc cfg "%s -o:lib.dll --realsig- -a --langversion:5.0 --mlcompatibility -g" cfg.fsc_flags ["lib.ml"] + fsc cfg "%s -o:lib.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- -a --langversion:5.0 --mlcompatibility -g" cfg.fsc_flags ["lib.ml"] peverify cfg "lib.dll" csc cfg """/nologo /r:"%s" /r:lib.dll /out:test.exe """ cfg.FSCOREDLLPATH ["test.cs"] - fsc cfg "%s --optimize -o:lib--optimize.dll --realsig- -a --langversion:5.0 --mlcompatibility -g" cfg.fsc_flags ["lib.ml"] + fsc cfg "%s --optimize -o:lib--optimize.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- -a --langversion:5.0 --mlcompatibility -g" cfg.fsc_flags ["lib.ml"] peverify cfg "lib--optimize.dll" @@ -1477,53 +1477,53 @@ module CoreTests = let dicases = ["flag_deterministic_init1.fs"; "lib_deterministic_init1.fs"; "flag_deterministic_init2.fs"; "lib_deterministic_init2.fs"; "flag_deterministic_init3.fs"; "lib_deterministic_init3.fs"; "flag_deterministic_init4.fs"; "lib_deterministic_init4.fs"; "flag_deterministic_init5.fs"; "lib_deterministic_init5.fs"; "flag_deterministic_init6.fs"; "lib_deterministic_init6.fs"; "flag_deterministic_init7.fs"; "lib_deterministic_init7.fs"; "flag_deterministic_init8.fs"; "lib_deterministic_init8.fs"; "flag_deterministic_init9.fs"; "lib_deterministic_init9.fs"; "flag_deterministic_init10.fs"; "lib_deterministic_init10.fs"; "flag_deterministic_init11.fs"; "lib_deterministic_init11.fs"; "flag_deterministic_init12.fs"; "lib_deterministic_init12.fs"; "flag_deterministic_init13.fs"; "lib_deterministic_init13.fs"; "flag_deterministic_init14.fs"; "lib_deterministic_init14.fs"; "flag_deterministic_init15.fs"; "lib_deterministic_init15.fs"; "flag_deterministic_init16.fs"; "lib_deterministic_init16.fs"; "flag_deterministic_init17.fs"; "lib_deterministic_init17.fs"; "flag_deterministic_init18.fs"; "lib_deterministic_init18.fs"; "flag_deterministic_init19.fs"; "lib_deterministic_init19.fs"; "flag_deterministic_init20.fs"; "lib_deterministic_init20.fs"; "flag_deterministic_init21.fs"; "lib_deterministic_init21.fs"; "flag_deterministic_init22.fs"; "lib_deterministic_init22.fs"; "flag_deterministic_init23.fs"; "lib_deterministic_init23.fs"; "flag_deterministic_init24.fs"; "lib_deterministic_init24.fs"; "flag_deterministic_init25.fs"; "lib_deterministic_init25.fs"; "flag_deterministic_init26.fs"; "lib_deterministic_init26.fs"; "flag_deterministic_init27.fs"; "lib_deterministic_init27.fs"; "flag_deterministic_init28.fs"; "lib_deterministic_init28.fs"; "flag_deterministic_init29.fs"; "lib_deterministic_init29.fs"; "flag_deterministic_init30.fs"; "lib_deterministic_init30.fs"; "flag_deterministic_init31.fs"; "lib_deterministic_init31.fs"; "flag_deterministic_init32.fs"; "lib_deterministic_init32.fs"; "flag_deterministic_init33.fs"; "lib_deterministic_init33.fs"; "flag_deterministic_init34.fs"; "lib_deterministic_init34.fs"; "flag_deterministic_init35.fs"; "lib_deterministic_init35.fs"; "flag_deterministic_init36.fs"; "lib_deterministic_init36.fs"; "flag_deterministic_init37.fs"; "lib_deterministic_init37.fs"; "flag_deterministic_init38.fs"; "lib_deterministic_init38.fs"; "flag_deterministic_init39.fs"; "lib_deterministic_init39.fs"; "flag_deterministic_init40.fs"; "lib_deterministic_init40.fs"; "flag_deterministic_init41.fs"; "lib_deterministic_init41.fs"; "flag_deterministic_init42.fs"; "lib_deterministic_init42.fs"; "flag_deterministic_init43.fs"; "lib_deterministic_init43.fs"; "flag_deterministic_init44.fs"; "lib_deterministic_init44.fs"; "flag_deterministic_init45.fs"; "lib_deterministic_init45.fs"; "flag_deterministic_init46.fs"; "lib_deterministic_init46.fs"; "flag_deterministic_init47.fs"; "lib_deterministic_init47.fs"; "flag_deterministic_init48.fs"; "lib_deterministic_init48.fs"; "flag_deterministic_init49.fs"; "lib_deterministic_init49.fs"; "flag_deterministic_init50.fs"; "lib_deterministic_init50.fs"; "flag_deterministic_init51.fs"; "lib_deterministic_init51.fs"; "flag_deterministic_init52.fs"; "lib_deterministic_init52.fs"; "flag_deterministic_init53.fs"; "lib_deterministic_init53.fs"; "flag_deterministic_init54.fs"; "lib_deterministic_init54.fs"; "flag_deterministic_init55.fs"; "lib_deterministic_init55.fs"; "flag_deterministic_init56.fs"; "lib_deterministic_init56.fs"; "flag_deterministic_init57.fs"; "lib_deterministic_init57.fs"; "flag_deterministic_init58.fs"; "lib_deterministic_init58.fs"; "flag_deterministic_init59.fs"; "lib_deterministic_init59.fs"; "flag_deterministic_init60.fs"; "lib_deterministic_init60.fs"; "flag_deterministic_init61.fs"; "lib_deterministic_init61.fs"; "flag_deterministic_init62.fs"; "lib_deterministic_init62.fs"; "flag_deterministic_init63.fs"; "lib_deterministic_init63.fs"; "flag_deterministic_init64.fs"; "lib_deterministic_init64.fs"; "flag_deterministic_init65.fs"; "lib_deterministic_init65.fs"; "flag_deterministic_init66.fs"; "lib_deterministic_init66.fs"; "flag_deterministic_init67.fs"; "lib_deterministic_init67.fs"; "flag_deterministic_init68.fs"; "lib_deterministic_init68.fs"; "flag_deterministic_init69.fs"; "lib_deterministic_init69.fs"; "flag_deterministic_init70.fs"; "lib_deterministic_init70.fs"; "flag_deterministic_init71.fs"; "lib_deterministic_init71.fs"; "flag_deterministic_init72.fs"; "lib_deterministic_init72.fs"; "flag_deterministic_init73.fs"; "lib_deterministic_init73.fs"; "flag_deterministic_init74.fs"; "lib_deterministic_init74.fs"; "flag_deterministic_init75.fs"; "lib_deterministic_init75.fs"; "flag_deterministic_init76.fs"; "lib_deterministic_init76.fs"; "flag_deterministic_init77.fs"; "lib_deterministic_init77.fs"; "flag_deterministic_init78.fs"; "lib_deterministic_init78.fs"; "flag_deterministic_init79.fs"; "lib_deterministic_init79.fs"; "flag_deterministic_init80.fs"; "lib_deterministic_init80.fs"; "flag_deterministic_init81.fs"; "lib_deterministic_init81.fs"; "flag_deterministic_init82.fs"; "lib_deterministic_init82.fs"; "flag_deterministic_init83.fs"; "lib_deterministic_init83.fs"; "flag_deterministic_init84.fs"; "lib_deterministic_init84.fs"; "flag_deterministic_init85.fs"; "lib_deterministic_init85.fs"] - fsc cfg "%s --optimize- -o test_deterministic_init.exe --realsig- " cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) + fsc cfg "%s --optimize- -o test_deterministic_init.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) peverify cfg "test_deterministic_init.exe" - fsc cfg "%s --optimize -o test_deterministic_init--optimize.exe --realsig- " cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) + fsc cfg "%s --optimize -o test_deterministic_init--optimize.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) peverify cfg "test_deterministic_init--optimize.exe" - fsc cfg "%s --optimize- -a -o test_deterministic_init_lib.dll --realsig- " cfg.fsc_flags dicases + fsc cfg "%s --optimize- -a -o test_deterministic_init_lib.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags dicases peverify cfg "test_deterministic_init_lib.dll" - fsc cfg "%s --optimize- -r test_deterministic_init_lib.dll -o test_deterministic_init_exe.exe --realsig- " cfg.fsc_flags ["test_deterministic_init.fs"] + fsc cfg "%s --optimize- -r test_deterministic_init_lib.dll -o test_deterministic_init_exe.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags ["test_deterministic_init.fs"] peverify cfg "test_deterministic_init_exe.exe" - fsc cfg "%s --realsig- --optimize -a -o test_deterministic_init_lib--optimize.dll --realsig- " cfg.fsc_flags dicases + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -a -o test_deterministic_init_lib--optimize.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags dicases peverify cfg "test_deterministic_init_lib--optimize.dll" - fsc cfg "%s --realsig- --optimize -r test_deterministic_init_lib--optimize.dll -o test_deterministic_init_exe--optimize.exe --realsig- " cfg.fsc_flags ["test_deterministic_init.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -r test_deterministic_init_lib--optimize.dll -o test_deterministic_init_exe--optimize.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags ["test_deterministic_init.fs"] peverify cfg "test_deterministic_init_exe--optimize.exe" let static_init_cases = [ "test0.fs"; "test1.fs"; "test2.fs"; "test3.fs"; "test4.fs"; "test5.fs"; "test6.fs" ] - fsc cfg "%s --optimize- -o test_static_init.exe --realsig- " cfg.fsc_flags (static_init_cases @ ["static-main.fs"]) + fsc cfg "%s --optimize- -o test_static_init.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags (static_init_cases @ ["static-main.fs"]) peverify cfg "test_static_init.exe" - fsc cfg "%s --optimize -o test_static_init--optimize.exe --realsig- " cfg.fsc_flags (static_init_cases @ [ "static-main.fs" ]) + fsc cfg "%s --optimize -o test_static_init--optimize.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags (static_init_cases @ [ "static-main.fs" ]) peverify cfg "test_static_init--optimize.exe" - fsc cfg "%s --optimize- -a -o test_static_init_lib.dll --realsig- " cfg.fsc_flags static_init_cases + fsc cfg "%s --optimize- -a -o test_static_init_lib.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags static_init_cases peverify cfg "test_static_init_lib.dll" - fsc cfg "%s --optimize- -r test_static_init_lib.dll -o test_static_init_exe.exe --realsig- " cfg.fsc_flags ["static-main.fs"] + fsc cfg "%s --optimize- -r test_static_init_lib.dll -o test_static_init_exe.exe --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags ["static-main.fs"] peverify cfg "test_static_init_exe.exe" - fsc cfg "%s --optimize -a -o test_static_init_lib--optimize.dll --realsig- " cfg.fsc_flags static_init_cases + fsc cfg "%s --optimize -a -o test_static_init_lib--optimize.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- " cfg.fsc_flags static_init_cases peverify cfg "test_static_init_lib--optimize.dll" - fsc cfg "%s --realsig- --optimize -r test_static_init_lib--optimize.dll --realsig- -o test_static_init_exe--optimize.exe" cfg.fsc_flags ["static-main.fs"] + fsc cfg "%s --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- --optimize -r test_static_init_lib--optimize.dll --realsig- --graphbasedchecking- --paralleloptimization- --parallelilxgen- -o test_static_init_exe--optimize.exe" cfg.fsc_flags ["static-main.fs"] peverify cfg "test_static_init_exe--optimize.exe"