[Mesa-dev] Mesa (master): glsl2: Add pass to remove redundant jumps

Ian Romanick idr at freedesktop.org
Mon Sep 13 23:16:40 PDT 2010

Hash: SHA1

Luca Barbieri wrote:
> ir_lower_jumps should already do the jump unification, and
> could/should also remove the continue.
> It's probably best to put all jump manipulations there to avoid
> risking rerunning all passes a number of times linear in the program
> size.

I primarily added this pass to remove some of the odd cases that your
new loop unrolling code had.  ir_lower_jumps is already fairly
complicated, and I didn't want to clutter it up.  If ir_lower_jumps is
already doing most of that work, the two passes could be merged.

> Regarding ifs, it would be nice to also remove empty else branches,
> and possibly convert if(c) {} else {code()} to if(!c) {code()} or
> perhaps do the reverse canonicalization instead.
> And also things like "if(c) {if(c) {code()}}" to if(c) {code()}, as
> well as "if(1) {code()}" to "code()", as well as ir_switch -> ir_if
> and viceversa once ir_switch is added.

We could certainly add a pass to do that.  I'm not sure it's necessary.
 I *think* the backend code generator just does the right thing.  It's
worth looking into, though.

> A "cfg simplification" pass might be more appropriate for this though,
> unless it's necessary to add this to ir_lower_jumps to avoid the
> "linear number of optimization runs" problems.

Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


More information about the mesa-dev mailing list