[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: My Emacs unicode 2 crash again when I do some *Replace String (M-%)*

From: Eli Zaretskii
Subject: Re: My Emacs unicode 2 crash again when I do some *Replace String (M-%)*, I give the debug informations under gdb in the attachments.
Date: Mon, 12 Mar 2007 23:50:16 +0200

> Cc: address@hidden
> From: Stefan Monnier <address@hidden>
> Date: Mon, 12 Mar 2007 10:23:26 -0400
> > I disagree.  -O1 selects optimizations based on how expensive they are
> > at compile time, not on how badly they disrupt debugging.
> Really?  Says who?

Says the GCC manual:

     With `-O', the compiler tries to reduce code size and execution
     time, without performing any optimizations that take a great deal
     of compilation time.

But you don't need to believe this if you don't want to, just look at
the options enabled by -O2 and see how many of them have no relation
to debuggability whatsoever.  They are related to how expensive
(i.e. time-consuming and/or memory-consuming) those optimizations are
for the optimizer.

> I don't know if there's an official definition of what -O should be, but
> AFAICT all it says is "please optimize this" in a very generic sense.
> I.e. in a sense which implies that the user doesn't want to waste time
> thinking about details such as which specific optimizations to enable and
> which to disable.  It should "just work", so it should be as good as
> possible while staying conservative (i.e. do not enable passes which have
> a significant risk of resulting in slower code, or which may alter the
> semantics of the code, or which may result in odd behavior in the debugger).

Well, you are, of course entitled to your own notions, but FWIW the
GCC manual tells a different story:

         Optimize even more.  GCC performs nearly all supported
         optimizations that do not involve a space-speed tradeoff.

IOW, -O2 does what you think -O1 should do (which goes a long way
toward explaining why so many project use -O2 as default).
Optimizations that involve space-speed tradeoff (a PC way of saying
you may lose as likely as win) are in -O3, while those that might
alter the semantics are (AFAIK) not in any -On option, you must turn
them on by hand (at your own risk).  The latter fact is not stated in
these very words, but is quite evident when one reads the manual.

Of course, this is all from reading the manual, so it might be
inaccurate and even plain wrong...

> I would probably also include a notion of "avoid optimzation passes which
> can take too much time (e.g. quadratic complexity or worse)", but it's
> definitely not at the top of my list of requirements for the semantics of
> "-O".

The above seems to show that it's definitely at the top of the GCC
developers' list.  Which I personally think is somewhat silly with
today's fast CPUs, but that's a different matter.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]