public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: SSA implementation
@ 2000-06-30  3:39 Richard Kenner
  2000-06-30  8:38 ` Bruce Korb
  2000-06-30  9:14 ` Mark Mitchell
  0 siblings, 2 replies; 7+ messages in thread
From: Richard Kenner @ 2000-06-30  3:39 UTC (permalink / raw)
  To: mark; +Cc: gcc

    We will be contributing a dead-code elimination pass in the very near
    future that operates on the SSA form.  One big improvement is that
    this algorithm is a) very fast and b) can eliminate loops in things
    like:

  void f () { 
    int i;
    for (i = 0; i < 100; ++i)
      ;
  }

We could always have eliminated such loops, but as I understood it, we
chose not to under the assumption they were there for timing delay
purposes.  Has this policy chaged?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SSA implementation
  2000-06-30  3:39 SSA implementation Richard Kenner
@ 2000-06-30  8:38 ` Bruce Korb
  2000-06-30  9:14 ` Mark Mitchell
  1 sibling, 0 replies; 7+ messages in thread
From: Bruce Korb @ 2000-06-30  8:38 UTC (permalink / raw)
  To: Richard Kenner; +Cc: mark, gcc

Richard Kenner wrote:
> 
>     We will be contributing a dead-code elimination pass in the very near
>     future that operates on the SSA form.  One big improvement is that
>     this algorithm is a) very fast and b) can eliminate loops in things
>     like:
> 
>   void f () {
>     int i;
>     for (i = 0; i < 100; ++i)
>       ;
>   }
> 
> We could always have eliminated such loops, but as I understood it, we
> chose not to under the assumption they were there for timing delay
> purposes.  Has this policy chaged?

This won't work for timing delay on advanced processors anyway.
You would have to make "i" be "volatile" or the processor itself
will optimize it away (essentially).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SSA implementation
  2000-06-30  3:39 SSA implementation Richard Kenner
  2000-06-30  8:38 ` Bruce Korb
@ 2000-06-30  9:14 ` Mark Mitchell
  1 sibling, 0 replies; 7+ messages in thread
From: Mark Mitchell @ 2000-06-30  9:14 UTC (permalink / raw)
  To: kenner; +Cc: gcc

>>>>> "Richard" == Richard Kenner <kenner@vlsi1.ultra.nyu.edu> writes:

    Richard>     We will be contributing a dead-code elimination pass
    Richard> in the very near future that operates on the SSA form.
    Richard> One big improvement is that this algorithm is a) very
    Richard> fast and b) can eliminate loops in things like:

    Richard>   void f () { int i; for (i = 0; i < 100; ++i) ; }

    Richard> We could always have eliminated such loops, but as I
    Richard> understood it, we chose not to under the assumption they
    Richard> were there for timing delay purposes.  Has this policy
    Richard> chaged?

Yes.  This was debated to death a year or two ago.  The manual has
said:

  Historically, GCC has not deleted ``empty'' loops under the
  assumption that the most likely reason you would put one in a program is
  to have a delay, so deleting them will not make real programs run any
  faster.

  However, the rationale here is that optimization of a nonempty loop
  cannot produce an empty one, which holds for C but is not always the
  case for C++.

  Moreover, with @samp{-funroll-loops} small ``empty'' loops are already
  removed, so the current behavior is both sub-optimal and inconsistent
  and will change in the future.

for quite some time.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SSA implementation
  2000-06-29 12:11   ` Mark Mitchell
@ 2000-06-29 12:24     ` Gerald Pfeifer
  0 siblings, 0 replies; 7+ messages in thread
From: Gerald Pfeifer @ 2000-06-29 12:24 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: geoffk, ddolan, gcc, oldham

On Thu, 29 Jun 2000, Mark Mitchell wrote:
> We will be contributing a dead-code elimination pass in the very near
> future that operates on the SSA form.  One big improvement is that
> this algorithm is a) very fast and b) can eliminate loops in things
> like:
> 
>   void f () { 
>     int i;
>     for (i = 0; i < 100; ++i)
>       ;
>   }

When you do so, please don't also update the "Deleting ``empty'' loops"
section in the GCC manual.

Some time ago I added a note that in the future the behavior described
there will change which apparently is going to happen now. :-)

Gerald
-- 
Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/
Have a look at http://petition.eurolinux.org -- it's not about Linux, btw!

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SSA implementation
  2000-06-29 11:59 ` Geoff Keating
@ 2000-06-29 12:11   ` Mark Mitchell
  2000-06-29 12:24     ` Gerald Pfeifer
  0 siblings, 1 reply; 7+ messages in thread
From: Mark Mitchell @ 2000-06-29 12:11 UTC (permalink / raw)
  To: geoffk; +Cc: ddolan, gcc, oldham

>>>>> "Geoff" == Geoff Keating <geoffk@cygnus.com> writes:

    Geoff> It does turn the code into SSA form.  That's close to
    Geoff> everything we want it to do.  In the future there will be
    Geoff> other things done while the code is in SSA form, but they
    Geoff> will be separate passes.

We will be contributing a dead-code elimination pass in the very near
future that operates on the SSA form.  One big improvement is that
this algorithm is a) very fast and b) can eliminate loops in things
like:

  void f () { 
    int i;
    for (i = 0; i < 100; ++i)
      ;
  }

Jeffrey Oldham has a mostly working implementation of this algorithm.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SSA implementation
  2000-06-29  7:30 David Dolan
@ 2000-06-29 11:59 ` Geoff Keating
  2000-06-29 12:11   ` Mark Mitchell
  0 siblings, 1 reply; 7+ messages in thread
From: Geoff Keating @ 2000-06-29 11:59 UTC (permalink / raw)
  To: David Dolan; +Cc: gcc

"David Dolan" <ddolan@andrew.cmu.edu> writes:

> Has the ssa pass been fully implemented in the most current snapshot?

It does turn the code into SSA form.  That's close to everything we
want it to do.  In the future there will be other things done while
the code is in SSA form, but they will be separate passes.
-- 
- Geoffrey Keating <geoffk@cygnus.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* SSA implementation
@ 2000-06-29  7:30 David Dolan
  2000-06-29 11:59 ` Geoff Keating
  0 siblings, 1 reply; 7+ messages in thread
From: David Dolan @ 2000-06-29  7:30 UTC (permalink / raw)
  To: gcc

Has the ssa pass been fully implemented in the most current snapshot?

Thanks!!

Dave Dolan
ddolan@andrew.cmu.edu

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2000-06-30  9:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-06-30  3:39 SSA implementation Richard Kenner
2000-06-30  8:38 ` Bruce Korb
2000-06-30  9:14 ` Mark Mitchell
  -- strict thread matches above, loose matches on Subject: below --
2000-06-29  7:30 David Dolan
2000-06-29 11:59 ` Geoff Keating
2000-06-29 12:11   ` Mark Mitchell
2000-06-29 12:24     ` Gerald Pfeifer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).