diff options
author | Christophe Monat <christophe.monat@st.com> | 2015-11-24 22:17:54 +0100 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2015-11-24 22:21:03 +0100 |
commit | 2c32be708da9011b3ce7404f2be43b17ab1eddd4 (patch) | |
tree | be96a1c54e39c74d862c3808da69d262c2af3165 /gas/config | |
parent | be81798bb66a6f2d007983f466ba4fdeb7141578 (diff) | |
download | gdb-2c32be708da9011b3ce7404f2be43b17ab1eddd4.zip gdb-2c32be708da9011b3ce7404f2be43b17ab1eddd4.tar.gz gdb-2c32be708da9011b3ce7404f2be43b17ab1eddd4.tar.bz2 |
[GAS, ARM] Invalid LDR immediate transformation
2015-11-24 Christophe Monat <christophe.monat@st.com>
* config/tc-arm.c (move_or_literal_pool): Do not transform ldr
ri,=imm into movs when ri is a high register in T1.
2015-11-24 Christophe Monat <christophe.monat@st.com>
* gas/arm/thumb2_ldr_immediate_armv6t2.s: Added high register
tests.
* gas/arm/thumb2_ldr_immediate_armv6t2.d: Accounted for new test
cases.
* gas/arm/thumb2_ldr_immediate_highregs_armv6t2.s: New.
* gas/arm/thumb2_ldr_immediate_highregs_armv6t2.d: New.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-arm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 23c506d..8ea1e8d 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -7839,7 +7839,8 @@ move_or_literal_pool (int i, enum lit_type t, bfd_boolean mode_3) { if (thumb_p) { - if ((v & ~0xFF) == 0) + /* This can be encoded only for a low register. */ + if ((v & ~0xFF) == 0 && (inst.operands[i].reg < 8)) { /* This can be done with a mov(1) instruction. */ inst.instruction = T_OPCODE_MOV_I8 | (inst.operands[i].reg << 8); |