[Bug rtl-optimization/70782] zero-initialized long returned by value generates useless stores/loads to the stack
jhaberman at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Apr 25 04:35:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70782
Josh Haberman <jhaberman at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|zero-initialized union |zero-initialized long
|returned by value generates |returned by value generates
|useless stores/loads to the |useless stores/loads to the
|stack |stack
--- Comment #1 from Josh Haberman <jhaberman at gmail dot com> ---
I just realized that the union has nothing to do with it. I get exactly the
same results if the function returns a long:
--
#include <string.h>
long f(const void *p, int type) {
long v;
memset(&v, 0, 8);
if (type == 1) {
memcpy(&v, p, 1);
} else if (type <= 5) {
memcpy(&v, p, 4);
} else if (type <= 8) {
memcpy(&v, p, 8);
}
return v;
}
--
I've retitled the bug accordingly.
More information about the Gcc-bugs
mailing list