Add m_Zero().
authorChris Lattner <sabre@nondot.org>
Thu, 20 Dec 2007 04:47:44 +0000 (04:47 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 20 Dec 2007 04:47:44 +0000 (04:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45255 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/PatternMatch.h

index 6b295d6482112be97114c07937633be04be5f44c..e046b29122c35aec4a5b6e7f88e3235287e52304 100644 (file)
@@ -46,9 +46,24 @@ struct leaf_ty {
   bool match(ITy *V) { return isa<Class>(V); }
 };
 
+/// m_Value() - Match an arbitrary value and ignore it.
 inline leaf_ty<Value> m_Value() { return leaf_ty<Value>(); }
+/// m_ConstantInt() - Match an arbitrary ConstantInt and ignore it.
 inline leaf_ty<ConstantInt> m_ConstantInt() { return leaf_ty<ConstantInt>(); }
 
+struct zero_ty {
+  template<typename ITy>
+  bool match(ITy *V) {
+    if (const Constant *C = dyn_cast<Constant>(V))
+      return C->isNullValue();
+    return false;
+  }
+};
+
+/// m_Zero() - Match an arbitrary zero/null constant.
+inline zero_ty m_Zero() { return zero_ty(); }
+
+
 template<typename Class>
 struct bind_ty {
   Class *&VR;
@@ -64,7 +79,10 @@ struct bind_ty {
   }
 };
 
+/// m_Value - Match a value, capturing it if we match.
 inline bind_ty<Value> m_Value(Value *&V) { return V; }
+
+/// m_ConstantInt - Match a ConstantInt, capturing the value if we match.
 inline bind_ty<ConstantInt> m_ConstantInt(ConstantInt *&CI) { return CI; }
 
 //===----------------------------------------------------------------------===//