diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-10-08 10:51:19 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-10-08 10:59:10 -0700 |
commit | 99e50f51ba9917ee45d336e204e1c8d59e9ccc9e (patch) | |
tree | ba2bb37bc4bb4b90583f67e2fc1dc95b9c9e9244 /src/cfg/cfg-traversal.h | |
parent | 18c332220f655dbad552c369ccde5da6e5b7fde2 (diff) | |
download | binaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.tar.gz binaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.tar.bz2 binaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.zip |
remove unneeded param to doStartBasicBlock
Diffstat (limited to 'src/cfg/cfg-traversal.h')
-rw-r--r-- | src/cfg/cfg-traversal.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/cfg/cfg-traversal.h b/src/cfg/cfg-traversal.h index 3bd3289cc..668bdfef2 100644 --- a/src/cfg/cfg-traversal.h +++ b/src/cfg/cfg-traversal.h @@ -61,9 +61,13 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { std::vector<BasicBlock*> ifStack; std::vector<BasicBlock*> loopStack; + void startBasicBlock() { + currBasicBlock = makeBasicBlock(); + basicBlocks.push_back(std::unique_ptr<BasicBlock>(currBasicBlock)); + } + static void doStartBasicBlock(SubType* self, Expression** currp) { - self->currBasicBlock = self->makeBasicBlock(); - self->basicBlocks.push_back(std::unique_ptr<BasicBlock>(self->currBasicBlock)); + self->startBasicBlock(); } void link(BasicBlock* from, BasicBlock* to) { @@ -80,7 +84,7 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { if (origins.size() == 0) return; // we have branches to here, so we need a new block auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(last, self->currBasicBlock); // fallthrough // branches to the new one for (auto* origin : origins) { @@ -91,20 +95,20 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { static void doStartIfTrue(SubType* self, Expression** currp) { auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(last, self->currBasicBlock); // ifTrue self->ifStack.push_back(last); // the block before the ifTrue } static void doStartIfFalse(SubType* self, Expression** currp) { self->ifStack.push_back(self->currBasicBlock); // the ifTrue fallthrough - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(self->ifStack[self->ifStack.size() - 2], self->currBasicBlock); // before if -> ifFalse } static void doEndIf(SubType* self, Expression** currp) { auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(last, self->currBasicBlock); // last one is ifFalse's fallthrough if there was one, otherwise it's the ifTrue fallthrough if ((*currp)->cast<If>()->ifFalse) { // we just linked ifFalse, need to link ifTrue to the end @@ -119,14 +123,14 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { static void doStartLoop(SubType* self, Expression** currp) { auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(last, self->currBasicBlock); self->loopStack.push_back(self->currBasicBlock); } static void doEndLoop(SubType* self, Expression** currp) { auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); self->link(last, self->currBasicBlock); // fallthrough auto* curr = (*currp)->cast<Loop>(); // branches to the top of the loop @@ -145,7 +149,7 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { auto* curr = (*currp)->cast<Break>(); self->branches[self->findBreakTarget(curr->name)].push_back(self->currBasicBlock); // branch to the target auto* last = self->currBasicBlock; - doStartBasicBlock(self, currp); + self->startBasicBlock(); if (curr->condition) { self->link(last, self->currBasicBlock); // we might fall through } @@ -163,7 +167,7 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { if (!seen.count(curr->default_)) { self->branches[self->findBreakTarget(curr->default_)].push_back(self->currBasicBlock); // branch to the target } - doStartBasicBlock(self, currp); + self->startBasicBlock(); } static void scan(SubType* self, Expression** currp) { @@ -223,7 +227,7 @@ struct CFGWalker : public ControlFlowWalker<SubType, VisitorType> { void doWalkFunction(Function* func) { basicBlocks.clear(); - doStartBasicBlock(static_cast<SubType*>(this), nullptr); + startBasicBlock(); entry = currBasicBlock; ControlFlowWalker<SubType, VisitorType>::doWalkFunction(func); |