From 14bfc9e99e6e6903b09480a22c153032be77ae4e Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 11 Nov 2016 17:29:56 +0000 Subject: [PATCH] Add a new optimization option -Og Summary: Just like gcc, we should have the -Og option as more and more software are using it: https://llvm.org/bugs/show_bug.cgi?id=20765 Reviewers: echristo, dberlin, dblaikie, keith.walker.arm, rengolin Subscribers: aprantl, friss, mehdi_amini, RKSimon, probinson, majnemer, cfe-commits Differential Revision: https://reviews.llvm.org/D24998 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286602 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/CommandGuide/clang.rst | 5 ++++- lib/Frontend/CompilerInvocation.cpp | 3 +++ test/Preprocessor/init.c | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/CommandGuide/clang.rst b/docs/CommandGuide/clang.rst index c71544915e..8aade1a6ab 100644 --- a/docs/CommandGuide/clang.rst +++ b/docs/CommandGuide/clang.rst @@ -226,7 +226,7 @@ number of cross compilers, or may only support a native target. Code Generation Options ~~~~~~~~~~~~~~~~~~~~~~~ -.. option:: -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -O, -O4 +.. option:: -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4 Specify which optimization level to use: @@ -252,6 +252,9 @@ Code Generation Options :option:`-Oz` Like :option:`-Os` (and thus :option:`-O2`), but reduces code size further. + :option:`-Og` Like :option:`-O1`. In future versions, this option might + disable different optimizations in order to improve debuggability. + :option:`-O` Equivalent to :option:`-O2`. :option:`-O4` and higher diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 86a3c87ed5..2bdd40cc99 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -98,6 +98,9 @@ static unsigned getOptimizationLevel(ArgList &Args, InputKind IK, if (S == "s" || S == "z" || S.empty()) return 2; + if (S == "g") + return 1; + return getLastArgIntValue(Args, OPT_O, DefaultOpt, Diags); } diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 61640a0fad..d5d83da0fb 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -205,6 +205,12 @@ // O1:#define __OPTIMIZE__ 1 // // +// RUN: %clang_cc1 -Og -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix Og %s +// +// Og-NOT:#define __OPTIMIZE_SIZE__ +// Og :#define __OPTIMIZE__ 1 +// +// // RUN: %clang_cc1 -Os -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix Os %s // // Os:#define __OPTIMIZE_SIZE__ 1 -- 2.40.0