public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/11831] [ARM] Logical expression evaluation with condition fields
[not found] <20030806093541.11831.loki@gcc.gnu.org>
@ 2005-09-27 3:01 ` raj dot khem at gmail dot com
2005-09-27 13:43 ` pinskia at gcc dot gnu dot org
2005-09-27 13:47 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 6+ messages in thread
From: raj dot khem at gmail dot com @ 2005-09-27 3:01 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From raj dot khem at gmail dot com 2005-09-27 03:00 -------
I verified that this is fixed in GCC 3.4, 4.0 as well as on mainline. So this
can be closed.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11831
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/11831] [ARM] Logical expression evaluation with condition fields
[not found] <20030806093541.11831.loki@gcc.gnu.org>
2005-09-27 3:01 ` [Bug target/11831] [ARM] Logical expression evaluation with condition fields raj dot khem at gmail dot com
@ 2005-09-27 13:43 ` pinskia at gcc dot gnu dot org
2005-09-27 13:47 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-09-27 13:43 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-27 13:43 -------
It looks worse on the mainline:
stmfd sp!, {r4, lr}
mov r4, r0
bl func
add r4, r4, r0
ldrb r3, [r4, #-4] @ zero_extendqisi2
cmp r3, #97
bne .L2
ldrb r3, [r4, #-3] @ zero_extendqisi2
cmp r3, #98
bne .L2
ldrb r3, [r4, #-2] @ zero_extendqisi2
cmp r3, #99
bne .L2
ldrb r3, [r4, #-1] @ zero_extendqisi2
cmp r3, #100
movne r0, #0
moveq r0, #1
ldmfd sp!, {r4, pc}
.L2:
mov r0, #0
ldmfd sp!, {r4, pc}
.size foo, .-foo
--
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |3.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11831
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/11831] [ARM] Logical expression evaluation with condition fields
[not found] <20030806093541.11831.loki@gcc.gnu.org>
2005-09-27 3:01 ` [Bug target/11831] [ARM] Logical expression evaluation with condition fields raj dot khem at gmail dot com
2005-09-27 13:43 ` pinskia at gcc dot gnu dot org
@ 2005-09-27 13:47 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-09-27 13:47 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|3.4.0 |---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11831
^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <bug-11831-5666@http.gcc.gnu.org/bugzilla/>]
* [Bug target/11831] [ARM] Logical expression evaluation with condition fields
[not found] <bug-11831-5666@http.gcc.gnu.org/bugzilla/>
@ 2009-03-13 12:33 ` ramana dot r at gmail dot com
0 siblings, 0 replies; 6+ messages in thread
From: ramana dot r at gmail dot com @ 2009-03-13 12:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from ramana dot r at gmail dot com 2009-03-13 12:33 -------
With Mainline today it looks worse -
stmfd sp!, {r4, lr}
mov r4, r0
bl func
add r0, r4, r0
ldrb r3, [r0, #-4] @ zero_extendqisi2
cmp r3, #97
beq .L6
.L2:
mov r0, #0
ldmfd sp!, {r4, pc}
.L6:
ldrb r3, [r0, #-3] @ zero_extendqisi2
cmp r3, #98
bne .L2
ldrb r3, [r0, #-2] @ zero_extendqisi2
cmp r3, #99
bne .L2
ldrb r0, [r0, #-1] @ zero_extendqisi2
cmp r0, #100
movne r0, #0
moveq r0, #1
ldmfd sp!, {r4, pc}
--
ramana dot r at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rearnsha at arm dot com,
| |ramana dot r at gmail dot
| |com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11831
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/11831] New: [ARM] Logical expression evaluation with condition fields
@ 2003-08-06 9:35 alga at rgai dot hu
2003-08-06 12:48 ` [Bug target/11831] " pinskia at physics dot uc dot edu
2003-08-11 12:45 ` pinskia at gcc dot gnu dot org
0 siblings, 2 replies; 6+ messages in thread
From: alga at rgai dot hu @ 2003-08-06 9:35 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11831
Summary: [ARM] Logical expression evaluation with condition
fields
Product: gcc
Version: 3.4
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: alga at rgai dot hu
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-unknown-elf
For translating a compound logical expression GCC uses an ldm instruction to
interrupt the evaluation of conditions fields. When optimizing for size
it would be promising to use condition fields instead of the ldm, if possible.
--- c example ---
int func(char*);
int foo (char* name)
{
int n = func (name);
return
(name[n-4] == 'a' &&
name[n-3] == 'b' &&
name[n-2] == 'c' &&
name[n-1] == 'd');
}
--- arm code ---
foo:
mov ip, sp
stmfd sp!, {r4, fp, ip, lr, pc}
sub fp, ip, #4
mov r4, r0
bl func
add r4, r4, r0
ldrb r3, [r4, #-4]
cmp r3, #97
mov r0, #0 <- OLD
ldmneea fp, {r4, fp, sp, pc} <- OLD
ldrb r3, [r4, #-3] <- OLD
cmp r3, #98 <- OLD
ldmneea fp, {r4, fp, sp, pc} <- OLD
ldrb r3, [r4, #-2] <- OLD
cmp r3, #99 <- OLD
ldmneea fp, {r4, fp, sp, pc} <- OLD
ldrb r3, [r4, #-1] <- OLD
cmp r3, #100 <- OLD
movne r0, #0
moveq r0, #1
ldmea fp, {r4, fp, sp, pc}
--- possible solution ---
foo:
mov ip, sp
stmfd sp!, {r4, fp, ip, lr, pc}
sub fp, ip, #4
mov r4, r0
bl func
add r4, r4, r0
ldrb r3, [r4, #-4]
cmp r3, #97
ldreqb r3, [r4, #-3] <- NEW
cmpeq r3, #98 <- NEW
ldreqb r3, [r4, #-2] <- NEW
cmpeq r3, #99 <- NEW
ldreqb r3, [r4, #-1] <- NEW
cmpeq r3, #100 <- NEW
movne r0, #0
moveq r0, #1
ldmea fp, {r4, fp, sp, pc}
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-03-13 12:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20030806093541.11831.loki@gcc.gnu.org>
2005-09-27 3:01 ` [Bug target/11831] [ARM] Logical expression evaluation with condition fields raj dot khem at gmail dot com
2005-09-27 13:43 ` pinskia at gcc dot gnu dot org
2005-09-27 13:47 ` pinskia at gcc dot gnu dot org
[not found] <bug-11831-5666@http.gcc.gnu.org/bugzilla/>
2009-03-13 12:33 ` ramana dot r at gmail dot com
2003-08-06 9:35 [Bug target/11831] New: " alga at rgai dot hu
2003-08-06 12:48 ` [Bug target/11831] " pinskia at physics dot uc dot edu
2003-08-11 12:45 ` pinskia at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).