double testit(double _Complex* t) { return *t==0.0?0.0:-*t; } includes useless sequence like
clr.l -(%sp);clr.l -(%sp);fdmove.d (%sp)+,%fp1 fdmove.d (%a0),%fp0 fcmp.d %fp1,%fp0 where the first and last line are useless -- GCC could instead be using the flags as set by a fdmove.d instruction. -- Summary: [cond-optab] pessimization for FP compare with 0 on ColdFire 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=39727