Summary: | register sized memmove not inlined | ||
---|---|---|---|
Product: | gcc | Reporter: | Julian Taylor <jtaylor.debian> |
Component: | middle-end | Assignee: | Richard Biener <rguenth> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 5.0 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2014-06-12 00:00:00 | |
Bug Depends on: | |||
Bug Blocks: | 59611, 61619 |
Description
Julian Taylor
2014-06-11 12:23:22 UTC
I am using glibc 2.19-0ubuntu6 from the ubuntu 14.04 trusty repository The transform is simply not implemented for memmove but simplification always goes through memmove -> memcpy and then applies this optimization to memcpy. But of course here the memmove -> memcpy transform is not valid. Author: rguenth Date: Fri Jul 11 13:42:55 2014 New Revision: 212452 URL: https://gcc.gnu.org/viewcvs?rev=212452&root=gcc&view=rev Log: 2014-07-11 Richard Biener <rguenther@suse.de> PR middle-end/61473 * builtins.c (fold_builtin_memory_op): Inline memory moves that can be implemented with a single load followed by a single store. (c_strlen): Only warn when only_value is not 2. * gcc.dg/memmove-4.c: New testcase. * gcc.dg/strlenopt-8.c: XFAIL. * gfortran.dg/coarray_lib_realloc_1.f90: Adjust. Added: trunk/gcc/testsuite/gcc.dg/memmove-4.c Modified: trunk/gcc/ChangeLog trunk/gcc/builtins.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/strlenopt-8.c trunk/gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90 Fixed. |