summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-08-24 23:29:28 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-08-24 23:29:28 +0000
commit228e6d4cf347820fce53e57c24b266f67a413d85 (patch)
treed2b63a5d9cee710515d33361e84ad0988d2c31fa /llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp
parent3d91b43ad22b69408af224a8d67561038705ec55 (diff)
downloadbcm5719-llvm-228e6d4cf347820fce53e57c24b266f67a413d85.tar.gz
bcm5719-llvm-228e6d4cf347820fce53e57c24b266f67a413d85.zip
Fix integer undefined behavior due to signed left shift overflow in LLVM.
Reviewed offline by chandlerc. llvm-svn: 162623
Diffstat (limited to 'llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp b/llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp
index 03d5a9ae0c4..3396e8b1ef3 100644
--- a/llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp
+++ b/llvm/lib/Target/CellSPU/SPUAsmPrinter.cpp
@@ -130,8 +130,7 @@ namespace {
void
printS10ImmOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O)
{
- short value = (short) (((int) MI->getOperand(OpNo).getImm() << 16)
- >> 16);
+ short value = MI->getOperand(OpNo).getImm();
assert((value >= -(1 << 9) && value <= (1 << 9) - 1)
&& "Invalid s10 argument");
O << value;
@@ -140,8 +139,7 @@ namespace {
void
printU10ImmOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O)
{
- short value = (short) (((int) MI->getOperand(OpNo).getImm() << 16)
- >> 16);
+ short value = MI->getOperand(OpNo).getImm();
assert((value <= (1 << 10) - 1) && "Invalid u10 argument");
O << value;
}
OpenPOWER on IntegriCloud