diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-11-13 18:29:32 -0500 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-11-18 17:36:28 -0800 |
commit | 5abf76fbe37380874a88cc9aa02164800e4e10f3 (patch) | |
tree | 88c4452263ad661ab0f5908da6ba2bca5c8eff56 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | |
parent | 9ad62f62b9ad9852fea17a4c81b35e281e45fbaf (diff) | |
download | llvm-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.cpp | 3 |
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); |