From 24913641f2c30036769a3c8d38aade9235da4e94 Mon Sep 17 00:00:00 2001 From: rain2133 <1370973498@qq.com> Date: Wed, 25 Jun 2025 02:24:45 +0800 Subject: [PATCH] [backend] fix bugs of not --- src/SysYIRGenerator.cpp | 1 + src/SysYIRPrinter.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/SysYIRGenerator.cpp b/src/SysYIRGenerator.cpp index 912930e..c201b0c 100644 --- a/src/SysYIRGenerator.cpp +++ b/src/SysYIRGenerator.cpp @@ -343,6 +343,7 @@ std::any SysYIRGenerator::visitIfStmt(SysYParser::IfStmtContext *ctx) { ctx->stmt(1)->accept(this); module->leaveScope(); } + builder.createUncondBrInst(exitBlock, {}); BasicBlock::conectBlocks(builder.getBasicBlock(), exitBlock); labelstring << "exit.L" << builder.getLabelIndex(); diff --git a/src/SysYIRPrinter.cpp b/src/SysYIRPrinter.cpp index 04be4da..ccc411d 100644 --- a/src/SysYIRPrinter.cpp +++ b/src/SysYIRPrinter.cpp @@ -30,9 +30,9 @@ void SysYPrinter::printIR() { } std::string SysYPrinter::getTypeString(Type *type) { - if (type->isVoid()) { - return "void"; - } else if (type->isInt()) { + if (type->isVoid()) { + return "void"; + } else if (type->isInt()) { return "i32"; } else if (type->isFloat()) { return "float"; @@ -251,7 +251,7 @@ void SysYPrinter::printInst(Instruction *pInst) { switch (pInst->getKind()) { case Kind::kNeg: std::cout << "sub "; break; - case Kind::kNot: std::cout << "xor "; break; + case Kind::kNot: std::cout << "not "; break; case Kind::kFNeg: std::cout << "fneg "; break; case Kind::kFNot: std::cout << "fneg "; break; // FNot not standard, map to fneg case Kind::kFtoI: std::cout << "fptosi "; break;