On 26/08/14 23:18, Carrot Wei wrote:
> Hi
> 
> In insn pattern "*andim_ashift<mode>_bfiz", if the operands[2] is larger than
> the size of register, gcc may generate invalid assembler code. If operands[2]
> is larger than the size of the underlying type of INTVAL, the following insn
> condition may also be undefined.
> 
> "exact_log2 ((INTVAL (operands[3]) >> INTVAL (operands[2])) + 1) >= 0
>  && (INTVAL (operands[3]) & ((1 << INTVAL (operands[2])) - 1)) == 0"
> 
> It can be fixed by checking the value of operands[2] before using it.
> 
> Passed regression test without failure. OK for trunk and 4.9 branch?
> 
> thanks
> Guozhi Wei
> 
> 
> 2014-08-26  Guozhi Wei  <car...@google.com>
> 
>         PR target/62262
>         * config/aarch64/aarch64.md (*andim_ashift<mode>_bfiz): Check the 
> shift
>         amount before using it.
> 
> 
> 2014-08-26  Guozhi Wei  <car...@google.com>
> 
>         PR target/62262
>         * gcc.target/aarch64/pr62262.c: New test.
> 

OK.

R.

Reply via email to