On 5/15/19 7:22 AM, Richard Biener wrote: > On Tue, May 14, 2019 at 9:21 PM Aaron Sawdey <acsaw...@linux.ibm.com> wrote: >> I'd be interested in any comments about pieces of this machinery that need to >> work a certain way, or other related issues that should be addressed in >> between expand_builtin_memcpy() and emit_block_move_via_movmem(). > > I wonder if introducing a __builtin_memmove_with_hints specifying whether > src < dst or dst > src or unknown and/or a safe block size where that > doesn't matter > would help? I can then be safely expanded to memmove() or to specific > inline code.
Yes this would be a nice thing to get to, a single move/copy underlying builtin, to which we communicate what the compiler's analysis tells us about whether the operands overlap and by how much. Next question would be how do we move from the existing movmem pattern (which Michael Matz tells us should be renamed cpymem anyway) to this new thing. Are you proposing that we still have both movmem and cpymem optab entries underneath to call the patterns but introduce this new memmove_with_hints() to be used by things called by expand_builtin_memmove() and expand_builtin_memcpy()? Thanks! Aaron -- Aaron Sawdey, Ph.D. acsaw...@linux.vnet.ibm.com 050-2/C113 (507) 253-7520 home: 507/263-0782 IBM Linux Technology Center - PPC Toolchain