On 01/25/2016 01:32 AM, Kyrill Tkachov wrote: > + case CONST_WIDE_INT: > + *cost = 0; > + for (unsigned int n = CONST_WIDE_INT_NUNITS(x), i = 0; i < n; ++i) > + { > + unsigned HOST_WIDE_INT e = CONST_WIDE_INT_ELT(x, i); > + if (e != 0) > + *cost += COSTS_N_INSNS (aarch64_internal_mov_immediate > + (NULL_RTX, GEN_INT (e), false, DImode)); > + } > + return true; > + > > We usually avoid creating intermediate rtxes in the cost function because > it can potentially be called many times during compilation and we want to > avoid > creating too many short-lived objects, though I suppose there's no way getting > around this one (the GEN_INT call).
Well, it's only aarch64_internal_mov_immediate -- we could change the interface to provide the HOST_WIDE_INT value directly. But that was more than I wanted to do for enabling splittable TImode constants. r~