This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/13585] New: Incorrect optimisation of call to sfunc
- From: "stuart dot menefy at st dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Jan 2004 15:33:26 -0000
- Subject: [Bug c/13585] New: Incorrect optimisation of call to sfunc
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The problem occurs when building the attached code. The command line
is:
% sh4-linux-gcc -O2 -c pcm_params.i -fPIC -o pcm_params.lo
The generated code for line 8252:
tmp = *params;
which is a struct assignment, is:
gcc version 3.2 20020529 (experimental) / 3.2.1 20021022 (prerelease)
and 3.3.4:
mov.l .L22,r0
mov r14,r4
mov.w .L32,r7
mov r10,r5
mov.l @(r0,r12),r0
mov #74,r6
add r14,r7
mov.l r0,@(36,r7)
jsr @r7
mov r0,r7
The problem is that the compiler has migrated the "mov r0,r7" which sets
up the address to jump to, into the delay slot.
This problem is seen in SuperH's 3.2/3.2.1 compiler, and a 3.3.2
compiler, but not in a 3.4 snapshot, however this may just be a side
effect of slightly different optimisations.
--
Summary: Incorrect optimisation of call to sfunc
Product: gcc
Version: 3.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: stuart dot menefy at st dot com
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: sh4-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13585