Message ID | 1521735971-22210-1-git-send-email-joshua.henderson@microchip.com |
---|---|
State | Superseded |
Headers | show |
Series | Config.in: add -Ofast option | expand |
Joshua, All, On 2018-03-22 09:26 -0700, Joshua Henderson spake thusly: > -Ofast (introduced in GCC 4.6) It combines the existing optimization level -O3 > with options that can affect standards compliance but result in better optimized > code. For example, -Ofast enables -ffast-math. > > Signed-off-by: Joshua Henderson <joshua.henderson@microchip.com> > --- > Config.in | 9 +++++++++ > package/Makefile.in | 3 +++ > 2 files changed, 12 insertions(+) > > diff --git a/Config.in b/Config.in > index 0002df5..e83ce02 100644 > --- a/Config.in > +++ b/Config.in > @@ -527,6 +527,15 @@ config BR2_OPTIMIZE_S > -ftree-vect-loop-version > This is the default. > > +config BR2_OPTIMIZE_FAST > + bool "optimize for fast" -Ofast was introduced in gcc-4.6, so you need a dependency: depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 Otherwise I'm fine with this. Regards, Yann E. MORIN. > + help > + Optimize for fast. Disregard strict standards compliance. -Ofast > + enables all -O3 optimizations. It also enables optimizations that are > + not valid for all standard-compliant programs. It turns on -ffast-math > + and the Fortran-specific -fstack-arrays, unless -fmax-stack-var-size > + is specified, and -fno-protect-parens. > + > endchoice > > config BR2_GOOGLE_BREAKPAD_ENABLE > diff --git a/package/Makefile.in b/package/Makefile.in > index e387ce6..828e12e 100644 > --- a/package/Makefile.in > +++ b/package/Makefile.in > @@ -128,6 +128,9 @@ endif > ifeq ($(BR2_OPTIMIZE_S),y) > TARGET_OPTIMIZATION = -Os > endif > +ifeq ($(BR2_OPTIMIZE_FAST),y) > +TARGET_OPTIMIZATION = -Ofast > +endif > ifeq ($(BR2_DEBUG_1),y) > TARGET_DEBUGGING = -g1 > endif > -- > 2.7.4 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Hello, On Sun, 25 Mar 2018 10:24:34 +0200, Yann E. MORIN wrote: > > +config BR2_OPTIMIZE_FAST > > + bool "optimize for fast" > > -Ofast was introduced in gcc-4.6, so you need a dependency: > depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 The "odd" thing being that menuconfig is organized as follows: Target options ---> Build options ---> Toolchain ---> The optimization level is selected in "Build options" and the compiler version is basically decided in "Toolchain". So if you select -Ofast in Build options, and then go in Toolchain chose a < 4.6 compiler, your -Ofast selection would disappear. But there's no good way around this, and using gcc < 4.6 is anyway very rare these days, so I also agree that the "depends on" you suggest is what makes the most sense. Thomas
Thomas, All, On 2018-03-25 22:40 +0200, Thomas Petazzoni spake thusly: > On Sun, 25 Mar 2018 10:24:34 +0200, Yann E. MORIN wrote: > > > +config BR2_OPTIMIZE_FAST > > > + bool "optimize for fast" > > > > -Ofast was introduced in gcc-4.6, so you need a dependency: > > depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 > > The "odd" thing being that menuconfig is organized as follows: > > Target options ---> > Build options ---> > Toolchain ---> > > The optimization level is selected in "Build options" and the compiler > version is basically decided in "Toolchain". > > So if you select -Ofast in Build options, and then go in Toolchain > chose a < 4.6 compiler, your -Ofast selection would disappear. Yeah, I know. But, as you ssay: > But there's no good way around this, and using gcc < 4.6 is anyway very ... there's no good solution around this issue, and the case for gcc before 4.6 is rare enough that we don't care abot those poor souls anymore... :-/ > rare these days, so I also agree that the "depends on" you suggest is > what makes the most sense. Was that an Acked-by or a Reviewed-by? ;-) Regards, Yann E. MORIN.
diff --git a/Config.in b/Config.in index 0002df5..e83ce02 100644 --- a/Config.in +++ b/Config.in @@ -527,6 +527,15 @@ config BR2_OPTIMIZE_S -ftree-vect-loop-version This is the default. +config BR2_OPTIMIZE_FAST + bool "optimize for fast" + help + Optimize for fast. Disregard strict standards compliance. -Ofast + enables all -O3 optimizations. It also enables optimizations that are + not valid for all standard-compliant programs. It turns on -ffast-math + and the Fortran-specific -fstack-arrays, unless -fmax-stack-var-size + is specified, and -fno-protect-parens. + endchoice config BR2_GOOGLE_BREAKPAD_ENABLE diff --git a/package/Makefile.in b/package/Makefile.in index e387ce6..828e12e 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -128,6 +128,9 @@ endif ifeq ($(BR2_OPTIMIZE_S),y) TARGET_OPTIMIZATION = -Os endif +ifeq ($(BR2_OPTIMIZE_FAST),y) +TARGET_OPTIMIZATION = -Ofast +endif ifeq ($(BR2_DEBUG_1),y) TARGET_DEBUGGING = -g1 endif
-Ofast (introduced in GCC 4.6) It combines the existing optimization level -O3 with options that can affect standards compliance but result in better optimized code. For example, -Ofast enables -ffast-math. Signed-off-by: Joshua Henderson <joshua.henderson@microchip.com> --- Config.in | 9 +++++++++ package/Makefile.in | 3 +++ 2 files changed, 12 insertions(+)