For PR950:
[oota-llvm.git] / include / llvm / Analysis / ScalarEvolutionExpressions.h
index ba1b6d4fecb06218eb07bcbd4b39bb0801c3dcb0..b9bf93b8c79aea3069269ef23a831881aac12412 100644 (file)
@@ -62,6 +62,7 @@ namespace llvm {
     }
 
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVConstant *S) { return true; }
@@ -108,6 +109,7 @@ namespace llvm {
     virtual ConstantRange getValueRange() const;
 
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVTruncateExpr *S) { return true; }
@@ -154,6 +156,7 @@ namespace llvm {
     }
 
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVZeroExtendExpr *S) { return true; }
@@ -218,6 +221,7 @@ namespace llvm {
 
     virtual const Type *getType() const { return getOperand(0)->getType(); }
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVCommutativeExpr *S) { return true; }
@@ -332,6 +336,7 @@ namespace llvm {
     virtual const Type *getType() const;
 
     void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVSDivExpr *S) { return true; }
@@ -421,13 +426,16 @@ namespace llvm {
     /// looking at this is that it returns the first iteration number where the
     /// value is not in the condition, thus computing the exit count.  If the
     /// iteration count can't be computed, an instance of SCEVCouldNotCompute is
-    /// returned.
-    SCEVHandle getNumIterationsInRange(ConstantRange Range) const;
+    /// returned. The isSigned parameter indicates whether the ConstantRange
+    /// should be treated as signed or unsigned.
+    SCEVHandle getNumIterationsInRange(ConstantRange Range, 
+                                       bool isSigned) const;
 
     SCEVHandle replaceSymbolicValuesWithConcrete(const SCEVHandle &Sym,
                                                  const SCEVHandle &Conc) const;
 
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVAddRecExpr *S) { return true; }
@@ -472,6 +480,7 @@ namespace llvm {
     virtual const Type *getType() const;
 
     virtual void print(std::ostream &OS) const;
+    void print(std::ostream *OS) const { if (OS) print(*OS); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
     static inline bool classof(const SCEVUnknown *S) { return true; }