summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-10-08 10:51:19 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-10-08 10:59:10 -0700
commit99e50f51ba9917ee45d336e204e1c8d59e9ccc9e (patch)
treeba2bb37bc4bb4b90583f67e2fc1dc95b9c9e9244
parent18c332220f655dbad552c369ccde5da6e5b7fde2 (diff)
downloadbinaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.tar.gz
binaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.tar.bz2
binaryen-99e50f51ba9917ee45d336e204e1c8d59e9ccc9e.zip
remove unneeded param to doStartBasicBlock
-rw-r--r--src/cfg/cfg-traversal.h26
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);