From 5b07e304088582b9fae76a8f96ca5bfe21d9d99f Mon Sep 17 00:00:00 2001 From: David Major Date: Tue, 12 Feb 2019 22:24:45 +0000 Subject: [PATCH] [gn build] Separate debug and optimization settings This patch adds an `is_optimized` variable, orthogonal to `is_debug`, to allow for a gn analogue to `RelWithDebInfo` builds. As part of this we'll want to explicitly enable GC+ICF, for the sake of `is_debug && is_optimized` builds. The flags normally default to true except that if you pass `/DEBUG` they default to false. Differential Revision: https://reviews.llvm.org/D58075 llvm-svn: 353888 --- llvm/utils/gn/build/BUILD.gn | 10 ++++++++-- llvm/utils/gn/build/buildflags.gni | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/llvm/utils/gn/build/BUILD.gn b/llvm/utils/gn/build/BUILD.gn index e323f99ac659..91ea275b3fe9 100644 --- a/llvm/utils/gn/build/BUILD.gn +++ b/llvm/utils/gn/build/BUILD.gn @@ -23,7 +23,8 @@ config("compiler_defaults") { if (host_os != "win") { if (is_debug) { cflags += [ "-g" ] - } else { + } + if (is_optimized) { cflags += [ "-O3" ] } cflags += [ "-fdiagnostics-color" ] @@ -39,11 +40,16 @@ config("compiler_defaults") { "/FS", ] ldflags += [ "/DEBUG" ] - } else { + } + if (is_optimized) { cflags += [ "/O2", "/Zc:inline", ] + ldflags += [ + "/OPT:REF", + "/OPT:ICF", + ] } defines += [ "_CRT_SECURE_NO_DEPRECATE", diff --git a/llvm/utils/gn/build/buildflags.gni b/llvm/utils/gn/build/buildflags.gni index a28b788418da..4dcdc962b7d1 100644 --- a/llvm/utils/gn/build/buildflags.gni +++ b/llvm/utils/gn/build/buildflags.gni @@ -1,10 +1,13 @@ declare_args() { - # Whether to build with debug information and without optimizations. + # Whether to build with debug information. is_debug = false } # args that depend on other args must live in a later declare_args() block. declare_args() { + # Whether to build with optimizations. + is_optimized = !is_debug + # Whether to enable assertions. llvm_enable_assertions = true }