<div dir="ltr"><b>Prior</b> to this commit I could build using the following change:<div><br></div><div>diff --git a/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h b/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>index 0327dc1b9fb..d8ee3d5f115 100644<br>--- a/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>+++ b/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>@@ -291,7 +291,7 @@ class Type;<br>       return i == 0 ? getLHS() : getRHS();<br>     }<br><br>-    using op_iterator = const SCEV *const *;<br>+    using op_iterator = std::array<const SCEV *, 2>::const_iterator;<br>     using op_range = iterator_range<op_iterator>;<br>     op_range operands() const {<br>       return make_range(Operands.begin(), Operands.end());<br><br><br><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Thanks,<br>--Serge<br></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 24, 2020 at 4:29 PM 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-24T10:26:48+01:00<br>
New Revision: 2e194fe73b6fe639aaf1f71a3cd6bd7eeb894656<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/2e194fe73b6fe639aaf1f71a3cd6bd7eeb894656" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/2e194fe73b6fe639aaf1f71a3cd6bd7eeb894656</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/2e194fe73b6fe639aaf1f71a3cd6bd7eeb894656.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/2e194fe73b6fe639aaf1f71a3cd6bd7eeb894656.diff</a><br>
<br>
LOG: [SCEV] Still trying to fix windows buildbots<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
    llvm/lib/Analysis/ScalarEvolution.cpp<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 41df158f5de7..0327dc1b9fb0 100644<br>
--- a/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
+++ b/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h<br>
@@ -74,25 +74,23 @@ class Type;<br>
   /// This is the base class for unary cast operator classes.<br>
   class SCEVCastExpr : public SCEV {<br>
   protected:<br>
-    const SCEV *const Op;<br>
+    std::array<const SCEV *, 1> Operands;<br>
     Type *Ty;<br>
<br>
     SCEVCastExpr(const FoldingSetNodeIDRef ID,<br>
                  unsigned SCEVTy, const SCEV *op, Type *ty);<br>
<br>
   public:<br>
-    const SCEV *getOperand() const { return Op; }<br>
+    const SCEV *getOperand() const { return Operands[0]; }<br>
     const SCEV *getOperand(unsigned i) const {<br>
       assert(i == 0 && "Operand index out of range!");<br>
-      return Op;<br>
+      return Operands[0];<br>
     }<br>
     using op_iterator = const SCEV *const *;<br>
     using op_range = iterator_range<op_iterator>;<br>
<br>
-    op_iterator op_begin() const { return &Op; }<br>
-    op_iterator op_end() const { return &Op + 1; }<br>
     op_range operands() const {<br>
-      return make_range(op_begin(), op_end());<br>
+      return make_range(Operands.begin(), Operands.end());<br>
     }<br>
     size_t getNumOperands() const { return 1; }<br>
     Type *getType() const { return Ty; }<br>
<br>
diff  --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp<br>
index 75d2d39e7114..9c9b9c53c939 100644<br>
--- a/llvm/lib/Analysis/ScalarEvolution.cpp<br>
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp<br>
@@ -447,26 +447,28 @@ ScalarEvolution::getConstant(Type *Ty, uint64_t V, bool isSigned) {<br>
<br>
 SCEVCastExpr::SCEVCastExpr(const FoldingSetNodeIDRef ID,<br>
                            unsigned SCEVTy, const SCEV *op, Type *ty)<br>
-  : SCEV(ID, SCEVTy, computeExpressionSize(op)), Op(op), Ty(ty) {}<br>
+  : SCEV(ID, SCEVTy, computeExpressionSize(op)), Ty(ty) {<br>
+    Operands[0] = op;<br>
+}<br>
<br>
 SCEVTruncateExpr::SCEVTruncateExpr(const FoldingSetNodeIDRef ID,<br>
                                    const SCEV *op, Type *ty)<br>
   : SCEVCastExpr(ID, scTruncate, op, ty) {<br>
-  assert(Op->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
+  assert(getOperand()->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
          "Cannot truncate non-integer value!");<br>
 }<br>
<br>
 SCEVZeroExtendExpr::SCEVZeroExtendExpr(const FoldingSetNodeIDRef ID,<br>
                                        const SCEV *op, Type *ty)<br>
   : SCEVCastExpr(ID, scZeroExtend, op, ty) {<br>
-  assert(Op->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
+  assert(getOperand()->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
          "Cannot zero extend non-integer value!");<br>
 }<br>
<br>
 SCEVSignExtendExpr::SCEVSignExtendExpr(const FoldingSetNodeIDRef ID,<br>
                                        const SCEV *op, Type *ty)<br>
   : SCEVCastExpr(ID, scSignExtend, op, ty) {<br>
-  assert(Op->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
+  assert(getOperand()->getType()->isIntOrPtrTy() && Ty->isIntOrPtrTy() &&<br>
          "Cannot sign extend non-integer value!");<br>
 }<br>
<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>