diff options
author | Jeremy Koritzinsky <jkoritzinsky@gmail.com> | 2019-03-01 08:48:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-01 08:48:49 -0800 |
commit | d778ad50511f5511ef799afa7fdef86ab5756e95 (patch) | |
tree | 849e108477496da3094f004a1c33974dd52f4032 | |
parent | 3c0d755886d2130e1b0db01524c140cb6c6b6fe6 (diff) | |
download | coreclr-d778ad50511f5511ef799afa7fdef86ab5756e95.tar.gz coreclr-d778ad50511f5511ef799afa7fdef86ab5756e95.tar.bz2 coreclr-d778ad50511f5511ef799afa7fdef86ab5756e95.zip |
Turn on IBC and enforce PGO in official and release builds. (#22843)
* Enable pgocheck to run on python 3.
* Enable IBC optimizations in official builds and enforce PGO in release builds on platforms where pgocheck.py works.
* Only enable IBC on Windows x64/x86.
-rw-r--r-- | eng/build-job.yml | 15 | ||||
-rw-r--r-- | src/scripts/pgocheck.py | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/eng/build-job.yml b/eng/build-job.yml index d14ffc1fdf..8f4fa5d6d8 100644 --- a/eng/build-job.yml +++ b/eng/build-job.yml @@ -72,9 +72,21 @@ jobs: value: $(buildConfigUpper) - name: officialBuildIdArg value: '' + - name: ibcOptimizeArg + value: '' - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - name: officialBuildIdArg value: '-officialbuildid=$(Build.BuildNumber)' + # IBCMerge is currently Windows-only and x86/x64-only + - ${{ if and(eq(parameters.osGroup, 'Windows_NT'), or(eq(parameters.archType, 'x64'), eq(parameters.archType, 'x86'))) }}: + - name: ibcOptimizeArg + value: '-ibcoptimize' + - name: enforcePgoArg + value: '' + # The EnforcePGO script is only supported on Windows and is not supported on arm or arm64. + - ${{ if and(eq(parameters.buildConfig, 'Release'), and(eq(parameters.osGroup, 'Windows_NT'), not(or(eq(parameters.archType, 'arm64'), eq(parameters.archType, 'arm'))))) }}: + - name: enforcePgoArg + value: '-enforcepgo' steps: @@ -100,8 +112,7 @@ jobs: # Once we are using Arcade, use DotNetCoreSdkDir instead, as we do below. DotNetBootstrapCliTarPath: /dotnet-sdk-freebsd-x64.tar - ${{ if eq(parameters.osGroup, 'Windows_NT') }}: - # TODO: IBCOptimize? EnforcePGO? file logging parameters? - - script: set __TestIntermediateDir=int&&build.cmd $(buildConfig) $(archType) -skiptests -skipbuildpackages $(officialBuildIdArg) + - script: set __TestIntermediateDir=int&&build.cmd $(buildConfig) $(archType) -skiptests -skipbuildpackages $(officialBuildIdArg) $(ibcOptimizeArg) $(enforcePgoArg) displayName: Build product # Sign on Windows diff --git a/src/scripts/pgocheck.py b/src/scripts/pgocheck.py index d408e6eaba..39cb0f2c95 100644 --- a/src/scripts/pgocheck.py +++ b/src/scripts/pgocheck.py @@ -26,7 +26,9 @@ pgo_pattern_str = r'coffgrp(?:\s+[0-9A-F]+){4}\s+\((\S*)\)' pgo_pattern = re.compile(pgo_pattern_str) def was_compiled_with_pgo(filename): - headers = subprocess.check_output(["link", "/dump", "/headers", filename]) + # When running on Python 3, check_output returns a bytes object, which we need to + # decode to a string object. + headers = subprocess.check_output(["link", "/dump", "/headers", filename]).decode('utf-8') match = pgo_pattern.search(headers) |