int min(int a, int b) { if (a < b) return a; else return b; }
should produce rlwinm r2,r3,1,31,31 subfc r0,r4,r3 rlwinm r0,r4,1,31,31 subfe r0,r2,r0 andc r2,r4,r0 and r0,r3,r0 or r3,r0,r2 blr but instead produces a branch sequence mr r0,r3 mr r3,r4 cmpw cr7,r0,r4 bgelr- cr7 mr r3,r0 blr with unnecessary dependencies. -- Summary: Inefficient max/min code for PowerPC Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dje at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: *-*-* GCC host triplet: powerpc-*-* GCC target triplet: *-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18154