https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90883

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On June 14, 2019 2:27:22 PM GMT+02:00, "jamborm at gcc dot gnu.org"
<gcc-bugzi...@gcc.gnu.org> wrote:
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90883
>
>--- Comment #4 from Martin Jambor <jamborm at gcc dot gnu.org> ---
>(In reply to Richard Biener from comment #3)
>> ...I also wonder why SRA does not elide the aggregate copy.
>
>SRA has a special condition not to attempt to totally scalarize array
>of chars, so that it does not interfere with bigger types
>placement-new placed in those.
>
>It is true that artificially removing this condition would avoid the
>problem though.  However, the IL after esra would look like the
>following:
>  <bb 2> :
>  SR.1_3 = 0;
>  SR.2_8 = 0;
>  SR.3_9 = 0;
>  SR.4_10 = 0;
>  SR.5_11 = 0;
>  SR.6_12 = 0;
>  SR.7_13 = 0;
>  SR.8_14 = 0;
>  SR.1_15 = 0;
>  SR.2_16 = 0;
>  SR.3_17 = 0;
>  SR.4_18 = 0;
>  SR.5_19 = 0;
>  SR.6_20 = 0;
>  SR.7_21 = 0;
>  SR.8_22 = 0;
>  D.10899.a._M_elems[0] = SR.1_15;
>  D.10899.a._M_elems[1] = SR.2_16;
>  D.10899.a._M_elems[2] = SR.3_17;
>  D.10899.a._M_elems[3] = SR.4_18;
>  D.10899.a._M_elems[4] = SR.5_19;
>  D.10899.a._M_elems[5] = SR.6_20;
>  D.10899.a._M_elems[6] = SR.7_21;

Ick. OK, so the important fact would be the zero initialization which we'd only
see in a flow sensitive analysis? Then the above could just be

D. 10899.a._M_elems = {};

>  D.10899.b = SR.8_22;
>  return D.10899;

Reply via email to