Fix signed integer overflow in PPCInstPrinter.
authorAlexey Samsonov <vonosmas@gmail.com>
Tue, 2 Sep 2014 17:38:34 +0000 (17:38 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Tue, 2 Sep 2014 17:38:34 +0000 (17:38 +0000)
This bug was reported by UBSan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216917 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp

index 35ba3c008f28370ced68101b820e68c84aa176ad..670c40a2a3bde9951fa159a8bae71f0a1307cff2 100644 (file)
@@ -268,7 +268,7 @@ void PPCInstPrinter::printAbsBranchOperand(const MCInst *MI, unsigned OpNo,
   if (!MI->getOperand(OpNo).isImm())
     return printOperand(MI, OpNo, O);
 
-  O << (int)MI->getOperand(OpNo).getImm()*4;
+  O << SignExtend32<32>((unsigned)MI->getOperand(OpNo).getImm() << 2);
 }