LOOP REWIND - Return Type

Description

This message is to inform the user that the code is violating loop rewind optimization rules.

Explanation

For the loop rewind optimization, the function return should be void or should have a return statement.

The following example will fail optimization.

int decoderInput(hls::stream<mag_type> &inputStream, hls::stream<dataPair> &pairedData)//, hls::stream<int> &windex)
{
    static count_type cnt;
    mag_type val, val_next;
    dataPair tempData;
    int n=0;
        decoderInput_whileloop:while(1)
        {
    #pragma HLS PIPELINE II=1 rewind
            if(!inputStream.empty())
            {
                if(cnt==0)
                {
                     tempData.even = inputStream.read();
                     cnt =1;
                }
                else
                {
                    tempData.odd=inputStream.read();
                    pairedData.write(tempData);
                    cnt=0;
                }
            }
            else
            {
                break;
 
            }
        }
}

Solution

The loop rewind optimization would need the function return type a void or have a return statement.