From eaf23b49b80c2dd3f2781a84ba2a3c70d645523a Mon Sep 17 00:00:00 2001 From: Francesco Bertolaccini Date: Fri, 19 May 2023 11:23:19 +0200 Subject: [PATCH] Fix issue #325 --- lib/AST/IRToASTVisitor.cpp | 1 + tests/tools/decomp/issue_325_goto.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/tools/decomp/issue_325_goto.c diff --git a/lib/AST/IRToASTVisitor.cpp b/lib/AST/IRToASTVisitor.cpp index 5fb781ff..61a64af9 100755 --- a/lib/AST/IRToASTVisitor.cpp +++ b/lib/AST/IRToASTVisitor.cpp @@ -1186,6 +1186,7 @@ void IRToASTVisitor::VisitFunctionDecl(llvm::Function &func) { fdecl->addDecl(var); } else if (inst.hasNUsesOrMore(2) || (inst.hasNUsesOrMore(1) && llvm::isa(inst)) || + (inst.hasNUsesOrMore(1) && llvm::isa(inst)) || llvm::isa(inst)) { if (!inst.getType()->isVoidTy()) { auto GetPrefix{[&](llvm::Instruction *inst) { diff --git a/tests/tools/decomp/issue_325_goto.c b/tests/tools/decomp/issue_325_goto.c new file mode 100644 index 00000000..648613c9 --- /dev/null +++ b/tests/tools/decomp/issue_325_goto.c @@ -0,0 +1,17 @@ +#include +int main(int argc, const char** argv) { + int i = argc; + if (i == 1) { // no args + putchar(4 + '0'); + i += 1; + goto n5; + } + if (i > 1) { // args + putchar(5 + '0'); + goto n7; + } +n5: + putchar(6 + '0'); +n7: + putchar(7 + '0'); +}