https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
Jakub Jelinek changed:
What|Removed |Added
CC||jakub at gcc dot gnu.org
--- Comment #9
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
--- Comment #8 from Martin Jambor ---
Author: jamborm
Date: Sun Mar 10 16:20:06 2019
New Revision: 269556
URL: https://gcc.gnu.org/viewcvs?rev=269556&root=gcc&view=rev
Log:
Make SRA less strict with memcpy performing MEM_REFs
2019-03-10 Martin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
--- Comment #7 from Martin Jambor ---
(In reply to Marc Glisse from comment #1)
> struct A { double a, b; };
> struct B : A {};
> templatevoid cp(T&a,T const&b){a=b;}
> double f(B x){
> B y; cp(y,x);
> B z; cp(z,x);
> return y.a - z.a;
> }
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
Jakub Jelinek changed:
What|Removed |Added
Target Milestone|8.3 |8.4
--- Comment #6 from Jakub Jelinek -
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
Richard Biener changed:
What|Removed |Added
Priority|P3 |P2
--- Comment #5 from Richard Biener
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
--- Comment #4 from Richard Biener ---
(In reply to Marc Glisse from comment #1)
> struct A { double a, b; };
> struct B : A {};
> templatevoid cp(T&a,T const&b){a=b;}
> double f(B x){
> B y; cp(y,x);
> B z; cp(z,x);
> return y.a - z.a;
> }
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
Richard Biener changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
--- Comment #2 from Marc Glisse ---
Or just:
struct A { double a, b; };
struct B : A {};
double f(B x){
B y;
A*px=&x;
A*py=&y;
*py=*px;
return y.a;
}
MEM[(struct A *)&y] = MEM[(const struct A &)&x];
y_6 = MEM[(struct A *)&y];
y
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87008
--- Comment #1 from Marc Glisse ---
struct A { double a, b; };
struct B : A {};
templatevoid cp(T&a,T const&b){a=b;}
double f(B x){
B y; cp(y,x);
B z; cp(z,x);
return y.a - z.a;
}
This is not quite equivalent because RTL manages to optimiz