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.

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.

jeff


Reply via email to