Title: [243396] trunk/Source
Revision
243396
Author
krol...@apple.com
Date
2019-03-22 11:56:41 -0700 (Fri, 22 Mar 2019)

Log 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/_javascript_Core:

Tweak _javascript_Core's Base.xcconfig to be more in-line with other
.xcconfig files with regards to LTO settings. However, don't actually
enable LTO for _javascript_Core. LTO is not enabled for _javascript_Core
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:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (243395 => 243396)


--- trunk/Source/_javascript_Core/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/_javascript_Core/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,18 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        Tweak _javascript_Core's Base.xcconfig to be more in-line with other
+        .xcconfig files with regards to LTO settings. However, don't actually
+        enable LTO for _javascript_Core. LTO is not enabled for _javascript_Core
+        due to <rdar://problem/24543547>.
+
+        * Configurations/Base.xcconfig:
+
 2019-03-22  Mark Lam  <mark....@apple.com>
 
         Placate exception check validation in genericTypedArrayViewProtoFuncLastIndexOf().

Modified: trunk/Source/_javascript_Core/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/_javascript_Core/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/_javascript_Core/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -179,17 +179,24 @@
 WK_COCOA_TOUCH_appletvsimulator = cocoatouch;
 WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+// Disable LTO for _javascript_Core, due to <rdar://problem/24543547>. Add back the following line when that issue is resolved.
+// LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
-WK_USER_LTO_MODE_full = NO; // Disable LTO for _javascript_ due to <rdar://problem/24543547>
-WK_USER_LTO_MODE_thin = NO; // Disable LTO for _javascript_ due to <rdar://problem/24543547>
+WK_USER_LTO_MODE_full = YES;
+WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (243395 => 243396)


--- trunk/Source/ThirdParty/ANGLE/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-02-23  Keith Miller  <keith_mil...@apple.com>
 
         Add new mac target numbers

Modified: trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -81,13 +81,19 @@
 ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES = $(ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));
 ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/;
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -94,4 +100,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (243395 => 243396)


--- trunk/Source/ThirdParty/libwebrtc/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-13  Keith Rollin  <krol...@apple.com>
 
         Add support for new StagedFrameworks layout

Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -111,13 +111,19 @@
 WK_INSTALL_PATH_PREFIX = $(WK_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION)$(WK_MACOS_1015)_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH));
 WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_MACOS_SINCE_1015_USE_STAGING_INSTALL_PATH_YES = $(PLATFORM_OOB_SYSTEM_CONTENT_DIR);
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -124,4 +130,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/WTF/ChangeLog (243395 => 243396)


--- trunk/Source/WTF/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WTF/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-22  Tim Horton  <timothy_hor...@apple.com>
 
         Fix the build after r243354

Modified: trunk/Source/WTF/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WTF/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WTF/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -135,13 +135,19 @@
 OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CPLUSPLUSFLAGS);
 OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -148,7 +154,7 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
 
 WTF_INSTALL_PATH_PREFIX = $(WTF_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION));
 WTF_INSTALL_PATH_PREFIX_DEPLOYMENT_YES = $(WTF_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));

Modified: trunk/Source/WebCore/ChangeLog (243395 => 243396)


--- trunk/Source/WebCore/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebCore/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,39 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-22  Ryan Haddad  <ryanhad...@apple.com>
 
         Unreviewed, rolling out r243356.

Modified: trunk/Source/WebCore/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WebCore/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebCore/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2017 Apple Inc. All rights reserved.
+// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -144,25 +144,23 @@
 WK_WEBCORE_DERIVEDSOURCES_INPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebCore/DerivedSources-input.xcfilelist
 WK_WEBCORE_DERIVEDSOURCES_OUTPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebCore/DerivedSources-output.xcfilelist
 
-// Attempting to build WebCore with full LTO for i386 results in the following
-// linker error, so we drop down to "thin" for that architecture if we were to
-// otherwise attempt to use "full".
-//
-// LLVM ERROR: Section too large, can't encode r_address (0x1000216) into 24 bits of scattered relocation entry.
-// clang: error: linker command failed with exit code 1 (use -v to see invocation)
-
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
-WK_USER_LTO_MODE_full[arch=i386] = $(WK_USER_LTO_MODE_thin);
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/WebCore/PAL/ChangeLog (243395 => 243396)


--- trunk/Source/WebCore/PAL/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebCore/PAL/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,37 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-22  Timothy Hatcher  <timo...@apple.com>
 
         Change macosx() to macos() in WK_API... and JSC_API... macros.

Modified: trunk/Source/WebCore/PAL/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WebCore/PAL/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebCore/PAL/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017 Apple Inc. All rights reserved.
+// Copyright (C) 2017-2019 Apple Inc. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -136,25 +136,23 @@
 WK_COCOA_TOUCH_appletvsimulator = cocoatouch;
 WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
 
