On Fri, Nov 22, 2013 at 12:19 PM, Zdenek Dvorak <rakd...@iuuk.mff.cuni.cz> wrote: > Hi, > >> > If a pointer typed use is plainly value passed to a func call, it is >> > not an address use, right? But as you said, x86 lea may help here. >> >> But that's what you are matching ... (well, for builtins you know >> will expand that to a memory reference). >> >> What I dislike in the patch is the special-casing of some builtins >> via a target hook. I'd rather say treat all internal functions and >> all target builtins that way. Or simply all addresses. > > unless the architecture has lea-type instruction to compute the address, > computing say b+4*i incurs some cost, while if mem[b+4*i] is accessed, the > computation is for free. Thus, it does not make sense to treat the address > computations the same way as memory references (or to treat all functions > the same way as builtins which translate to memory references),
I understand that, but I think the patch tries to improve code generation not by changing the set of IVs used (thus adjust cost considerations) but by changing the way it rewrites certain address uses. And we already do compute the correct costs for address uses (we just don't perform exactly the correct verifications for whether a &TMR is supported by the target?). Richard. > Zdenek