Skip to content

Commit

Permalink
llvmir2hll/statment.cpp: remove observers when removing predecessors.
Browse files Browse the repository at this point in the history
Related to #512.
  • Loading branch information
PeterMatula committed Mar 18, 2019
1 parent 301f4e6 commit 6f60474
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/llvmir2hll/ir/statement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ void Statement::removeStatement(ShPtr<Statement> stmt) {
// target's predecessors - target is not goto's successor.
if (auto gotoStmt = cast<GotoStmt>(stmt)) {
if (gotoStmt->getTarget()) {
gotoStmt->getTarget()->preds.erase(stmt);
gotoStmt->getTarget()->removeObserver(stmt);
gotoStmt->getTarget()->removePredecessor(stmt);
preserveLabel(stmt, gotoStmt->getTarget());
}
}
Expand Down Expand Up @@ -503,7 +504,8 @@ void Statement::replaceStatement(ShPtr<Statement> oldStmt,
// target's predecessors - target is not goto's successor.
if (auto gotoStmt = cast<GotoStmt>(oldStmt)) {
if (gotoStmt->getTarget()) {
gotoStmt->getTarget()->preds.erase(oldStmt);
gotoStmt->getTarget()->removeObserver(oldStmt);
gotoStmt->getTarget()->removePredecessor(oldStmt);
}
}

Expand Down

0 comments on commit 6f60474

Please sign in to comment.