dfa9f0d57b
gas/ * config/tc-arm.c (BAD_BRANCH, BAD_NOT_IT): Define. (do_t_branch): Encode branches inside IT blocks as unconditional. (do_t_cps): New function. (do_t_blx, do_t_bkpt, do_t_branch23, do_t_bx, do_t_bxj, do_t_cpsi, do_t_czb, do_t_it, do_t_setend, do_t_tb): Add IT constaints. (opcode_lookup): Allow conditional suffixes on all instructions in Thumb mode. (md_assemble): Advance condexec state before checking for errors. (insns): Use do_t_cps. gas/testsuite/ * gas/arm/thumb2_bcond.d: New test. * gas/arm/thumb2_bcond.s: New test. * gas/arm/thumb2_it_bad.d: New test. * gas/arm/thumb2_it_bad.l: New test. * gas/arm/thumb2_it_bad.s: New test.
24 lines
250 B
ArmAsm
24 lines
250 B
ArmAsm
.text
|
|
.syntax unified
|
|
.arch armv7a
|
|
.thumb
|
|
.thumb_func
|
|
thumb2_it_bad:
|
|
itttt eq
|
|
beq foo
|
|
bleq foo
|
|
blxeq r0
|
|
cbzeq r0, foo
|
|
ittt eq
|
|
bxeq r0
|
|
tbbeq [r0, r1]
|
|
cpsieeq f
|
|
it eq
|
|
cpseq #0x10
|
|
itt eq
|
|
bkpteq 0
|
|
setendeq le
|
|
it eq
|
|
iteq eq
|
|
nop
|
|
foo:
|