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