/* cris and mn10300 -O2 */ foo (float *c) { union { float r; unsigned int i; } e; e.r = c[0]; if (e.i < 0x3f7f0000) return (e.r = e.r / 2.0f, e.i); return ((int) e.i < 0) ? 0 : 255; }
Probably this is a duplicate too for vax: int a, b; int baz (short x) { return x; } int bar (int x) { if (baz (a ^ x ^ a)) return b; return 0; } int foo (void) { return bar (a == 0 || 1 == 1 - a) ? 1 : bar (1 && a); } -- Summary: [cond-optab] CSE does not put subregs into COMPAREs on many CC0 machines Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bonzini at gnu dot org OtherBugsDependingO 39714 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39717