Why does arm-*-as issue a warning for "strb r3, [r3], #1"?
Ian Lance Taylor
ian@airs.com
Fri Jun 24 11:55:00 GMT 2005
Kazu Hirata <kazu@codesourcery.com> writes:
> When I feed "strb r3, [r3], #1" to arm-*-as, the assembler issues a
> warning
>
> "source register same as write-back base"
>
> While I like helpful warnings in general, I am wondering if the
> assembler should issue a warning for something a little strange but
> otherwise correct because a compiler, a major user of the assembler,
> tries to get most out of the instruction set (modulo "discouraged"
> instructions). Note that gcc's testsuite treats a warning from the
> assembler as FAIL. (As far as I can tell from the instruction set
> manual, I don't see anything that bans "strb r3, [r3], #1".)
>
> I am tempted to submit a patch to remove this warning from tc-arm.c,
> but I am no expert on ARM.
According to my copy of the ARM ARM: "If <addressing mode> specifies
base register writeback, and the same register is specified for <Rd>
and <Rn>, the results are UNPREDICTABLE."
So I think the assembler is correct to warn about this construct, and
the compiler should not generate it.
Ian
More information about the Binutils
mailing list