I don't have objection to this fix. But this bug exposes a design problem in DCE, i.e., DCE can't handle a situation where copy prop is disabled upstream.
-Mei -----Original Message----- From: Sun Chan [mailto:sun.c...@gmail.com] Sent: Friday, January 06, 2012 9:55 PM To: Gang Yu Cc: open64-devel Subject: Re: [Open64-devel] Review request for fix bug787[WOPT] this fix looks better. i am still a bit worry about regressions (performance). Have you checked perf regression with this change? Sun On Sat, Jan 7, 2012 at 1:36 PM, Gang Yu <yugang...@gmail.com> wrote: > Hi, > > I have a new fix for the bug787, the cut-down case from Rao(thanks) is as > follows: > > extern int main(int argc) > { > int res1; > int val0,val1; > val1=100; > if(1) > { > asm("bswapl %0" : "=r" (val0) : "0" (val1)); > res1=val0; > } > val0=res1; > asm("bswapl %0" : "=r" (val1) : "0" (val0)); > } /* main */ > analysis: > > Current open64 disallows copy propagation into ASM_INPUT for the var and > ivar cases, this is reasonable since some constraints do only allow the > parameter in specific form. > > If we fix following Rao's suggested way, i.e, mark some identity assignment > undeletable for DCE, then we need special marking work for the identity > assignment. > > a sound way as RAO suggested is say if the LHS of the identity assignment > has flag CR_DONT_PROP, we disable deleting this identiy assign. However, > this triggers the problem that other identity assign also undeletable only > if its LHS has CR_DONT_PROP, so bug882 thrown out and it is hard to patch > again for this special handling, this changes the default verifycation > and DCE behavior. > > My suggested way is that we try propagate to a var inside ASM_INPUT, if the > propagated expr is also a var, we allow this propagation. in the above case > >>LINE 13___ >> LDID I4 I4 sym5v3 0 ty=402 <u=2 cr13> flags:0x8 b=-1 #res1 >>OPR_STID I4 I4 sym4v4 0 <u=0 cr15> b=-1 flags:0x2 pj2 Sid-1 > chi <> 0x0x80e1e40 >>LINE 14___ > mu<9/cr14 > >> LDID I4 I4 sym4v4 0 ty=402 <u=0 cr15> flags:0x0 b=-1 #val0 >> ASM_INPUT opnd:1 <u=0 cr16> isop_flags:0xc0000 flags:0x0 b=E1 >> ASM_STMT <u=0 cr17> isop_flags:0xc0000 flags:0x0 b=-1 >>OPR_ASM_STMT b=-1 flags:0x2 pj2 Sid-1 > sym5v3 is propagated into OPR_ASMINPUT. > > The patch below: > > --- a/osprey/be/opt/opt_prop.cxx > +++ b/osprey/be/opt/opt_prop.cxx > @@ -1504,9 +1504,23 @@ COPYPROP::Copy_propagate_cr(CODEREP *x, BB_NODE > *curbb, > expr = Copy_propagate_cr(x->Opnd(i), curbb, inside_cse, in_array); > else { > // OSP_384 > - if(opr == OPR_ASM_INPUT) > - x->Opnd(i)->Set_flag(CF_DONT_PROP); > - expr = NULL; > + if(opr == OPR_ASM_INPUT) { > + // open64.net bug787. Try propagate for VAR first, if the > propagated expr is the same > + // kind to the original one,i.e, also a VAR. we allow this > propagation. otherwise, disable it. > + if ( x->Opnd(i)->Kind() == CK_VAR ) { > + CODEREP *possible_prop = Copy_propagate_cr(x->Opnd(i), curbb, > inside_cse, in_array); > + if (possible_prop && possible_prop->Kind() == > x->Opnd(i)->Kind()) > + expr = possible_prop; > + else { > + x->Opnd(i)->Set_flag(CF_DONT_PROP); > + expr = NULL; > + } > + } > + else { > + x->Opnd(i)->Set_flag(CF_DONT_PROP); > + expr = NULL; > + } > + } > } > #else > please gatekeeper help a review > > Thanks. > > Regards > Gang > > ------------------------------------------------------------------------------ > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex > infrastructure or vast IT resources to deliver seamless, secure access to > virtual desktops. With this all-in-one solution, easily deploy virtual > desktops for less than the cost of PCs and save 60% on VDI infrastructure > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel > ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel