This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] Fix gcc.target/arm/thumb-cbranchqi.c.
- From: <Kazu_Hirata at mentor dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 28 Jan 2014 06:16:39 -0800
- Subject: [patch] Fix gcc.target/arm/thumb-cbranchqi.c.
- Authentication-results: sourceware.org; auth=none
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 <kazu@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" } } */