gcc_qsort: avoid overlapping memcpy (PR 86311)

PR middle-end/86311
	* sort.cc (REORDER_23): Avoid memcpy with same destination and source.
	(REORDER_45): Likewise.

From-SVN: r262092
This commit is contained in:
Alexander Monakov 2018-06-25 20:44:15 +03:00 committed by Alexander Monakov
parent 3685dcd7fb
commit 21925ac173
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-06-25 Alexander Monakov <amonakov@ispras.ru>
PR middle-end/86311
* sort.cc (REORDER_23): Avoid memcpy with same destination and source.
(REORDER_45): Likewise.
2018-06-25 Jeff Law <law@redhat.com>
* config/v850/v850.md (divmodhi4): Make sure to sign extend the

View File

@ -69,7 +69,7 @@ do { \
memcpy (&t1, e1 + OFFSET, sizeof (TYPE)); \
char *out = c->out + OFFSET; \
if (likely (c->n == 3)) \
memcpy (out + 2*STRIDE, e2 + OFFSET, sizeof (TYPE)); \
memmove (out + 2*STRIDE, e2 + OFFSET, sizeof (TYPE));\
memcpy (out, &t0, sizeof (TYPE)); out += STRIDE; \
memcpy (out, &t1, sizeof (TYPE)); \
} while (0)
@ -101,7 +101,7 @@ do { \
memcpy (&t3, e3 + OFFSET, sizeof (TYPE)); \
char *out = c->out + OFFSET; \
if (likely (c->n == 5)) \
memcpy (out + 4*STRIDE, e4 + OFFSET, sizeof (TYPE)); \
memmove (out + 4*STRIDE, e4 + OFFSET, sizeof (TYPE));\
memcpy (out, &t0, sizeof (TYPE)); out += STRIDE; \
memcpy (out, &t1, sizeof (TYPE)); out += STRIDE; \
memcpy (out, &t2, sizeof (TYPE)); out += STRIDE; \