Fix isDereferenceablePointer not to try to take the size of an unsized type.

I'll add a test-case shortly.

llvm-svn: 212687
This commit is contained in:
Hal Finkel 2014-07-10 06:06:11 +00:00
parent 2e42c34d05
commit 66e23f126d
1 changed files with 2 additions and 1 deletions

View File

@ -492,7 +492,8 @@ static bool isDereferenceablePointer(const Value *V, const DataLayout *DL,
if (const BitCastInst* BC = dyn_cast<BitCastInst>(V)) {
Type *STy = BC->getSrcTy()->getPointerElementType(),
*DTy = BC->getDestTy()->getPointerElementType();
if ((DL->getTypeStoreSize(STy) >=
if (STy->isSized() && DTy->isSized() &&
(DL->getTypeStoreSize(STy) >=
DL->getTypeStoreSize(DTy)) &&
(DL->getABITypeAlignment(STy) >=
DL->getABITypeAlignment(DTy)))