summaryrefslogtreecommitdiffstats
path: root/llvm/lib/FuzzMutate
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/FuzzMutate')
-rw-r--r--llvm/lib/FuzzMutate/RandomIRBuilder.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
index e3303cf3cac..8fe9d0dc857 100644
--- a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
+++ b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
@@ -140,9 +140,15 @@ Value *RandomIRBuilder::findPointer(BasicBlock &BB,
if (isa<TerminatorInst>(Inst))
return false;
- if (auto PtrTy = dyn_cast<PointerType>(Inst->getType()))
+ if (auto PtrTy = dyn_cast<PointerType>(Inst->getType())) {
+ // We can never generate loads from non first class or non sized types
+ if (!PtrTy->getElementType()->isSized() ||
+ !PtrTy->getElementType()->isFirstClassType())
+ return false;
+
// TODO: Check if this is horribly expensive.
return Pred.matches(Srcs, UndefValue::get(PtrTy->getElementType()));
+ }
return false;
};
if (auto RS = makeSampler(Rand, make_filter_range(Insts, IsMatchingPtr)))
OpenPOWER on IntegriCloud