diff options
author | Owen Anderson <resistor@mac.com> | 2011-09-13 17:59:19 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-09-13 17:59:19 +0000 |
commit | b6b7f515e2b90c9f9b6cdd5b9648121f6ad2b3a1 (patch) | |
tree | 469e4935325e2852fe7dc4c455d74471ee4bfd80 /lib/Target/ARM/AsmParser/ARMAsmParser.cpp | |
parent | abcc73e8ba3131c7c4f198840ece31453a0101ac (diff) |
Teach the Thumb ASM parser that BKPT is allowed in IT blocks, even though it is always executed unconditionally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139610 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/AsmParser/ARMAsmParser.cpp')
-rw-r--r-- | lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index df5e0c9cde..08a42f1248 100644 --- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -3532,7 +3532,10 @@ validateInstruction(MCInst &Inst, MCInstrDesc &MCID = getInstDesc(Inst.getOpcode()); SMLoc Loc = Operands[0]->getStartLoc(); // Check the IT block state first. - if (inITBlock()) { + // NOTE: In Thumb mode, the BKPT instruction has the interesting property of + // being allowed in IT blocks, but not being predicable. It just always + // executes. + if (inITBlock() && Inst.getOpcode() != ARM::tBKPT) { unsigned bit = 1; if (ITState.FirstCond) ITState.FirstCond = false; |