[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 --- Comment #9 from Richard Biener --- Author: rguenth Date: Wed Nov 28 13:51:42 2018 New Revision: 266560 URL: https://gcc.gnu.org/viewcvs?rev=266560&root=gcc&view=rev Log: 2018-11-28 Richard Biener PR tree-optimization/88223

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 --- Comment #8 from Richard Biener --- The C standard is unclear here (C18, 6.2.6.1/7). union { struct X { int i; int j; } x; struct Y { int i; int j; } y; } u; u.x.i = 1; u.y.j = 1; after the second store does u.y.i have unspecified value? Be

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 Richard Biener changed: What|Removed |Added CC||jsm28 at gcc dot gnu.org --- Comment #7

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 --- Comment #6 from Richard Biener --- Hmm, and with unions we can break the TBAA rule. union U { struct X { int a : 3; int b : 8; } a; struct Y { int a : 4; int b : 8; } b; }; union U u; int __attribute__((noinline)) bar () { int x = u.a

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 --- Comment #5 from Richard Biener --- OK, so the bug is in /* If we reach a clobbering statement try to skip it and see if we find a VN result with exactly the same value as the possible clobber. In this case we can ign

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 --- Comment #4 from Richard Biener --- extern void *memmove(void *, const void *, __SIZE_TYPE__); extern void abort(void); extern int main(void) { char s[] = "12345"; memmove(s + 1, s, 4); memmove(s + 1, s, 4); memmove(s + 1, s, 4); if (s[0

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 Richard Biener changed: What|Removed |Added Priority|P3 |P2 Status|UNCONFIRMED

[Bug tree-optimization/88223] [8/9 Regression] Wrong code for intrinsic memmove

2018-11-27 Thread amonakov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223 Alexander Monakov changed: What|Removed |Added Keywords||wrong-code CC|