On Mon, Feb 23, 2015 at 11:26 PM, Jeff Law wrote:
> On 02/22/15 02:02, Chen Gang S wrote:
>>
>> It is for Bug65117, after this fix, ".i" file can be passed compiling.
>>
>>    - 'this_alternative_win' is not initialized before use it: for the
>>      first looping 0, it initializes 'this_alternative_win[0]', but
>>      'did_match' may use 'this_alternative_win[2]'.
>>
>>    - 'this_alternative' may be not initialized before using: it
>>      initializes 'this_alternative[i]', but may use 'this_alternative[m]'
>>      (m > i).
>>
>>    - After reading through the code, arrays 'this_alternative_match_win',
>>      'this_alternative_offmemok', and 'this_alternative_earlyclobber' may
>>      be not initialized either, so initialize them too.
>>
>> This issue is found by cross compiling xtensa Linux kernel with the
>> latest gcc5. And after this patch, it can cross compile xtensa Linux
>> kernel with allmodconfig, successfully.
>>
>>
>> 2015-02-22  Chen Gang  <gang.chen.5...@gmail.com>
>>
>>         * reload.c (find_reloads): Initialize several arrays before use
>>         them.
>
>
> From the documentation for matching constraints:
>
>   Moreover, the digit must be a
>   smaller number than the number of the operand that uses it in the
>   constraint.
>
>
> If we look at the zero_cost_loop_{start,end} patterns we have:
>
>         (if_then_else (ne (match_operand:SI 0 "register_operand" "2")
>
> and
>
>
>         (if_then_else (ne (match_operand:SI 0 "nonimmediate_operand" "2,2")
>
> Similarly for the loop_end pattern.
>
>
> Which violate the rule for matching constraints.

...and should never have worked at all...


> I'm confident that if the xtensa's patterns were fixed to abide by the rules
> for matching constraints the problem in reload would not occur.


Chen, perhaps a warming can be implemented for this in genrecog?

Ciao!
Steven

Reply via email to