On 06/30/2017 03:03 AM, Richard Earnshaw (lists) wrote: > On 19/06/17 14:46, Richard Earnshaw (lists) wrote: >> Many parallel set insns are of the form of a single set that also sets >> the condition code flags. In this case the cost of such an insn is >> normally the cost of the part that doesn't set the flags, since updating >> the condition flags is simply a side effect. >> >> At present all such insns are treated as having unknown cost (ie 0) and >> combine assumes that such insns are infinitely more expensive than any >> other insn sequence with a non-zero cost. >> >> This patch addresses this problem by allowing insn_rtx_cost to ignore >> the condition setting part of a PARALLEL iff there is exactly one >> comparison set and one non-comparison set. If the only set operation is >> a comparison we still use that as the basis of the insn cost. >> >> * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one >> comparison set and one other set, use the cost of the >> non-comparison set. >> >> Bootstrapped on aarch64-none-linuxgnu >> >> OK? >> > > Ping? Needs a ChangeLog, with that, OK. Ideally we'd have something which verifies we're getting the cost right, but that's probably nontrivial to do in a generic manner.
jeff