summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorKaelyn Takata <rikka@google.com>2015-11-25 00:03:29 +0000
committerKaelyn Takata <rikka@google.com>2015-11-25 00:03:29 +0000
commitd0955312d9f241be6bffb2952a5e6b6f48052301 (patch)
tree62059241a90a304d114d57b5ce5145b50cd41912 /llvm/lib
parent55fa418a90cea66ec32e96824ba2dbd21e588894 (diff)
downloadbcm5719-llvm-d0955312d9f241be6bffb2952a5e6b6f48052301.tar.gz
bcm5719-llvm-d0955312d9f241be6bffb2952a5e6b6f48052301.zip
Fix an asan error where NumElements > 32 for at least one case in
test/CodeGen/X86/avg.ll. llvm-svn: 254043
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 0bf5ee68d13..26e69507617 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -6244,7 +6244,7 @@ X86TargetLowering::LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG) const {
unsigned NumZero = 0;
unsigned NumNonZero = 0;
- unsigned NonZeros = 0;
+ uint64_t NonZeros = 0;
bool IsAllConstants = true;
SmallSet<SDValue, 8> Values;
for (unsigned i = 0; i < NumElems; ++i) {
@@ -6258,7 +6258,8 @@ X86TargetLowering::LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG) const {
if (X86::isZeroNode(Elt))
NumZero++;
else {
- NonZeros |= (1 << i);
+ assert(i < sizeof(NonZeros) * 8); // Make sure the shift is within range.
+ NonZeros |= ((uint64_t)1 << i);
NumNonZero++;
}
}
OpenPOWER on IntegriCloud