summaryrefslogtreecommitdiff
path: root/src/jit/valuenum.cpp
diff options
context:
space:
mode:
authorSergey Andreenko <seandree@microsoft.com>2019-03-29 15:17:37 -0700
committerGitHub <noreply@github.com>2019-03-29 15:17:37 -0700
commit311b5e2fe413c6c74a2a3680ab54d8a978651472 (patch)
tree34b80e7da951ba003d59b42f14f928c84a4a02c2 /src/jit/valuenum.cpp
parent4a4ba4d379002c8b8e77ef968f510cf0283201d0 (diff)
downloadcoreclr-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.cpp21
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)
{