Optimize arrayed if assignments

This commit is contained in:
Wilson Snyder
2017-10-04 22:10:44 -04:00
parent 75aab4e9d2
commit 8281ee1520
4 changed files with 73 additions and 6 deletions
+1 -5
View File
@@ -485,11 +485,7 @@ private:
if (!ifp || ifp->nextp()) return false; // Must be SINGLE statement
if (!elsep || elsep->nextp()) return false;
if (ifp->type() != elsep->type()) return false; // Can't mix an assigndly and an assign
AstVarRef* ifvarp = ifp->lhsp()->castVarRef();
AstVarRef* elsevarp = elsep->lhsp()->castVarRef();
if (!ifvarp || !elsevarp) return false;
if (ifvarp->isWide()) return false; // Would need temporaries, so not worth it
if (!ifvarp->sameGateTree(elsevarp)) return false;
if (!ifp->lhsp()->sameGateTree(elsep->lhsp())) return false;
if (!ifp->rhsp()->gateTree()) return false;
if (!elsep->rhsp()->gateTree()) return false;
return true;