From aec21acbdfbfffee60fada405d870d63867cc381 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 25 Jun 2024 20:40:03 +0200 Subject: [PATCH] LTO --- .github/workflows/osrm-backend.yml | 244 +++++++++++++++-------------- CMakeLists.txt | 2 +- scripts/ci/windows-build.bat | 4 +- 3 files changed, 128 insertions(+), 122 deletions(-) diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index f6840160a..17876ec85 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -162,137 +162,137 @@ jobs: docker stop osrm-container build-test-publish: - # needs: format-taginfo-docs + needs: format-taginfo-docs strategy: matrix: include: - # - name: gcc-13-debug-cov - # continue-on-error: false - # node: 20 - # runs-on: ubuntu-24.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: gcc-13 - # CUCUMBER_TIMEOUT: 20000 - # CXXCOMPILER: g++-13 - # ENABLE_COVERAGE: ON + - name: gcc-13-debug-cov + continue-on-error: false + node: 20 + runs-on: ubuntu-24.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: gcc-13 + CUCUMBER_TIMEOUT: 20000 + CXXCOMPILER: g++-13 + ENABLE_COVERAGE: ON - # - name: clang-15-debug-asan-ubsan - # continue-on-error: false - # node: 20 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: clang-15 - # CUCUMBER_TIMEOUT: 20000 - # CXXCOMPILER: clang++-15 - # ENABLE_SANITIZER: ON - # TARGET_ARCH: x86_64-asan-ubsan - # OSRM_CONNECTION_RETRIES: 10 - # OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5 + - name: clang-15-debug-asan-ubsan + continue-on-error: false + node: 20 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: clang-15 + CUCUMBER_TIMEOUT: 20000 + CXXCOMPILER: clang++-15 + ENABLE_SANITIZER: ON + TARGET_ARCH: x86_64-asan-ubsan + OSRM_CONNECTION_RETRIES: 10 + OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5 - # - name: clang-15-release - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-15 - # CXXCOMPILER: clang++-15 - # CUCUMBER_TIMEOUT: 60000 + - name: clang-15-release + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-15 + CXXCOMPILER: clang++-15 + CUCUMBER_TIMEOUT: 60000 - # - name: clang-15-debug - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: clang-15 - # CXXCOMPILER: clang++-15 - # CUCUMBER_TIMEOUT: 60000 + - name: clang-15-debug + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: clang-15 + CXXCOMPILER: clang++-15 + CUCUMBER_TIMEOUT: 60000 - # - name: clang-18-debug-clang-tidy - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-24.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Debug - # CCOMPILER: clang-18 - # CXXCOMPILER: clang++-18 - # CUCUMBER_TIMEOUT: 60000 - # ENABLE_CLANG_TIDY: ON + - name: clang-18-debug-clang-tidy + continue-on-error: false + node: 18 + runs-on: ubuntu-24.04 + BUILD_TOOLS: ON + BUILD_TYPE: Debug + CCOMPILER: clang-18 + CXXCOMPILER: clang++-18 + CUCUMBER_TIMEOUT: 60000 + ENABLE_CLANG_TIDY: ON - # - name: clang-14-release - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-14 - # CXXCOMPILER: clang++-14 - # CUCUMBER_TIMEOUT: 60000 + - name: clang-14-release + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-14 + CXXCOMPILER: clang++-14 + CUCUMBER_TIMEOUT: 60000 - # - name: clang-13-release - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-13 - # CXXCOMPILER: clang++-13 - # CUCUMBER_TIMEOUT: 60000 + - name: clang-13-release + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-13 + CXXCOMPILER: clang++-13 + CUCUMBER_TIMEOUT: 60000 - # - name: conan-linux-debug-asan-ubsan - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-15 - # CXXCOMPILER: clang++-15 - # ENABLE_CONAN: ON - # ENABLE_SANITIZER: ON + - name: conan-linux-debug-asan-ubsan + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-15 + CXXCOMPILER: clang++-15 + ENABLE_CONAN: ON + ENABLE_SANITIZER: ON - # - name: conan-linux-release - # continue-on-error: false - # node: 18 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: clang-15 - # CXXCOMPILER: clang++-15 - # ENABLE_CONAN: ON + - name: conan-linux-release + continue-on-error: false + node: 18 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: clang-15 + CXXCOMPILER: clang++-15 + ENABLE_CONAN: ON - # - name: gcc-14-release - # continue-on-error: false - # node: 20 - # runs-on: ubuntu-24.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-14 - # CXXCOMPILER: g++-14 - # CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' + - name: gcc-14-release + continue-on-error: false + node: 20 + runs-on: ubuntu-24.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-14 + CXXCOMPILER: g++-14 + CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' - # - name: gcc-13-release - # continue-on-error: false - # node: 20 - # runs-on: ubuntu-24.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-13 - # CXXCOMPILER: g++-13 - # CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' + - name: gcc-13-release + continue-on-error: false + node: 20 + runs-on: ubuntu-24.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-13 + CXXCOMPILER: g++-13 + CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' - # - name: gcc-12-release - # continue-on-error: false - # node: 20 - # runs-on: ubuntu-22.04 - # BUILD_TOOLS: ON - # BUILD_TYPE: Release - # CCOMPILER: gcc-12 - # CXXCOMPILER: g++-12 - # CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' + - name: gcc-12-release + continue-on-error: false + node: 20 + runs-on: ubuntu-22.04 + BUILD_TOOLS: ON + BUILD_TYPE: Release + CCOMPILER: gcc-12 + CXXCOMPILER: g++-12 + CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' - name: conan-linux-release-node build_node_package: true @@ -304,6 +304,7 @@ jobs: CXXCOMPILER: clang++-13 ENABLE_CONAN: ON NODE_PACKAGE_TESTS_ONLY: ON + ENABLE_LTO: ON - name: conan-linux-debug-node build_node_package: true @@ -315,6 +316,7 @@ jobs: CXXCOMPILER: clang++-13 ENABLE_CONAN: ON NODE_PACKAGE_TESTS_ONLY: ON + ENABLE_LTO: ON - name: conan-macos-x64-release-node build_node_package: true @@ -327,6 +329,7 @@ jobs: CUCUMBER_TIMEOUT: 60000 ENABLE_ASSERTIONS: ON ENABLE_CONAN: ON + ENABLE_LTO: ON - name: conan-macos-arm64-release-node build_node_package: true @@ -339,6 +342,7 @@ jobs: CUCUMBER_TIMEOUT: 60000 ENABLE_ASSERTIONS: ON ENABLE_CONAN: ON + ENABLE_LTO: ON name: ${{ matrix.name}} continue-on-error: ${{ matrix.continue-on-error }} @@ -361,6 +365,7 @@ jobs: TARGET_ARCH: ${{ matrix.TARGET_ARCH }} OSRM_CONNECTION_RETRIES: ${{ matrix.OSRM_CONNECTION_RETRIES }} OSRM_CONNECTION_EXP_BACKOFF_COEF: ${{ matrix.OSRM_CONNECTION_EXP_BACKOFF_COEF }} + ENABLE_LTO: ${{ matrix.ENABLE_LTO }} steps: - uses: actions/checkout@v4 - name: Build machine architecture @@ -521,7 +526,8 @@ jobs: -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} \ -DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \ -DENABLE_CCACHE=ON \ - -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} + -DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \ + -DCMAKE_ENABLE_LTO=${ENABLE_LTO:-OFF} make --jobs=${JOBS} if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" ]]; then @@ -709,7 +715,7 @@ jobs: run: | mkdir base/build cd base/build - cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release .. + cmake -DENABLE_CONAN=ON -DENABLE_LTO=ON -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) make -j$(nproc) benchmarks cd .. @@ -718,7 +724,7 @@ jobs: run: | mkdir -p pr/build cd pr/build - cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release .. + cmake -DENABLE_CONAN=ON -DENABLE_LTO=ON -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) make -j$(nproc) benchmarks cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index 93ec236a3..0321cce67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ option(ENABLE_ASSERTIONS "Use assertions in release mode" OFF) option(ENABLE_DEBUG_LOGGING "Use debug logging in release mode" OFF) option(ENABLE_COVERAGE "Build with coverage instrumentalisation" OFF) option(ENABLE_SANITIZER "Use memory sanitizer for Debug build" OFF) -option(ENABLE_LTO "Use LTO if available" ON) +option(ENABLE_LTO "Use LTO if available" OFF) option(ENABLE_FUZZING "Fuzz testing using LLVM's libFuzzer" OFF) option(ENABLE_NODE_BINDINGS "Build NodeJs bindings" OFF) option(ENABLE_CLANG_TIDY "Enables clang-tidy checks" OFF) diff --git a/scripts/ci/windows-build.bat b/scripts/ci/windows-build.bat index a74bdd2c2..7b3f86146 100644 --- a/scripts/ci/windows-build.bat +++ b/scripts/ci/windows-build.bat @@ -11,7 +11,7 @@ mkdir build IF %ERRORLEVEL% NEQ 0 GOTO ERROR cd build IF %ERRORLEVEL% NEQ 0 GOTO ERROR -cmake -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "Visual Studio 17 2022" .. +cmake -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON -DENABLE_LTO=ON -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "Visual Studio 17 2022" .. IF %ERRORLEVEL% NEQ 0 GOTO ERROR msbuild OSRM.sln ^ @@ -62,7 +62,7 @@ SET test_region_ch=ch\monaco SET test_region_corech=corech\monaco SET test_region_mld=mld\monaco SET test_osm=%test_region%.osm.pbf -COPY %PROJECT_DIR%\test\data\%test_region%.osm.pbf %test_osm% +COPY %PROJECT_DIR%\test\data\%test_region%.osm.pbf %test_osm% %CONFIGURATION%\osrm-extract.exe -p %PROJECT_DIR%\profiles\car.lua %test_osm% IF %ERRORLEVEL% NEQ 0 GOTO ERROR