Internals: Rework AstInitArray to have O(1) access. No functional change intended.

This commit is contained in:
Wilson Snyder
2019-11-09 17:12:26 -05:00
parent 704f40b1a2
commit 4767083a72
7 changed files with 102 additions and 58 deletions
+1 -4
View File
@@ -86,12 +86,9 @@ class SliceVisitor : public AstNVisitor {
AstNode* newp;
if (AstInitArray* initp = VN_CAST(nodep, InitArray)) {
UINFO(9," cloneInitArray("<<elements<<","<<offset<<") "<<nodep<<endl);
AstNode* itemp = initp->initsp();
int leOffset = !arrayp->rangep()->littleEndian()
? arrayp->rangep()->elementsConst()-1-offset : offset;
for (int pos = 0; itemp && pos < leOffset; ++pos) {
itemp = itemp->nextp();
}
AstNode* itemp = initp->getIndexDefaultedValuep(leOffset);
if (!itemp) {
nodep->v3error("Array initialization has too few elements, need element "<<offset);
itemp = initp->initsp();