in your particular example, it is good to copy propagate, right?
I am ok with your fix
Sun

On Wed, Nov 30, 2011 at 9:35 AM, Yiran Wang <yiran.w...@gmail.com> wrote:

> Thanks for your comments.
>
> I am not quite clear about the importance of such an optimization.  As
> usually MSTORE are lowered from MSTID/memcpy-alike-intrinsics. It looks
> like not very important for C, as the lowering are usually 1-1 mapping and
> not introducing redanduncies.
>
> I need to look some further to figure out what is needed to enable it.
>
> BTW, any comments about the patch itself?
>
> Best Regards,
> Yiran
>
> On Mon, Nov 28, 2011 at 8:43 PM, Sun Chan <sun.c...@gmail.com> wrote:
>
>> Sorry, stupid of me.
>> I understand wopt does not do copy prop of mload to mstore. OTOH, this
>> had been a goal for a long time. Anyway you can make that work?
>> Sun
>>
>>  On Tue, Nov 29, 2011 at 12:37 PM, Yiran Wang <yiran.w...@gmail.com>wrote:
>>
>>> Em, I think you are saying that once entered, it would not exit, but the
>>> loop is not entered at the very beginning, as the initial test would fail.
>>>
>>> Regards,
>>> Yiran
>>>
>>>
>>>  On Mon, Nov 28, 2011 at 6:15 PM, Sun Chan <sun.c...@gmail.com> wrote:
>>>
>>>> your example should infinite loop. Pls double check before we further
>>>> discuss this
>>>> Sun
>>>>
>>>>  On Tue, Nov 29, 2011 at 8:41 AM, Yiran Wang <yiran.w...@gmail.com>wrote:
>>>>
>>>>>   Hi All,
>>>>>
>>>>> Could a gatekeeper review this patch?
>>>>>
>>>>> The test case is as following, and the bug is triggered, when
>>>>> compiling it with -O2.
>>>>>
>>>>>  #include <string.h>
>>>>>
>>>>> struct x{
>>>>>   int y;
>>>>>   int z;
>>>>> };
>>>>>
>>>>> int foo()
>>>>> {
>>>>>   struct x xyz,abc;
>>>>>   int i;
>>>>>   memset(&xyz,0,sizeof(xyz));
>>>>>   i = 1;
>>>>>   while( i < 0 )
>>>>>   {
>>>>>     abc.y += xyz.z;
>>>>>     xyz.z += 1;
>>>>>     i+=i;
>>>>>   }
>>>>>   memcpy(&abc,&xyz,sizeof(xyz));
>>>>>   return abc.y ;
>>>>> }
>>>>>
>>>>> The issue is that after WOPT remove the while loop, it renames SSA and
>>>>> connect the MSTORE and MLOAD lowered from memset and memcpy respectively.
>>>>> It would then try to copy propagate
>>>>>
>>>>>   LDC 0
>>>>>   LDA ...
>>>>>   LDC 8
>>>>> MSTORE
>>>>>
>>>>> to
>>>>>
>>>>>   LDA ...
>>>>>   LDC 8
>>>>> MLOAD
>>>>>
>>>>> And, it fails to make a CVT op of type I4 and M.
>>>>>
>>>>> As WOPT is not doing copy propagation for MLOAD, so we just abandon
>>>>> the opportunity as a fix.
>>>>> It should be noted that, the DEF is passing the "Propagatable" test,
>>>>> as it is LDC I4, while usual DEF of an MLOAD would be MLOAD.
>>>>>
>>>>> The patch is as following:
>>>>> Index: opt_prop.cxx
>>>>> ===================================================================
>>>>> --- opt_prop.cxx (revision 3827)
>>>>> +++ opt_prop.cxx (working copy)
>>>>> @@ -1307,6 +1307,16 @@
>>>>>    if (prop == NOT_PROPAGATABLE)
>>>>>      return NULL;
>>>>>
>>>>> +  // MLOAD may be defined by a MSTORE as following
>>>>> +  //   LDC 0
>>>>> +  //   LDA
>>>>> +  //   LDC
>>>>> +  //  MSTORE
>>>>> +  // The definition would pass Propagatable test, but we are not going
>>>>> +  // to propagate it.
>>>>> +  if (x->Opr() == OPR_MLOAD)
>>>>> +    return NULL;
>>>>> +
>>>>>    x->DecUsecnt();
>>>>>    if (icopy_phase)
>>>>>      Htable()->Inc_inputprops();
>>>>>
>>>>> Best Regards,
>>>>> Yiran
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> All the data continuously generated in your IT infrastructure
>>>>> contains a definitive record of customers, application performance,
>>>>> security threats, fraudulent activity, and more. Splunk takes this
>>>>> data and makes sense of it. IT sense. And common sense.
>>>>> http://p.sf.net/sfu/splunk-novd2d
>>>>> _______________________________________________
>>>>> Open64-devel mailing list
>>>>> Open64-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to