> 
> > 
> > Hi folks.
> > 
> > While investigating a regression from the V_MUST_DEF removal on mem-ssa,
> > I've noticed that we were missing out on optimization of certain
> > stores to complex types (on mainline).
> > 
> > For example, here:
> > 
> >   _Complex int t = 0;
> >  __real__ t = 2;
> >  __imag__ t = 2;
> > 
> > we end up with:
> > 
> >   #   t_2 = V_MUST_DEF <t_1>;
> >   t = __complex__ (0, 0);
> >   #   t_3 = V_MAY_DEF <t_2>;
> >   REALPART_EXPR <t> = 2;
> >   #   t_4 = V_MAY_DEF <t_3>;
> >   IMAGPART_EXPR <t> = 2;
> > 
> > When we really should be decomposing the field stores into SFTs, like this:
> > 
> >   #   SFT.0_3 = V_MUST_DEF <SFT.0_1>;
> >   #   SFT.1_4 = V_MUST_DEF <SFT.1_2>;
> >   t = __complex__ (0, 0);
> >   #   SFT.1_5 = V_MUST_DEF <SFT.1_4>;
> >   REALPART_EXPR <t> = 2;
> >   #   SFT.0_6 = V_MUST_DEF <SFT.0_3>;
> >   IMAGPART_EXPR <t> = 2;
> 
> Relooking at the orginal testcase which actually has a read in it, This
> seems like the wrong approach.  Can you figure out why write_only is not
> being set to false for the orginal testcase (and not the reduced one)?

I should also mention on the mainline, we get the decomposing for the
orginal testcase which means this is a bug only on the MEM-SSA branch.


-- Pinski

Reply via email to