⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243396 in webkit


Ignore:
Timestamp:
Mar 22, 2019, 11:56:41 AM (7 years ago)
Author:
Keith Rollin
Message:

Enable ThinLTO support in Production builds
https://bugs.webkit.org/show_bug.cgi?id=190758
<rdar://problem/45413233>

Reviewed by Daniel Bates.

Source/bmalloc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

Tweak JavaScriptCore's Base.xcconfig to be more in-line with other
.xcconfig files with regards to LTO settings. However, don't actually
enable LTO for JavaScriptCore. LTO is not enabled for JavaScriptCore
due to <rdar://problem/24543547>.

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/WebCore:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.

No new tests since there should be no observable behavior difference.

  • Configurations/Base.xcconfig:

Source/WebCore/PAL:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/WebKit:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:

Source/WTF:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

  • If building with make, specify WK_LTO_MODE={none,thin,full} on the command line.
  • If building with build-webkit, specify --lto-mode={none,thin,full} on the command line.
  • If building with build-root, specify --lto={none,thin,full} on the command line.
  • If building with Xcode, create a LocalOverrides.xcconfig file at the top level of your repository directory (if needed) and define WK_LTO_MODE to full, thin, or none.
  • Configurations/Base.xcconfig:
Location:
trunk/Source
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r243391 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Tweak JavaScriptCore's Base.xcconfig to be more in-line with other
     10        .xcconfig files with regards to LTO settings. However, don't actually
     11        enable LTO for JavaScriptCore. LTO is not enabled for JavaScriptCore
     12        due to <rdar://problem/24543547>.
     13
     14        * Configurations/Base.xcconfig:
     15
    1162019-03-22  Mark Lam  <mark.lam@apple.com>
    217
  • trunk/Source/JavaScriptCore/Configurations/Base.xcconfig

    r242918 r243396  
    180180WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
    181181
    182 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     182// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     183LLVM_LTO = NO;
     184// Disable LTO for JavaScriptCore, due to <rdar://problem/24543547>. Add back the following line when that issue is resolved.
     185// LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    183186WK_LLVM_LTO_NO = NO;
    184187WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    185188
    186 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    187 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    188 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     189WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     190WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     191WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     192WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     193WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     194WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     195WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    189196
    190197WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
    191 WK_USER_LTO_MODE_full = NO; // Disable LTO for JavaScript due to <rdar://problem/24543547>
    192 WK_USER_LTO_MODE_thin = NO; // Disable LTO for JavaScript due to <rdar://problem/24543547>
     198WK_USER_LTO_MODE_full = YES;
     199WK_USER_LTO_MODE_thin = YES_THIN;
    193200WK_USER_LTO_MODE_none = NO;
    194201WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    195 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     202WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/ThirdParty/ANGLE/ChangeLog

    r241990 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-02-23  Keith Miller  <keith_miller@apple.com>
    233
  • trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig

    r241990 r243396  
    8282ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/;
    8383
    84 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     84// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     85LLVM_LTO = NO;
     86LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    8587WK_LLVM_LTO_NO = NO;
    8688WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    8789
    88 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    89 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    90 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     90WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     91WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     92WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     93WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     94WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     95WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     96WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    9197
    9298WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    95101WK_USER_LTO_MODE_none = NO;
    96102WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    97 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     103WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/ThirdParty/libwebrtc/ChangeLog

    r242918 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-13  Keith Rollin  <krollin@apple.com>
    233
  • trunk/Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig

    r242918 r243396  
    112112WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_MACOS_SINCE_1015_USE_STAGING_INSTALL_PATH_YES = $(PLATFORM_OOB_SYSTEM_CONTENT_DIR);
    113113
    114 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     114// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     115LLVM_LTO = NO;
     116LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    115117WK_LLVM_LTO_NO = NO;
    116118WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    117119
    118 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    119 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    120 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     120WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     121WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     122WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     123WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     124WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     125WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     126WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    121127
    122128WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    125131WK_USER_LTO_MODE_none = NO;
    126132WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    127 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     133WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/WTF/ChangeLog

    r243382 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-22  Tim Horton  <timothy_horton@apple.com>
    233
  • trunk/Source/WTF/Configurations/Base.xcconfig

    r242918 r243396  
    136136OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
    137137
    138 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     138// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     139LLVM_LTO = NO;
     140LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    139141WK_LLVM_LTO_NO = NO;
    140142WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    141143
    142 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    143 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    144 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     144WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     145WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     146WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     147WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     148WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     149WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     150WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    145151
    146152WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    149155WK_USER_LTO_MODE_none = NO;
    150156WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    151 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     157WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
    152158
    153159WTF_INSTALL_PATH_PREFIX = $(WTF_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION));
  • trunk/Source/WebCore/ChangeLog

    r243383 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        Removed the conditionals that disabled LTO on 32-bit systems since we
     19        no longer build for those.
     20
     21        To change the LTO setting when building locally:
     22
     23        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     24          command line.
     25        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     26          on the command line.
     27        - If building with `build-root`, specify --lto={none,thin,full} on the
     28          command line.
     29        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     30          top level of your repository directory (if needed) and define
     31          WK_LTO_MODE to full, thin, or none.
     32
     33        No new tests since there should be no observable behavior difference.
     34
     35        * Configurations/Base.xcconfig:
     36
    1372019-03-22  Ryan Haddad  <ryanhaddad@apple.com>
    238
  • trunk/Source/WebCore/Configurations/Base.xcconfig

    r241990 r243396  
    1 // Copyright (C) 2009-2017 Apple Inc. All rights reserved.
     1// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
    22//
    33// Redistribution and use in source and binary forms, with or without
     
    145145WK_WEBCORE_DERIVEDSOURCES_OUTPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebCore/DerivedSources-output.xcfilelist
    146146
    147 // Attempting to build WebCore with full LTO for i386 results in the following
    148 // linker error, so we drop down to "thin" for that architecture if we were to
    149 // otherwise attempt to use "full".
    150 //
    151 // LLVM ERROR: Section too large, can't encode r_address (0x1000216) into 24 bits of scattered relocation entry.
    152 // clang: error: linker command failed with exit code 1 (use -v to see invocation)
    153 
    154 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     147// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     148LLVM_LTO = NO;
     149LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    155150WK_LLVM_LTO_NO = NO;
    156151WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    157152
    158 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    159 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    160 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     153WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     154WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     155WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     156WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     157WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     158WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     159WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    161160
    162161WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
    163162WK_USER_LTO_MODE_full = YES;
    164 WK_USER_LTO_MODE_full[arch=i386] = $(WK_USER_LTO_MODE_thin);
    165163WK_USER_LTO_MODE_thin = YES_THIN;
    166164WK_USER_LTO_MODE_none = NO;
    167165WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    168 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     166WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/WebCore/PAL/ChangeLog

    r243376 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        Removed the conditionals that disabled LTO on 32-bit systems since we
     19        no longer build for those.
     20
     21        To change the LTO setting when building locally:
     22
     23        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     24          command line.
     25        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     26          on the command line.
     27        - If building with `build-root`, specify --lto={none,thin,full} on the
     28          command line.
     29        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     30          top level of your repository directory (if needed) and define
     31          WK_LTO_MODE to full, thin, or none.
     32
     33        * Configurations/Base.xcconfig:
     34
    1352019-03-22  Timothy Hatcher  <timothy@apple.com>
    236
  • trunk/Source/WebCore/PAL/Configurations/Base.xcconfig

    r241990 r243396  
    1 // Copyright (C) 2017 Apple Inc. All rights reserved.
     1// Copyright (C) 2017-2019 Apple Inc. All rights reserved.
    22//
    33// Redistribution and use in source and binary forms, with or without
     
    137137WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
    138138
    139 // Attempting to build WebCore with full LTO for i386 results in the following
    140 // linker error, so we drop down to "thin" for that architecture if we were to
    141 // otherwise attempt to use "full".
    142 //
    143 // LLVM ERROR: Section too large, can't encode r_address (0x1000216) into 24 bits of scattered relocation entry.
    144 // clang: error: linker command failed with exit code 1 (use -v to see invocation)
    145 
    146 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     139// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     140LLVM_LTO = NO;
     141LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    147142WK_LLVM_LTO_NO = NO;
    148143WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    149144
    150 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    151 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    152 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     145WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     146WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     147WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     148WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     149WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     150WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     151WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    153152
    154153WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
    155 WK_USER_LTO_MODE_full[arch=i386] = $(WK_USER_LTO_MODE_thin);
    156154WK_USER_LTO_MODE_full = YES;
    157155WK_USER_LTO_MODE_thin = YES_THIN;
    158156WK_USER_LTO_MODE_none = NO;
    159157WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    160 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     158WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/WebInspectorUI/ChangeLog

    r243355 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-21  Joseph Pecoraro  <pecoraro@apple.com>
    233
  • trunk/Source/WebInspectorUI/Configurations/Base.xcconfig

    r242918 r243396  
    109109WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
    110110
    111 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     111// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     112LLVM_LTO = NO;
     113LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    112114WK_LLVM_LTO_NO = NO;
    113115WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    114116
    115 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    116 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    117 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     117WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     118WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     119WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     120WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     121WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     122WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     123WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    118124
    119125WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    122128WK_USER_LTO_MODE_none = NO;
    123129WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    124 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     130WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/WebKit/ChangeLog

    r243395 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-22  Chris Dumez  <cdumez@apple.com>
    233
  • trunk/Source/WebKit/Configurations/Base.xcconfig

    r241990 r243396  
    1 // Copyright (C) 2010-2017 Apple Inc. All rights reserved.
     1// Copyright (C) 2010-2019 Apple Inc. All rights reserved.
    22//
    33// Redistribution and use in source and binary forms, with or without
     
    159159WK_WEBKIT_DERIVEDSOURCES_OUTPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebKit/DerivedSources-output.xcfilelist
    160160
    161 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     161// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     162LLVM_LTO = NO;
     163LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    162164WK_LLVM_LTO_NO = NO;
    163165WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    164166
    165 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    166 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    167 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     167WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     168WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     169WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     170WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     171WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     172WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     173WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    168174
    169175WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    172178WK_USER_LTO_MODE_none = NO;
    173179WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    174 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     180WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r243324 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-21  Andy Estes  <aestes@apple.com>
    233
  • trunk/Source/WebKitLegacy/mac/Configurations/Base.xcconfig

    r241990 r243396  
    1 // Copyright (C) 2009-2017 Apple Inc. All rights reserved.
     1// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
    22//
    33// Redistribution and use in source and binary forms, with or without
     
    137137WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
    138138
    139 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     139// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     140LLVM_LTO = NO;
     141LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    140142WK_LLVM_LTO_NO = NO;
    141143WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    142144
    143 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    144 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    145 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     145WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     146WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     147WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     148WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     149WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     150WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     151WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    146152
    147153WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    150156WK_USER_LTO_MODE_none = NO;
    151157WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    152 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     158WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
  • trunk/Source/bmalloc/ChangeLog

    r243389 r243396  
     12019-03-22  Keith Rollin  <krollin@apple.com>
     2
     3        Enable ThinLTO support in Production builds
     4        https://bugs.webkit.org/show_bug.cgi?id=190758
     5        <rdar://problem/45413233>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Enable building with Thin LTO in Production when using Xcode 10.2 or
     10        later. This change results in a 1.45% progression in PLT5. Full
     11        Production build times increase about 2-3%. Incremental build times
     12        are more severely affected, and so LTO is not enabled for local
     13        engineering builds.
     14
     15        LTO is enabled only on macOS for now, until rdar://problem/49013399,
     16        which affects ARM builds, is fixed.
     17
     18        To change the LTO setting when building locally:
     19
     20        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
     21          command line.
     22        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
     23          on the command line.
     24        - If building with `build-root`, specify --lto={none,thin,full} on the
     25          command line.
     26        - If building with Xcode, create a LocalOverrides.xcconfig file at the
     27          top level of your repository directory (if needed) and define
     28          WK_LTO_MODE to full, thin, or none.
     29
     30        * Configurations/Base.xcconfig:
     31
    1322019-03-21  Michael Saboff  <msaboff@apple.com>
    233
  • trunk/Source/bmalloc/Configurations/Base.xcconfig

    r241990 r243396  
    1 // Copyright (C) 2009-2017 Apple Inc. All rights reserved.
     1// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
    22//
    33// Redistribution and use in source and binary forms, with or without
     
    134134BMALLOC_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/;
    135135
    136 LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
     136// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
     137LLVM_LTO = NO;
     138LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
    137139WK_LLVM_LTO_NO = NO;
    138140WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
    139141
    140 WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
    141 WK_XCODE_VERSION_BEFORE_9_0800 = YES;
    142 WK_XCODE_VERSION_BEFORE_9_0700 = YES;
     142WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
     143WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
     144WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
     145WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
     146WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
     147WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
     148WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
    143149
    144150WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
     
    147153WK_USER_LTO_MODE_none = NO;
    148154WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
    149 WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
     155WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
Note: See TracChangeset for help on using the changeset viewer.