From ea694e2b138d2f991989e09fc0e964fec3587b5f Mon Sep 17 00:00:00 2001 From: Jesse Chan Date: Thu, 22 Apr 2021 19:41:09 +0800 Subject: [PATCH] tools: disable LTO for "v8_cppgc_shared" target "PushAllRegistersAndIterateStack" is implemented in assembly and called from "stack.cc" via 'extern "C"'. [1] However, LTO does not work well with symbol usage from assembly. [2] This change workarounds the issue by disabling LTO for the target. With GCC 10 and "./configure --enable-lto", compilation succeeds after this change. [1] v8/v8@c10863153 [2] https://gcc.gnu.org/wiki/LinkTimeOptimizationFAQ#Symbol_usage_from_assembly_language Refs: #35957 Refs: #38335 Signed-off-by: Jesse Chan --- tools/v8_gypfiles/v8.gyp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp index ccb5984f47d..377e12d1fdc 100644 --- a/tools/v8_gypfiles/v8.gyp +++ b/tools/v8_gypfiles/v8.gyp @@ -1378,6 +1378,9 @@ '<(V8_ROOT)/src/heap/base/worklist.h', ], 'conditions': [ + ['enable_lto=="true"', { + 'cflags_cc': [ '-fno-lto' ], + }], ['clang or OS!="win"', { 'conditions': [ ['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {