https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81594

--- Comment #7 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Peepholes catch fewer cases, and it is very hard to write correct peepholes.
The only reason to use peepholes is when the other passes leave some important
optimisation on the table, and you cannot feasibly fix that problem.

They are not a substitute for proper optimisation (for example, almost all
"interesting" optimisation happen before it, so you cannot rely on combine
or cse or *prop etc. to do anything -- so, if you want some simple
optimisations
with it you need to write that manually (an exponential amount of work).  This
even applies to "trivial" things like constant arguments.

Peepholes are nice for mopping up those cases that for one reason or the other
the other compiler passes cannot / do not get right.  They can "tune" the
compiler output to be just a teeny bit better.  They cannot do anything more
than that.

Reply via email to