[llvm] [IR][NFC] Introduce Constant::containsMatchingVectorElement and corresponding matcher m_ContainsMatchingVectorElement (PR #200502)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 5 08:08:56 PDT 2026


================
@@ -351,11 +344,20 @@ bool Constant::containsConstantExpression() const {
   if (isa<ConstantInt>(this) || isa<ConstantFP>(this))
     return false;
 
-  if (auto *VTy = dyn_cast<FixedVectorType>(getType())) {
-    for (unsigned i = 0, e = VTy->getNumElements(); i != e; ++i)
-      if (isa<ConstantExpr>(getAggregateElement(i)))
-        return true;
+  return match(this, m_ContainsMatchingVectorElement(m_Isa<ConstantExpr>()));
+}
+
+bool Constant::containsMatchingVectorElement(
+    function_ref<bool(Constant *)> PredFn) const {
+  if (auto *FVTy = dyn_cast<FixedVectorType>(getType())) {
+    unsigned NumElts = FVTy->getNumElements();
+    for (unsigned I = 0; I != NumElts; ++I) {
+      if (Constant *Elem = getAggregateElement(I))
+        if (PredFn(Elem))
----------------
artagnon wrote:

```suggestion
      if (PredFn(getAggregateElement(I))
```

after generalizing to Value?

https://github.com/llvm/llvm-project/pull/200502


More information about the llvm-commits mailing list