diff options
author | Jiong Wang <jiong.wang@arm.com> | 2014-06-17 10:06:00 +0100 |
---|---|---|
committer | Jiong Wang <jiong.wang@arm.com> | 2014-06-17 10:12:52 +0100 |
commit | c8de034b6ae75f0b23d45d15c927daac61c33a3c (patch) | |
tree | 129ab723ca548293770805551168784fad982e7e /gas | |
parent | dfac1fa730b83b4f4e42d1fff5778e7127297f76 (diff) | |
download | gdb-c8de034b6ae75f0b23d45d15c927daac61c33a3c.zip gdb-c8de034b6ae75f0b23d45d15c927daac61c33a3c.tar.gz gdb-c8de034b6ae75f0b23d45d15c927daac61c33a3c.tar.bz2 |
gas/ARM: Misses deprecated IT instruction warning for ARMv8
Add sp increment and decrement to ARMv8 IT block deprecate
pattern.
gas/
* config/tc-arm.c (depr_it_insns): New check for inc/dec sp.
gas/testsuite/
* gas/arm/armv8-a-it-bad.s: New check for inc/dec sp.
* gas/arm/armv8-a-it-bad.l: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 3 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/armv8-a-it-bad.l | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/armv8-a-it-bad.s | 14 |
5 files changed, 31 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 9e3a320..34fd665 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2014-06-17 Jiong Wang <jiong.wang@arm.com> + + * config/tc-arm.c (depr_it_insns): New check for inc/dec sp. + 2014-06-17 Hans-Peter Nilsson <hp@axis.com> * config/tc-cris.c (cris_bad): New function. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index fc86db4..ce0532b 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -17266,6 +17266,9 @@ static const struct depr_insn_mask depr_it_insns[] = { { 0x4800, 0xf800, N_("Literal loads") }, { 0x4478, 0xf478, N_("Hi-register ADD, MOV, CMP, BX, BLX using pc") }, { 0x4487, 0xfc87, N_("Hi-register ADD, MOV, CMP using pc") }, + /* NOTE: 0x00dd is not the real encoding, instead, it is the 'tvalue' + field in asm_opcode. 'tvalue' is used at the stage this check happen. */ + { 0x00dd, 0x7fff, N_("ADD/SUB sp, sp #imm") }, { 0, 0, NULL } }; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b2d7af9..87b9823 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-06-17 Jiong Wang <jiong.wang@arm.com> + + * gas/arm/armv8-a-it-bad.s: New check for deprecated sp_inc/dec within + IT block for ARMv8. + * gas/arm/armv8-a-it-bad.l: Likewise. + 2014-06-17 Hans-Peter Nilsson <hp@axis.com> * gas/cris/range-err-3.s: New test. diff --git a/gas/testsuite/gas/arm/armv8-a-it-bad.l b/gas/testsuite/gas/arm/armv8-a-it-bad.l index e3a5971..282216e 100644 --- a/gas/testsuite/gas/arm/armv8-a-it-bad.l +++ b/gas/testsuite/gas/arm/armv8-a-it-bad.l @@ -12,3 +12,7 @@ .*:55: Error: r15 not allowed here -- `addeq r0,pc,pc' .*:58: Warning: IT blocks containing 16-bit Thumb instructions of the following class are deprecated in ARMv8: Short branches, Undefined, SVC, LDM/STM .*:58: Error: r15 not allowed here -- `addeq pc,r0,r0' +.*:61: Warning: IT blocks containing 16-bit Thumb instructions of the following class are deprecated in ARMv8: ADD/SUB sp, sp #imm +.*:65: Warning: IT blocks containing 16-bit Thumb instructions of the following class are deprecated in ARMv8: ADD/SUB sp, sp #imm +.*:68: Warning: IT blocks containing 16-bit Thumb instructions of the following class are deprecated in ARMv8: ADD/SUB sp, sp #imm +.*:72: Warning: IT blocks containing 16-bit Thumb instructions of the following class are deprecated in ARMv8: ADD/SUB sp, sp #imm diff --git a/gas/testsuite/gas/arm/armv8-a-it-bad.s b/gas/testsuite/gas/arm/armv8-a-it-bad.s index 42f2b86..d1bc07a 100644 --- a/gas/testsuite/gas/arm/armv8-a-it-bad.s +++ b/gas/testsuite/gas/arm/armv8-a-it-bad.s @@ -56,3 +56,17 @@ addeq r0, pc, pc it eq addeq pc, r0, r0 + +it eq +addeq sp, sp, #12 + +@ Misaligned immediate. +it eq +addeq sp, sp, #3 + +it eq +subeq sp, sp, #12 + +@ Misaligned immediate. +it eq +subeq sp, sp, #3 |