diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2021-09-09 21:55:28 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2021-09-09 22:04:12 +0200 |
commit | af382b93831ae6a58bce8bc075458cfd056e3976 (patch) | |
tree | e5e450c735e926870adffbca4732539536a9f91e /llvm/lib/IR/Constants.cpp | |
parent | 7f48a8aedea7551318f021db5301b481e66712fb (diff) | |
download | llvm-af382b93831ae6a58bce8bc075458cfd056e3976.zip llvm-af382b93831ae6a58bce8bc075458cfd056e3976.tar.gz llvm-af382b93831ae6a58bce8bc075458cfd056e3976.tar.bz2 |
[IR] Handle constant expressions in containsUndefinedElement()
If the constant is a constant expression, then getAggregateElement()
will return null. Guard against this before calling HasFn().
Diffstat (limited to 'llvm/lib/IR/Constants.cpp')
-rw-r--r-- | llvm/lib/IR/Constants.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/IR/Constants.cpp b/llvm/lib/IR/Constants.cpp index b543cbc..c2e91f1 100644 --- a/llvm/lib/IR/Constants.cpp +++ b/llvm/lib/IR/Constants.cpp @@ -315,9 +315,11 @@ containsUndefinedElement(const Constant *C, return false; for (unsigned i = 0, e = cast<FixedVectorType>(VTy)->getNumElements(); - i != e; ++i) - if (HasFn(C->getAggregateElement(i))) - return true; + i != e; ++i) { + if (Constant *Elem = C->getAggregateElement(i)) + if (HasFn(Elem)) + return true; + } } return false; |