clock reverts to epoch on boot?
Vinny Abello
vinny at tellurian.com
Tue Feb 14 12:09:25 PST 2006
At 12:29 PM 2/14/2006, Oliver Fromme wrote:
>Vinny Abello <vinny at tellurian.com> wrote:
> > Oliver Fromme wrote:
> > > Vinny Abello <vinny at tellurian.com> wrote:
> > > > CFLAGS= -O2 -pipe
> > > > COPTFLAGS= -O -pipe
> > >
> > > I recommend not to overide those two at all. Especially
> > > your CFLAGS setting might generate broken code because
> > > there are sources which are not aliasing-clean, which can
> > > break with any optimizations beyond -O, unless you also
> > > specify -fno-strict-aliasing.
> >
> > Really? Are there any current examples of such? I've never run into
> > this myself, but I'm sure you wouldn't be recommending it if it
> wasn't true.
>
>XEmacs, PostgreSQL, freetype2 and others. Whether you get
>problems or not depends on a lot of things. If you're
>lucky, it works. On platforms with only few registers
>(like i386) it's more likely to work, because gcc has less
>possibilities to exploit aliasing optimizations.
>
> > What about -funroll-loops and -ffast-math? I see a lot of people
> > using those options in general as well.
>
>You can use them. They shouldn't cause harm, but in many
>cases -funroll-loops makes the code slower, because it
>increases the size of the code so it decreases the efficiency
>of the processor caches.
>
> > I actually found one reference from someone claiming -O3 is good in
> > CFLAGS and -O2 for COPTFLAGS although I have read a lot of things
> > about why not to use -O3 in CFLAGS and that it's not supported at all
> > with buildworld, so I'm not really interested in using that at all,
> > even with ports.
>
>I probably didn't explain it clearly enough. You can use
>-O2 (and probably also -O3, but I haven't tried that).
>
>In former times, the gcc optimizer was known to have bugs
>that could cause bad code to be generated. As far as I
>know, those bugs have been fixed in current versions of
>gcc.
>
>However, -O2 also includes -fstrict-aliasing. Strict ali-
>asing enables a special optimization which lets the compiler
>assume that pointers with incompatible types never point
>to the same target. For example, in the function
>
> void func (int *foo, short *bar)
>
>it is legal for the compiler (according to ANSI C) to assume
>that the two pointers may not alias. But a lot of programs
>don't fulfill that assumption. It's a problem with those
>sources, not with gcc.
>
>Therefore the default CFLAGS include -fno-strict-aliasing,
>which disables that kind of optimizations in gcc. With
>that option, gcc always assumes that pointers may alias.
>
>If you override CFLAGS in your /etc/make.conf by specifying
>-O2 (or -O3 or -Os) but not also specifying -fno-strict-ali-
>asing, you run the risk of enabling bugs in programs.
>
> > > The defaults are "-O2 -fno-strict-aliasing -pipe" for
> > > CFLAGS, and for COPTFLAGS it's "-O -pipe" if DEBUG is
> > > defined (the default in GENERIC), otherwise "-O2 -pipe
> > > -fno-strict-aliasing".
> >
> > Is -O2 safe on COPTFLAGS if you have debugging disabled in the
> > KERNCONF?
>
>Yes, I think so. But when you disable DEBUG, then -O2 is
>the default anyway ("-O2 -pipe -fno-strict-aliasing", to be
>exact), so there's no point in overriding it in make.conf.
>
>That's the reason why I recommend not to mess with CFLAGS
>and COPTFLAGS in /etc/make.conf. The defaults provided by
>the FreeBSD developers are usually the best optimization
>possible without creating potentially broken binaries.
>
>Best regards
> Oliver
Thanks for all of your excellent explanations, Oliver. Highly appreciated. :)
Vinny Abello
Network Engineer
Server Management
vinny at tellurian.com
(973)300-9211 x 125
(973)940-6125 (Direct)
PGP Key Fingerprint: 3BC5 9A48 FC78 03D3 82E0 E935 5325 FBCB 0100 977A
Tellurian Networks - The Ultimate Internet Connection
http://www.tellurian.com (888)TELLURIAN
"Courage is resistance to fear, mastery of fear - not absence of
fear" -- Mark Twain
More information about the freebsd-stable
mailing list