Hi I spotted this while trawling through the arm code generator: the code in the NEG case has no effect. I assume the NEG case should return if the condition matches; patch attached. It's still present in trunk.
case NEG: if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) *total = COSTS_N_INSNS (1); /* Fall through */ case NOT: *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); return false; -- Summary: Obvious bug in arm.c: arm_size_rtx_costs() case NEG: Product: gcc Version: 4.3.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: martinwguy at yahoo dot it GCC target triplet: arm-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37668