Hi Uros, HJ, I checked expand_movmem_epilogue - it seemingly doesn't have such a problem, so the patch is ok.
We might want to add similar adjust_automodify_address_nv call to here as well: if (TARGET_64BIT) { dest = change_address (destmem, DImode, destptr); emit_insn (gen_strset (destptr, dest, value)); emit_insn (gen_strset (destptr, dest, value)); } else { dest = change_address (destmem, SImode, destptr); emit_insn (gen_strset (destptr, dest, value)); emit_insn (gen_strset (destptr, dest, value)); emit_insn (gen_strset (destptr, dest, value)); emit_insn (gen_strset (destptr, dest, value)); } (code snippet from previous HJ's comment in bugzilla). I think it's needed here, but I didn't manage to exploit the bug in this code. Maybe Uros or Jan can comment whether it's needed in such code or not. Thanks, Michael On 3 December 2013 12:11, Uros Bizjak <ubiz...@gmail.com> wrote: > On Tue, Dec 3, 2013 at 2:05 AM, H.J. Lu <hongjiu...@intel.com> wrote: > >> emit_memset fails to adjust destination address after gen_strset, which >> leads to the wrong address in aliasing info. This patch fixes it. >> Tested on Linux/x86-64. OK to install? >> >> 2013-12-03 H.J. Lu <hongjiu...@intel.com> >> >> PR target/59363 >> * config/i386/i386.c (emit_memset): Adjust destination address >> after gen_strset. >> >> gcc/testsuite/ >> >> 2013-12-03 H.J. Lu <hongjiu...@intel.com> >> >> PR target/59363 >> * gcc.target/i386/pr59363.c: New file. > > OK, but according to [1], there are other places where similar issues > should be fixed. I propose to wait for Michael's analysis and eventual > patch, and fix them all together. > > [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59363#c21 > > Thanks, > Uros. -- --- Best regards, Michael V. Zolotukhin, Software Engineer Intel Corporation.