summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Baladurin <k.baladurin@samsung.com>2019-04-18 12:29:56 +0300
committerGleb Balykov <g.balykov@samsung.com>2020-03-25 15:29:41 +0300
commit9ac48932809e5ed602206f144f404d5089f9d8f3 (patch)
tree8aa86255a00a70b78bd0eecff44e2b4428d48a2c
parenta8344f4f0871f2c5887f6f4f152e61c87b3789db (diff)
downloadcoreclr-9ac48932809e5ed602206f144f404d5089f9d8f3.tar.gz
coreclr-9ac48932809e5ed602206f144f404d5089f9d8f3.tar.bz2
coreclr-9ac48932809e5ed602206f144f404d5089f9d8f3.zip
[Tizen] Enable PGO for Linux/arm
-rw-r--r--.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/clrjit.profdatabin0 -> 949192 bytes
-rw-r--r--.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/coreclr.profdatabin0 -> 36848 bytes
-rwxr-xr-xpackaging/coreclr.spec27
-rw-r--r--pgosupport.cmake4
4 files changed, 27 insertions, 4 deletions
diff --git a/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/clrjit.profdata b/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/clrjit.profdata
new file mode 100644
index 0000000000..5377cc513c
--- /dev/null
+++ b/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/clrjit.profdata
Binary files differ
diff --git a/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/coreclr.profdata b/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/coreclr.profdata
new file mode 100644
index 0000000000..483d897f0f
--- /dev/null
+++ b/.packages/optimization.linux-arm.pgo.coreclr/99.99.99-master-20190912.1/data/coreclr.profdata
Binary files differ
diff --git a/packaging/coreclr.spec b/packaging/coreclr.spec
index 04554c70a3..a7cbbf856c 100755
--- a/packaging/coreclr.spec
+++ b/packaging/coreclr.spec
@@ -2,6 +2,10 @@
%define skipnative 0
%define skipmscorlib 0
+
+%define pgo_instrument 0
+%define pgo_optimize 1
+
%ifarch %{ix86}
%define dotnet_buildtype Release
%endif
@@ -78,6 +82,11 @@ BuildRequires: libopenssl11-64bit
%endif
%endif
+%if 0%{pgo_instrument} || 0%{pgo_optimize}
+BuildRequires: binutils-gold
+BuildRequires: compiler-rt
+%endif
+
%description
The CoreCLR repo contains the complete runtime implementation for .NET Core. It includes RyuJIT, the .NET GC, native interop and many other components. It is cross-platform, with multiple OS and CPU ports in progress.
@@ -181,6 +190,20 @@ export CXXFLAGS+="-fstack-protector-strong"
%endif
%endif
+%if 0%{skipnative}
+%else
+%if 0%{pgo_instrument}
+%define _pgo_flags -pgoinstrument
+%else
+%if 0%{pgo_optimize}
+# pgo optimization is enabled by default
+%define _pgo_flags ""
+%else
+%define _pgo_flags -nopgooptimize
+%endif
+%endif
+%endif
+
%ifarch %{arm}
%define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
%else
@@ -194,7 +217,7 @@ export CXXFLAGS+="-fstack-protector-strong"
# Build native only.
export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
-./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipmscorlib -skipgenerateversion -skipnuget -msbuildonunsupportedplatform cmakeargs "-DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts}
+./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skipmscorlib -skipgenerateversion -skipnuget -msbuildonunsupportedplatform cmakeargs "-DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} %{_pgo_flags}
%endif
%else
%if 0%{skipnative}
@@ -206,7 +229,7 @@ export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
# Build native and mscorlib.
export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
-./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipgenerateversion -skiprestore -skiprestoreoptdata -skipnuget -skipcrossgen -msbuildonunsupportedplatform cmakeargs "-DFEATURE_IBCLOGGER=true -DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts}
+./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skipgenerateversion -skiprestore -skiprestoreoptdata -skipnuget -skipcrossgen -msbuildonunsupportedplatform cmakeargs "-DFEATURE_IBCLOGGER=true -DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} %{_pgo_flags}
%endif
%endif
diff --git a/pgosupport.cmake b/pgosupport.cmake
index dec050033e..514c725f43 100644
--- a/pgosupport.cmake
+++ b/pgosupport.cmake
@@ -22,8 +22,8 @@ function(add_pgo TargetName)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /LTCG /GENPROFILE")
else(WIN32)
if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO)
- target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate)
- set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fuse-ld=gold -fprofile-instr-generate")
+ target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate=/tmp/${TargetName}-%p.profdata)
+ set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fuse-ld=gold -fprofile-instr-generate=/tmp/${TargetName}-%p.profdata")
endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO)
endif(WIN32)
elseif(CLR_CMAKE_PGO_OPTIMIZE)