<div dir="ltr">Hi Sam,<div><br></div><div>It looks like this is continuing to have build problems on Windows, even after "e286c600e10d - [SCEV] Attempt to fix windows buildbots":</div><div><a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/34251/steps/build-unified-tree/logs/stdio">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/34251/steps/build-unified-tree/logs/stdio</a><br></div><div><br></div><div>Are you looking at this failure?</div><div><br></div><div>Thanks</div><div>Russ</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 24 Aug 2020 at 06:57, Sam Parker via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Sam Parker<br>
Date: 2020-08-24T06:57:07+01:00<br>
New Revision: b999400a4fb645cab6d8abcb1ce9146775f69c64<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/b999400a4fb645cab6d8abcb1ce9146775f69c64" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/b999400a4fb645cab6d8abcb1ce9146775f69c64</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/b999400a4fb645cab6d8abcb1ce9146775f69c64.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/b999400a4fb645cab6d8abcb1ce9146775f69c64.diff</a><br>
<br>
LOG: [SCEV] Add operand methods to Cast and UDiv<br>
<br>
Add methods to access operands in a similar manner to NAryExpr.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D86083" rel="noreferrer" target="_blank">https://reviews.llvm.org/D86083</a><br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h b/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
index 0076e02ae1bf..10fefa0272b1 100644<br>
--- a/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
+++ b/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
@@ -82,6 +82,16 @@ class Type;<br>
<br>
   public:<br>
     const SCEV *getOperand() const { return Op; }<br>
+    const SCEV *getOperand(unsigned i) const {<br>
+      assert(i == 0 && "Operand index out of range!");<br>
+      return Op;<br>
+    }<br>
+    using op_iterator = const SCEV *const *;<br>
+    using op_range = iterator_range<op_iterator>;<br>
+    op_range operands() const {<br>
+      return make_range(&Op, &Op + 1);<br>
+    }<br>
+    size_t getNumOperands() const { return 1; }<br>
     Type *getType() const { return Ty; }<br>
<br>
     /// Methods for support type inquiry through isa, cast, and dyn_cast:<br>
@@ -263,16 +273,28 @@ class Type;<br>
   class SCEVUDivExpr : public SCEV {<br>
     friend class ScalarEvolution;<br>
<br>
-    const SCEV *LHS;<br>
-    const SCEV *RHS;<br>
+    std::array<const SCEV*, 2> Operands;<br>
<br>
     SCEVUDivExpr(const FoldingSetNodeIDRef ID, const SCEV *lhs, const SCEV *rhs)<br>
-        : SCEV(ID, scUDivExpr, computeExpressionSize({lhs, rhs})), LHS(lhs),<br>
-          RHS(rhs) {}<br>
+        : SCEV(ID, scUDivExpr, computeExpressionSize({lhs, rhs})) {<br>
+        Operands[0] = lhs;<br>
+        Operands[1] = rhs;<br>
+      }<br>
<br>
   public:<br>
-    const SCEV *getLHS() const { return LHS; }<br>
-    const SCEV *getRHS() const { return RHS; }<br>
+    const SCEV *getLHS() const { return Operands[0]; }<br>
+    const SCEV *getRHS() const { return Operands[1]; }<br>
+    size_t getNumOperands() const { return 2; }<br>
+    const SCEV *getOperand(unsigned i) const {<br>
+      assert((i == 0 || i == 1) && "Operand index out of range!");<br>
+      return i == 0 ? getLHS() : getRHS();<br>
+    }<br>
+<br>
+    using op_iterator = const SCEV *const *;<br>
+    using op_range = iterator_range<op_iterator>;<br>
+    op_range operands() const {<br>
+      return make_range(Operands.begin(), Operands.end());<br>
+    }<br>
<br>
     Type *getType() const {<br>
       // In most cases the types of LHS and RHS will be the same, but in some<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>