Date: Wed, 31 Oct 2007 10:02:56 -0400 From: "Josh Carroll" <josh.carroll@gmail.com> To: "Kris Kennaway" <kris@freebsd.org> Cc: freebsd-current@freebsd.org, "Stephan F. Yaraghchi" <stephan@yaraghchi.org> Subject: Re: loader breaks with -O2 optimizations Message-ID: <8cb6106e0710310702w774c3c39sdcc9bf4fcf87d043@mail.gmail.com> In-Reply-To: <47284E4F.5030008@FreeBSD.org> References: <25f52a3d0710300732x425f0c45vde1a29361096c018@mail.gmail.com> <47284E4F.5030008@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Maybe, what happens if you use just -O2 -pipe? -funroll-loops is not an
> appropriate thing to be using globally anyway, unless your intention is
> to randomly make some code slower.
I encountered the same thing in 7.0-BETA1 and resolved it with an edit
to make.conf, specifically:
.if ! ${.CURDIR:M*/boot/i386/boot2*}
CFLAGS+=-O2 -pipe
CXXFLAGS+=-O2 -pipe
.endif
That way, everything else in world is built with -O2 (which I have
never had a problem with, by the way), but loader's CFLAGS are
retained.
The crux of the problem is that gcc takes the LAST -O option as the
effective one. That is:
gcc -Os ... -O2
is the equivalent of:
gcc -O2 ...
Which is exactly what's happening in this case (the loader Makefile
sets CFLAGS to include -Os to optimize for size).
Short of finding a way to prepend to CFLAGS so that a Makefile's
CFLAGS are appended to what is defined in make.conf, I don't see
another way around this. The make.conf hack seems to work, though.
Regards,
Josh
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8cb6106e0710310702w774c3c39sdcc9bf4fcf87d043>
