Enable identical code folding link option

This further reduces the final binary size from 2016216 to 1901528
on Linux. This changes C/C++ semantics and might be incompatible with
third-party code that relies on function pointers comparison, but
that's not the case for GN.

Change-Id: I38e74da3e3e3e2895ef4bda2036e48117cdafe5d
Reviewed-on: https://gn-review.googlesource.com/2240
Commit-Queue: Petr Hosek <phosek@google.com>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/build/gen.py b/build/gen.py
index 3e1630a..7dfdae8 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -269,6 +269,9 @@
       ldflags.append('-Wl,-dead_strip' if is_mac else '-Wl,--gc-sections')
       # Omit all symbol information from the output file.
       ldflags.append('-Wl,-S' if is_mac else '-Wl,-strip-all')
+      # Enable identical code-folding.
+      if is_linux:
+        ldflags.append('-Wl,--icf=all')
 
     cflags.extend([
         '-D_FILE_OFFSET_BITS=64',