Round out the API for the new optimization flags.
authorNick Lewycky <nicholas@mxc.ca>
Sun, 27 Sep 2009 21:33:04 +0000 (21:33 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sun, 27 Sep 2009 21:33:04 +0000 (21:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82930 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/InstrTypes.h
include/llvm/Instructions.h
lib/VMCore/Instructions.cpp

index 6d6d0bae29babedec9882a1aedfbcd9263c63608..cc923dec2987e51a98f8f033dd2dd5abd3db802f 100644 (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; }
index 51ea50af3bdce747976868e188881b5353493f16..c71d64ab07208d1419b05b0b3a9dd5e3bd3bb23c 100644 (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; }
index 1300e5fa259ed2f77fad61bcf855a69a70b3b83e..c2fddfa3477f392c8652307826652515fbf0000b 100644 (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
 //===----------------------------------------------------------------------===//