diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2017-09-20 21:01:30 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2017-09-20 21:01:30 +0000 |
commit | 72982e69137c79ae44b2654c6eed2a1b183d7e3e (patch) | |
tree | fc720891fedb344a4090cd8b84865e957eb769b1 /llvm/lib/Target/Mips/Disassembler | |
parent | 8cbb4884a550f71346f65cfee176e8af0577b184 (diff) | |
download | bcm5719-llvm-72982e69137c79ae44b2654c6eed2a1b183d7e3e.tar.gz bcm5719-llvm-72982e69137c79ae44b2654c6eed2a1b183d7e3e.zip |
[mips] Fix calculation of a branch instruction offset to escape left shift of negative value
llvm-svn: 313815
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler')
-rw-r--r-- | llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index ac92fdb6f9e..15195564301 100644 --- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -2278,7 +2278,7 @@ static DecodeStatus DecodeBranchTarget7MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<7>(Offset) << 1; + int32_t BranchOffset = SignExtend32<8>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; } @@ -2287,7 +2287,7 @@ static DecodeStatus DecodeBranchTarget10MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<10>(Offset) << 1; + int32_t BranchOffset = SignExtend32<11>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; } @@ -2305,7 +2305,7 @@ static DecodeStatus DecodeBranchTarget26MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<26>(Offset) << 1; + int32_t BranchOffset = SignExtend32<27>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; |