diff options
[IPL/T] Small fixes, following creation of tests
1 files changed, 2 insertions, 2 deletions
| -rw-r--r-- | Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp | 4 |
diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp index 9035c74..d4548c8 100644 --- a/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp +++ b/Year 2/Implementation of Programming Languages/Transpiler/src/LLVMVisitor/LLVMVisitor.cpp @@ -152,7 +152,7 @@ LLVMRet LLVMVisitor::boolop(const std::string name, funcargs args) { rightArg = args[1]->Visit(*this); Register r = lreg++; - outBuf.push_back(*r + " = " + ((leftArg.type == "double") ? "f" : "i") + "cmp " + ((leftArg.type == "double") ? "o" : "s") + name + " " + leftArg.toStr() + ", " + rightArg.addr); + outBuf.push_back(*r + " = " + ((leftArg.type == "double") ? "f" : "i") + "cmp " + ((leftArg.type == "double") ? "o" : (name != "eq") ? "s" : "") + name + " " + leftArg.toStr() + ", " + rightArg.addr); return { "i1", *r }; } @@ -218,7 +218,7 @@ LLVMVisitor::LLVMVisitor(const char* fileName) : outFile(std::ofstream(fileName) funcs_direct.insert({"if", &LLVMVisitor::f_if}); funcs_direct.insert({"=", &LLVMVisitor::f_eq}); funcs_direct.insert({">", &LLVMVisitor::f_gt}); - funcs_direct.insert({">=", &LLVMVisitor::f_gt}); + funcs_direct.insert({">=", &LLVMVisitor::f_ge}); funcs_direct.insert({"<", &LLVMVisitor::f_lt}); funcs_direct.insert({"<=", &LLVMVisitor::f_le}); } |
