This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/44501] New: Wrong register stored
- From: "roland dot cassebohm at dh-partner dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Jun 2010 13:23:39 -0000
- Subject: [Bug c/44501] New: Wrong register stored
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Hello,
it seems if there is a bug in the avr 32 gcc compiler.
avr32-gcc: version 4.3.2
toolchain: avr32-gnu-toolchain-2.4.2-setup.exe
avr32studio: avr32studio-ide-installer-2.5.0.35-win32.win32.x86.exe
Both got from www.atmel.com
Device: UC3B0256
Compilerflags: -O2 -g2 -mpart=uc3b0256
When compiling the atached example whith optimation "O2" the line:
telegramm[10] = 1;
won't be translated right.
In the listfile I see, that the wrong register will be stored to
"telegramm[10]".
Listfile:
telegramm[10] = 1;
8000011a: 30 1a mov r10,1
void test_func(u8_t port)
{
u8_t *telegramm = test_str[port].telegramm_tx;
telegramm[6] = 33;
8000011c: b8 e9 st.b r12[0x6],r9
telegramm[10] = 1;
8000011e: f9 68 00 0a st.b r12[10],r8
It will store r8 instead of r10, which has got the 1.
I don't know if you coult help me, because the gcc ported from Atmel?
I have attached the test code, the listfile and the output of
avr32-gcc -v -save-temps -O2 -g3 -mpart=uc3b0256 -c main.o main.c.
(hope I can attach them after commit)
--
Summary: Wrong register stored
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: roland dot cassebohm at dh-partner dot com
GCC host triplet: i686-pc-cygwin
GCC target triplet: avr32
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44501