diff options
author | Igor Laevsky <igmyrj@gmail.com> | 2017-12-13 11:49:04 +0000 |
---|---|---|
committer | Igor Laevsky <igmyrj@gmail.com> | 2017-12-13 11:49:04 +0000 |
commit | d209ff981473ae4733c4521e80c427c6ada8a8a3 (patch) | |
tree | 9ddcbae2c102a738fd759491eedf54a9b4ffb948 /llvm/lib/FuzzMutate | |
parent | f39a29265c29aa71ea9b0ca012a3c9817548b78f (diff) | |
download | bcm5719-llvm-d209ff981473ae4733c4521e80c427c6ada8a8a3.tar.gz bcm5719-llvm-d209ff981473ae4733c4521e80c427c6ada8a8a3.zip |
[FuzzMutate] Only generate loads and stores to the first class sized types
Differential Revision: https://reviews.llvm.org/D41109
llvm-svn: 320573
Diffstat (limited to 'llvm/lib/FuzzMutate')
-rw-r--r-- | llvm/lib/FuzzMutate/RandomIRBuilder.cpp | 8 |
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))) |