summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2015-06-23 07:28:57 +0000
committerJustin Bogner <mail@justinbogner.com>2015-06-23 07:28:57 +0000
commit6499b5f086a2390b3d3d57087e90bdeb1b43cc47 (patch)
treefa0435fd3986ba5a683cbd8c410b28be44429d30
parent47ab1fa6d6af6569c9b6cf2049c91aae1bfc2402 (diff)
downloadbcm5719-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
-rw-r--r--llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp2
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;
}
OpenPOWER on IntegriCloud