On 28/01/14 14:16, kazu_hir...@mentor.com wrote:
> Hi,
> 
> Attached is a patch to fix gcc.target/arm/thumb-cbranchqi.c.
> 
> Without this patch, the testcase fails because these days gcc
> generates:
> 
> ldrb:
>         ldrb    r3, [r0, #8]
>         mov     r0, #2
>         cmp     r3, #127
>         bls     .L2
>         mov     r0, #5  
> .L2:
>         @ sp needed  
>         bx      lr
> 
> Note that we see the "bls" instruction instead of the "bhi"
> instruction that the testcase expects to see.
> 
> The patch fixes the problem by accepting "bhi" also.
> 
> Note that this patch does not miss the point of the original issue,
> namely PR target/40603:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40603
> 
> The point is to take advantage of the "[Rn+imm5]" addressing mode for
> ldrb, which is not available for ldrsb, and an unsigned comparison
> against 127.  Since we are loading an unsigned byte and performing an
> unsigned comparison, we must have "bls" or "bhi".
> 
> Tested on arm-none-eabi.  OK to apply?
> 
> Kazu Hirata
> 
> gcc/testsuite/
> 2014-01-27  Kazu Hirata  <k...@codesourcery.com>
> 
>       * gcc.target/arm/thumb-cbranchqi.c: Accept bls also.
> 
> Index: gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c
> ===================================================================
> --- gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c    (revision 207119)
> +++ gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c    (working copy)
> @@ -12,4 +12,4 @@ int ldrb(unsigned char* p)
>  
>  
>  /* { dg-final { scan-assembler "127" } } */
> -/* { dg-final { scan-assembler "bhi" } } */
> +/* { dg-final { scan-assembler "bhi|bls" } } */
> 

OK.

R.


Reply via email to