http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16458
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |bergner at gcc dot gnu.org |gnu.org | --- Comment #6 from Peter Bergner <bergner at gcc dot gnu.org> 2012-01-27 15:12:15 UTC --- Created attachment 26481 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26481 Updated patch to eliminate redudant compares Here's a slightly updated patch that allows the compares to be cse'd, but also doesn't disable the generation of record form instructions (ie, instructions that also set cr0 implicitly). I was mistaken in my Comment #5 above. We can sometime handle: if (*a == *b) ... else if (*a > *b) ... and: switch (*index) ... depending on whether expand creates the type expression via REG_EXPR or not. In some cases it does and in others it doesn't. That's not a limitation in this patch, but in expand. That can can be handled in separate patch.