Skip to content

Commit

Permalink
Merge pull request #27 from IITH-Compilers/HotFix-1
Browse files Browse the repository at this point in the history
Added Fix for possible infinite recursion issue (Issue #26)
  • Loading branch information
rohitaggarwal007 authored Apr 16, 2021
2 parents 3abce9f + ff22672 commit fc20bad
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ jobs:

steps:
- name: Install LLVM-10.0.1
run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main" && sudo apt-get update && sudo apt-get install -y llvm-10 llvm-10-dev clang-10
run: |
wget https://apt.llvm.org/llvm.sh
sudo bash llvm.sh 10
- uses: actions/checkout@v2
- name: Eigen-setup
run: |
Expand Down
23 changes: 13 additions & 10 deletions src/FlowAware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,19 @@ void IR2Vec_FA::getTransitiveUse(

for (auto U : def->users()) {
if (auto use = dyn_cast<Instruction>(U)) {
IR2VEC_DEBUG(outs() << "\nDef " << /* def << */ " ";
def->print(outs(), true); outs() << "\n";);
IR2VEC_DEBUG(outs() << "Use " << /* use << */ " ";
use->print(outs(), true); outs() << "\n";);
if (isMemOp(use->getOpcodeName(), operandNum, memWriteOps) &&
use->getOperand(operandNum) == def) {
writeDefsMap[root].push_back(use);
} else if (isMemOp(use->getOpcodeName(), operandNum, memAccessOps) &&
use->getOperand(operandNum) == def) {
getTransitiveUse(root, use, visitedList, toAppend);
if (std::find(visitedList.begin(), visitedList.end(), use) ==
visitedList.end()) {
IR2VEC_DEBUG(outs() << "\nDef " << /* def << */ " ";
def->print(outs(), true); outs() << "\n";);
IR2VEC_DEBUG(outs() << "Use " << /* use << */ " ";
use->print(outs(), true); outs() << "\n";);
if (isMemOp(use->getOpcodeName(), operandNum, memWriteOps) &&
use->getOperand(operandNum) == def) {
writeDefsMap[root].push_back(use);
} else if (isMemOp(use->getOpcodeName(), operandNum, memAccessOps) &&
use->getOperand(operandNum) == def) {
getTransitiveUse(root, use, visitedList, toAppend);
}
}
}
}
Expand Down

0 comments on commit fc20bad

Please sign in to comment.