Round out the API for the new optimization flags.

llvm-svn: 82930
This commit is contained in:
Nick Lewycky 2009-09-27 21:33:04 +00:00
parent 24af6de20a
commit 81504d2150
3 changed files with 32 additions and 4 deletions

View File

@ -311,17 +311,26 @@ public:
/// setHasNoUnsignedWrap - Set or clear the nsw flag on this instruction,
/// which must be an operator which supports this flag. See LangRef.html
/// for the meaning of this flag.
void setHasNoUnsignedWrap(bool);
void setHasNoUnsignedWrap(bool b = true);
/// setHasNoSignedWrap - Set or clear the nsw flag on this instruction,
/// which must be an operator which supports this flag. See LangRef.html
/// for the meaning of this flag.
void setHasNoSignedWrap(bool);
void setHasNoSignedWrap(bool b = true);
/// setIsExact - Set or clear the exact flag on this instruction,
/// which must be an operator which supports this flag. See LangRef.html
/// for the meaning of this flag.
void setIsExact(bool);
void setIsExact(bool b = true);
/// hasNoUnsignedWrap - Determine whether the no unsigned wrap flag is set.
bool hasNoUnsignedWrap() const;
/// hasNoSignedWrap - Determine whether the no signed wrap flag is set.
bool hasNoSignedWrap() const;
/// isExact - Determine whether the exact flag is set.
bool isExact() const;
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const BinaryOperator *) { return true; }

View File

@ -604,7 +604,10 @@ public:
/// setIsInBounds - Set or clear the inbounds flag on this GEP instruction.
/// See LangRef.html for the meaning of inbounds on a getelementptr.
void setIsInBounds(bool);
void setIsInBounds(bool b = true);
/// isInBounds - Determine whether the GEP has the inbounds flag.
bool isInBounds() const;
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const GetElementPtrInst *) { return true; }

View File

@ -1282,6 +1282,10 @@ void GetElementPtrInst::setIsInBounds(bool B) {
cast<GEPOperator>(this)->setIsInBounds(B);
}
bool GetElementPtrInst::isInBounds() const {
return cast<GEPOperator>(this)->isInBounds();
}
//===----------------------------------------------------------------------===//
// ExtractElementInst Implementation
//===----------------------------------------------------------------------===//
@ -1838,6 +1842,18 @@ void BinaryOperator::setIsExact(bool b) {
cast<SDivOperator>(this)->setIsExact(b);
}
bool BinaryOperator::hasNoUnsignedWrap() const {
return cast<OverflowingBinaryOperator>(this)->hasNoUnsignedWrap();
}
bool BinaryOperator::hasNoSignedWrap() const {
return cast<OverflowingBinaryOperator>(this)->hasNoSignedWrap();
}
bool BinaryOperator::isExact() const {
return cast<SDivOperator>(this)->isExact();
}
//===----------------------------------------------------------------------===//
// CastInst Class
//===----------------------------------------------------------------------===//