Add 'nonnull', a new parameter and return attribute which indicates that the pointer is not null. Instcombine will elide comparisons between these and null. Patch by Luqman Aden!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209185 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky
2014-05-20 01:23:40 +00:00
parent 30e5830301
commit fe47ebfad3
14 changed files with 44 additions and 4 deletions

View File

@@ -76,6 +76,14 @@ unsigned Argument::getArgNo() const {
return ArgIdx;
}
/// hasNonNullAttr - Return true if this argument has the nonnull attribute on
/// it in its containing function.
bool Argument::hasNonNullAttr() const {
if (!getType()->isPointerTy()) return false;
return getParent()->getAttributes().
hasAttribute(getArgNo()+1, Attribute::NonNull);
}
/// hasByValAttr - Return true if this argument has the byval attribute on it
/// in its containing function.
bool Argument::hasByValAttr() const {