This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81551] New: [ARM] Incorrect STRD to misaligned address.
- From: "belagod at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 25 Jul 2017 15:07:54 +0000
- Subject: [Bug target/81551] New: [ARM] Incorrect STRD to misaligned address.
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81551
Bug ID: 81551
Summary: [ARM] Incorrect STRD to misaligned address.
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: belagod at gcc dot gnu.org
Target Milestone: ---
For this piece of code:
void foo ()
{
*((long long*)0x2000213F) = 0;
}
when compiled with
$ arm-none-eabi-gcc -S -march=armv7-a /tmp/strd.c -O0 -marm -o -
It generates an STRD to a misaligned address
.type foo, %function
foo:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 1, uses_anonymous_args = 0
@ link register save eliminated.
str fp, [sp, #-4]!
add fp, sp, #0
movw r3, #8511
movt r3, 8192
mov r0, #0
mov r1, #0
strd r0, [r3]
nop
add sp, fp, #0
@ sp needed
ldr fp, [sp], #4
bx lr
.size foo, .-foo
but for -O1 and above:
foo:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
mov r3, #8448
movt r3, 8192
mov r2, #0
strb r2, [r3, #63]
strb r2, [r3, #64]
strb r2, [r3, #65]
strb r2, [r3, #66]
strb r2, [r3, #67]
strb r2, [r3, #68]
strb r2, [r3, #69]
strb r2, [r3, #70]
bx lr
$ ./arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/data/embedded/dev-builds/trunk/install/libexec/gcc/arm-none-eabi/8.0.0/lto-wrapper
Target: arm-none-eabi
Configured with: /data/embedded/dev-builds/trunk/src/configure
--prefix=/data/embedded/dev-builds/trunk/install --target=arm-none-eabi
--enable-languages=c,c++ --with-cpu=cortex-m3 --with-mode=thumb --with-newlib
--enable-newlib-io-long-long --enable-newlib-register-fini
--enable-newlib-retargetable-locking --disable-newlib-supplied-syscalls
--disable-multilib --with-libexpat --with-system-zlib --disable-gdbtk
--enable-plugins --disable-threads --disable-tls --disable-libgomp
--disable-libmudflap --disable-libquadmath --disable-libssp
--disable-libstdcxx-pch --disable-nls --disable-rda --disable-sid --disable-tui
--disable-utils --disable-werror --disable-fixed-point
Thread model: single
gcc version 8.0.0 20170725 (experimental) (GCC)