[Thumb] Validate branch target for CBZ/CBNZ instructions.
authorPrakhar Bahuguna <prakhar.bahuguna@arm.com>
Mon, 15 Aug 2016 07:57:44 +0000 (07:57 +0000)
committerPrakhar Bahuguna <prakhar.bahuguna@arm.com>
Mon, 15 Aug 2016 07:57:44 +0000 (07:57 +0000)
commita305a435a6568114022cd684675b4b2ca24cd2da
treea4ff195242f54a1fa22f035ace23e67787ae96c0
parent196ad0823e67bffef39983fbd9d7c13fb25911b6
[Thumb] Validate branch target for CBZ/CBNZ instructions.

Summary:
The assembler currently does not check the branch target for CBZ/CBNZ
instructions, which only permit branching forwards with a positive offset. This
adds validation for the branch target to ensure negative PC-relative offsets are
not encoded into the instruction, whether specified as a literal or as an
assembler symbol.

Reviewers: rengolin, t.p.northover

Subscribers: llvm-commits, rengolin

Differential Revision: https://reviews.llvm.org/D23312

llvm-svn: 278659
llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
llvm/test/MC/ARM/thumb-cb-negative-offsets.s [new file with mode: 0644]
llvm/test/MC/ARM/thumb-diagnostics.s