copy prop is not always a win. I'd like to see some performance
testing. If possible, compile time testing. it is known to cause
longer compile time also (it is basically a n^^2 algo
Sun

On Sat, Jan 7, 2012 at 5:28 PM, Gang Yu <yugang...@gmail.com> wrote:
> Thanks for the review.
>
> The new patch introduces more copy-props in the code. so, personally I think
> if it will not introduce performance regression.
>
> We test the whole kernel build, besides fix bug787, it does not introduce
> new failures.
>
> Regards
> Gang
>
>
> On Sat, Jan 7, 2012 at 1:54 PM, Sun Chan <sun.c...@gmail.com> wrote:
>>
>> 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

Reply via email to