aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2020-11-13 18:29:32 -0500
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2020-11-18 17:36:28 -0800
commit5abf76fbe37380874a88cc9aa02164800e4e10f3 (patch)
tree88c4452263ad661ab0f5908da6ba2bca5c8eff56 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parent9ad62f62b9ad9852fea17a4c81b35e281e45fbaf (diff)
downloadllvm-5abf76fbe37380874a88cc9aa02164800e4e10f3.zip
llvm-5abf76fbe37380874a88cc9aa02164800e4e10f3.tar.gz
llvm-5abf76fbe37380874a88cc9aa02164800e4e10f3.tar.bz2
ADT: Add assertions to SmallVector::insert, etc., for reference invalidation
2c196bbc6bd897b3dcc1d87a3baac28e1e88df41 asserted that `SmallVector::push_back` doesn't invalidate the parameter when it needs to grow. Do the same for `resize`, `append`, `assign`, `insert`, and `emplace_back`. Differential Revision: https://reviews.llvm.org/D91744
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
-rw-r--r--llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index ccef1ba..8ea323a 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -860,7 +860,8 @@ ARMDisassembler::AddThumbPredicate(MCInst &MI) const {
VCCPos + 2, MCOI::TIED_TO);
assert(TiedOp >= 0 &&
"Inactive register in vpred_r is not tied to an output!");
- MI.insert(VCCI, MI.getOperand(TiedOp));
+ // Copy the operand to ensure it's not invalidated when MI grows.
+ MI.insert(VCCI, MCOperand(MI.getOperand(TiedOp)));
}
} else if (VCC != ARMVCC::None) {
Check(S, SoftFail);