summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-10-05 18:31:58 +0000
committerChris Lattner <sabre@nondot.org>2008-10-05 18:31:58 +0000
commit758ce7260de67be32ae756d9d1b82a175a11f1bd (patch)
tree2b7a92f5e6259c9251de84faabb6354d109a81ef /llvm/utils/TableGen
parent851e72cd229ce7e5dd87a464d33940f305b6db90 (diff)
downloadbcm5719-llvm-758ce7260de67be32ae756d9d1b82a175a11f1bd.tar.gz
bcm5719-llvm-758ce7260de67be32ae756d9d1b82a175a11f1bd.zip
Fix shift overflow bug that would occur when a field was a full 32-bits
in tblgen. This is PR2827, thanks to Waldemar Knorr for tracking this down. llvm-svn: 57124
Diffstat (limited to 'llvm/utils/TableGen')
-rw-r--r--llvm/utils/TableGen/CodeEmitterGen.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/CodeEmitterGen.cpp b/llvm/utils/TableGen/CodeEmitterGen.cpp
index 62df686ea28..ae4a6aa445b 100644
--- a/llvm/utils/TableGen/CodeEmitterGen.cpp
+++ b/llvm/utils/TableGen/CodeEmitterGen.cpp
@@ -191,7 +191,7 @@ void CodeEmitterGen::run(std::ostream &o) {
gotOp = true;
}
- unsigned opMask = (1 << N) - 1;
+ unsigned opMask = ~0U >> (32-N);
int opShift = beginVarBit - N + 1;
opMask <<= opShift;
opShift = beginInstBit - beginVarBit;
OpenPOWER on IntegriCloud