-// Attempting to build WebCore with full LTO for i386 results in the following
-// linker error, so we drop down to "thin" for that architecture if we were to
-// otherwise attempt to use "full".
-//
-// LLVM ERROR: Section too large, can't encode r_address (0x1000216) into 24 bits of scattered relocation entry.
-// clang: error: linker command failed with exit code 1 (use -v to see invocation)
-
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
-WK_USER_LTO_MODE_full[arch=i386] = $(WK_USER_LTO_MODE_thin);
 WK_USER_LTO_MODE_full = YES;
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/WebInspectorUI/ChangeLog (243395 => 243396)


--- trunk/Source/WebInspectorUI/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebInspectorUI/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-21  Joseph Pecoraro  <pecor...@apple.com>
 
         Web Inspector: Timelines - Cannot export on about:blank - suggested filename containing a colon silently fails

Modified: trunk/Source/WebInspectorUI/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WebInspectorUI/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebInspectorUI/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -108,13 +108,19 @@
 WK_COCOA_TOUCH_appletvsimulator = cocoatouch;
 WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -121,4 +127,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/WebKit/ChangeLog (243395 => 243396)


--- trunk/Source/WebKit/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebKit/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-22  Chris Dumez  <cdu...@apple.com>
 
         Unreviewed build fix after r243388.

Modified: trunk/Source/WebKit/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WebKit/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebKit/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2017 Apple Inc. All rights reserved.
+// Copyright (C) 2010-2019 Apple Inc. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -158,13 +158,19 @@
 WK_WEBKIT_DERIVEDSOURCES_INPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebKit/DerivedSources-input.xcfilelist
 WK_WEBKIT_DERIVEDSOURCES_OUTPUT_XCFILELIST_ADDITIONS = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/WebKit/DerivedSources-output.xcfilelist
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -171,4 +177,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (243395 => 243396)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-21  Andy Estes  <aes...@apple.com>
 
         [iOS] Apple Pay should be available in documents with no user agent scripts

Modified: trunk/Source/WebKitLegacy/mac/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/WebKitLegacy/mac/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/WebKitLegacy/mac/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2017 Apple Inc. All rights reserved.
+// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -136,13 +136,19 @@
 WK_COCOA_TOUCH_appletvsimulator = cocoatouch;
 WK_IS_COCOA_TOUCH = $(WK_NOT_$(WK_EMPTY_$(WK_COCOA_TOUCH)));
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -149,4 +155,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);

Modified: trunk/Source/bmalloc/ChangeLog (243395 => 243396)


--- trunk/Source/bmalloc/ChangeLog	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/bmalloc/ChangeLog	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,3 +1,34 @@
+2019-03-22  Keith Rollin  <krol...@apple.com>
+
+        Enable ThinLTO support in Production builds
+        https://bugs.webkit.org/show_bug.cgi?id=190758
+        <rdar://problem/45413233>
+
+        Reviewed by Daniel Bates.
+
+        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:
+
 2019-03-21  Michael Saboff  <msab...@apple.com>
 
         [BMalloc] No need to delay deallocating chunks based on recent use

Modified: trunk/Source/bmalloc/Configurations/Base.xcconfig (243395 => 243396)


--- trunk/Source/bmalloc/Configurations/Base.xcconfig	2019-03-22 18:49:04 UTC (rev 243395)
+++ trunk/Source/bmalloc/Configurations/Base.xcconfig	2019-03-22 18:56:41 UTC (rev 243396)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2017 Apple Inc. All rights reserved.
+// Copyright (C) 2009-2019 Apple Inc. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -133,13 +133,19 @@
 BMALLOC_INSTALL_PATH_PREFIX_DEPLOYMENT_YES = $(BMALLOC_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));
 BMALLOC_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/;
 
-LLVM_LTO = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
+// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
+LLVM_LTO = NO;
+LLVM_LTO[sdk=macosx*] = $(WK_LLVM_LTO_$(WK_XCODE_SUPPORTS_LTO));
 WK_LLVM_LTO_NO = NO;
 WK_LLVM_LTO_YES = $(WK_USER_LTO_MODE);
 
-WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_9_$(XCODE_VERSION_MAJOR)));
-WK_XCODE_VERSION_BEFORE_9_0800 = YES;
-WK_XCODE_VERSION_BEFORE_9_0700 = YES;
+WK_XCODE_SUPPORTS_LTO = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_10_2_$(XCODE_VERSION_MAJOR)));
+WK_XCODE_VERSION_BEFORE_10_2_0700 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0800 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_0900 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000 = $(WK_XCODE_VERSION_BEFORE_10_2_1000_$(XCODE_VERSION_MINOR));
+WK_XCODE_VERSION_BEFORE_10_2_1000_1000 = YES;
+WK_XCODE_VERSION_BEFORE_10_2_1000_1010 = YES;
 
 WK_USER_LTO_MODE = $(WK_USER_LTO_MODE_$(WK_LTO_MODE));
 WK_USER_LTO_MODE_full = YES;
@@ -146,4 +152,4 @@
 WK_USER_LTO_MODE_thin = YES_THIN;
 WK_USER_LTO_MODE_none = NO;
 WK_USER_LTO_MODE_ = $(WK_DEFAULT_LTO_MODE);
-WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
+WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to