diff options
author | Justin Bogner <mail@justinbogner.com> | 2015-06-23 07:28:57 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2015-06-23 07:28:57 +0000 |
commit | 6499b5f086a2390b3d3d57087e90bdeb1b43cc47 (patch) | |
tree | fa0435fd3986ba5a683cbd8c410b28be44429d30 /llvm/lib/Target/Mips/Disassembler | |
parent | 47ab1fa6d6af6569c9b6cf2049c91aae1bfc2402 (diff) | |
download | bcm5719-llvm-6499b5f086a2390b3d3d57087e90bdeb1b43cc47.tar.gz bcm5719-llvm-6499b5f086a2390b3d3d57087e90bdeb1b43cc47.zip |
[mips] Fix some UB by shifting before sign-extending
Avoid shifting a negative value by sign-extending after the shift.
Fixes a couple of tests that were failing under ubsan.
llvm-svn: 240381
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler')
-rw-r--r-- | llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index c8629b5d7bd..4a17d518e85 100644 --- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -1855,6 +1855,6 @@ static DecodeStatus DecodeMovePRegPair(MCInst &Inst, unsigned Insn, static DecodeStatus DecodeSimm23Lsl2(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { - Inst.addOperand(MCOperand::createImm(SignExtend32<23>(Insn) << 2)); + Inst.addOperand(MCOperand::createImm(SignExtend32<25>(Insn << 2))); return MCDisassembler::Success; } |