summaryrefslogtreecommitdiff
path: root/lib/Analysis/ConstantFolding.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-10-24 05:27:19 +0000
committerChris Lattner <sabre@nondot.org>2009-10-24 05:27:19 +0000
commitc7b1382e351249774be63bd73839e8a0671635e1 (patch)
tree503094f9a3c9470f724723c75d2bed3c61a7581e /lib/Analysis/ConstantFolding.cpp
parentc5af649758ac8c6ffb896d7d5c570640a9fa1dee (diff)
downloadllvm-c7b1382e351249774be63bd73839e8a0671635e1.tar.gz
llvm-c7b1382e351249774be63bd73839e8a0671635e1.tar.bz2
llvm-c7b1382e351249774be63bd73839e8a0671635e1.tar.xz
various cleanups suggested by Duncan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84993 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ConstantFolding.cpp')
-rw-r--r--lib/Analysis/ConstantFolding.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp
index 3fe1d75454..074ff790e1 100644
--- a/lib/Analysis/ConstantFolding.cpp
+++ b/lib/Analysis/ConstantFolding.cpp
@@ -103,6 +103,8 @@ static bool ReadDataFromGlobal(Constant *C, uint64_t ByteOffset,
assert(ByteOffset <= TD.getTypeAllocSize(C->getType()) &&
"Out of range access");
+ // If this element is zero or undefined, we can just return since *CurPtr is
+ // zero initialized.
if (isa<ConstantAggregateZero>(C) || isa<UndefValue>(C))
return true;
@@ -115,7 +117,7 @@ static bool ReadDataFromGlobal(Constant *C, uint64_t ByteOffset,
unsigned IntBytes = unsigned(CI->getBitWidth()/8);
for (unsigned i = 0; i != BytesLeft && ByteOffset != IntBytes; ++i) {
- CurPtr[i] = (unsigned char)(Val >> ByteOffset * 8);
+ CurPtr[i] = (unsigned char)(Val >> (ByteOffset * 8));
++ByteOffset;
}
return true;
@@ -130,6 +132,7 @@ static bool ReadDataFromGlobal(Constant *C, uint64_t ByteOffset,
C = ConstantExpr::getBitCast(C, Type::getInt32Ty(C->getContext()));
return ReadDataFromGlobal(C, ByteOffset, CurPtr, BytesLeft, TD);
}
+ return false;
}
if (ConstantStruct *CS = dyn_cast<ConstantStruct>(C)) {
@@ -247,8 +250,7 @@ static Constant *FoldReinterpretLoadFromConstPtr(Constant *C,
return 0;
GlobalVariable *GV = dyn_cast<GlobalVariable>(GVal);
- if (!GV || !GV->isConstant() || !GV->hasInitializer() ||
- !GV->hasDefinitiveInitializer() ||
+ if (!GV || !GV->isConstant() || !GV->hasDefinitiveInitializer() ||
!GV->getInitializer()->getType()->isSized())
return 0;