diff options
author | Sergey Andreenko <seandree@microsoft.com> | 2019-03-29 15:17:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-29 15:17:37 -0700 |
commit | 311b5e2fe413c6c74a2a3680ab54d8a978651472 (patch) | |
tree | 34b80e7da951ba003d59b42f14f928c84a4a02c2 /src/jit/valuenum.cpp | |
parent | 4a4ba4d379002c8b8e77ef968f510cf0283201d0 (diff) | |
download | coreclr-311b5e2fe413c6c74a2a3680ab54d8a978651472.tar.gz coreclr-311b5e2fe413c6c74a2a3680ab54d8a978651472.tar.bz2 coreclr-311b5e2fe413c6c74a2a3680ab54d8a978651472.zip |
Use GenTreeStmt* where it is implied. (#22963)
* Extract `impAppendStmt` and `impExtractLastStmt`.
* Delete `BEG_STMTS` fake stmt.
Use new functions to keep the list updated.
* Retype `impTreeList` and `impTreeLast` as statements.
Rename `impTreeList` and `impTreeLast` to show that they are statements.
* Fix fields that have to be stmt.
* Start using GenTreeStmt.
Change `optVNAssertionPropCurStmt` to use GenTreeStmt.
Replace `GenTree* stmt = block->bbTreeList` with `GenTreeStmt* stmt = block->firstStmt()`.
Save results of `FirstNonPhiDef` as `GenTreeStmt`.
* Replace do-while with for loop.
* Change type inside VNAssertionPropVisitorInfo.
* Delete unused args fron `optVNConstantPropOnTree`.
* Update fields to be stmt.
Update optVNConstantPropCurStmt to use Stmt.
Change `lvDefStmt` to stmt.
Update LoopCloning structs.
Update `optDebugLogLoopCloning`.
Make `compCurStmt` a statement.
Update declaration name in `BuildNode`.
* Clean simple cpp files.
Clean valuenum.
Clean ssabuilder.
Clean simd.
Clean optcse.
Clean loopcloning.
Clean copyprop.
Clean optimizer part1.
* Start cleaning importer, morph, flowgraph, gentree.
* Continue clean functons.
Clean assertionprop.
Clean morph.
Clean gentree.
Clean flowgraph.
Clean compiler.
Clean rangecheck.
Clean indirectcalltransofrmer.
Clean others.
* Create some temp stmt.
* Delete unnecessary noway_assert and casts.
* Init `impStmtList` and `impLastStmt` in release.
* Response review 1.
Diffstat (limited to 'src/jit/valuenum.cpp')
-rw-r--r-- | src/jit/valuenum.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp index 4280d872b0..88fbbcc3f0 100644 --- a/src/jit/valuenum.cpp +++ b/src/jit/valuenum.cpp @@ -5759,10 +5759,9 @@ void Compiler::fgValueNumber() for (BasicBlock* blk = fgFirstBB; blk != nullptr; blk = blk->bbNext) { // Now iterate over the block's statements, and their trees. - for (GenTree* stmts = blk->FirstNonPhiDef(); stmts != nullptr; stmts = stmts->gtNext) + for (GenTreeStmt* stmt = blk->FirstNonPhiDef(); stmt != nullptr; stmt = stmt->getNextStmt()) { - assert(stmts->IsStatement()); - for (GenTree* tree = stmts->gtStmt.gtStmtList; tree; tree = tree->gtNext) + for (GenTree* tree = stmt->gtStmtList; tree != nullptr; tree = tree->gtNext) { tree->gtVNPair.SetBoth(ValueNumStore::NoVN); } @@ -5925,12 +5924,12 @@ void Compiler::fgValueNumberBlock(BasicBlock* blk) // First: visit phi's. If "newVNForPhis", give them new VN's. If not, // first check to see if all phi args have the same value. - GenTree* firstNonPhi = blk->FirstNonPhiDef(); - for (GenTree* phiDefs = blk->bbTreeList; phiDefs != firstNonPhi; phiDefs = phiDefs->gtNext) + GenTreeStmt* firstNonPhi = blk->FirstNonPhiDef(); + for (GenTreeStmt* phiDefStmt = blk->firstStmt(); phiDefStmt != firstNonPhi; phiDefStmt = phiDefStmt->getNextStmt()) { // TODO-Cleanup: It has been proposed that we should have an IsPhiDef predicate. We would use it // in Block::FirstNonPhiDef as well. - GenTree* phiDef = phiDefs->gtStmt.gtStmtExpr; + GenTree* phiDef = phiDefStmt->gtStmtExpr; assert(phiDef->OperGet() == GT_ASG); GenTreeLclVarCommon* newSsaVar = phiDef->gtOp.gtOp1->AsLclVarCommon(); @@ -6133,21 +6132,19 @@ void Compiler::fgValueNumberBlock(BasicBlock* blk) } // Now iterate over the remaining statements, and their trees. - for (GenTree* stmt = firstNonPhi; stmt != nullptr; stmt = stmt->gtNext) + for (GenTreeStmt* stmt = firstNonPhi; stmt != nullptr; stmt = stmt->getNextStmt()) { - assert(stmt->IsStatement()); - #ifdef DEBUG compCurStmtNum++; if (verbose) { printf("\n***** " FMT_BB ", stmt %d (before)\n", blk->bbNum, compCurStmtNum); - gtDispTree(stmt->gtStmt.gtStmtExpr); + gtDispTree(stmt->gtStmtExpr); printf("\n"); } #endif - for (GenTree* tree = stmt->gtStmt.gtStmtList; tree; tree = tree->gtNext) + for (GenTree* tree = stmt->gtStmtList; tree != nullptr; tree = tree->gtNext) { fgValueNumberTree(tree); } @@ -6156,7 +6153,7 @@ void Compiler::fgValueNumberBlock(BasicBlock* blk) if (verbose) { printf("\n***** " FMT_BB ", stmt %d (after)\n", blk->bbNum, compCurStmtNum); - gtDispTree(stmt->gtStmt.gtStmtExpr); + gtDispTree(stmt->gtStmtExpr); printf("\n"); if (stmt->gtNext) { |