From 8d621c51b2797fda7b1dc22243dde611cfc04f68 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 23 Dec 2025 13:12:02 -0700 Subject: Refactor calling conventions to support correct representation of structures --- lang/c/pseudoc.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'lang/c/pseudoc.cpp') diff --git a/lang/c/pseudoc.cpp b/lang/c/pseudoc.cpp index 592e224f..35966230 100644 --- a/lang/c/pseudoc.cpp +++ b/lang/c/pseudoc.cpp @@ -1816,6 +1816,32 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H }(); break; + case HLIL_PASS_BY_REF: + [&]() { + const auto srcExpr = instr.GetSourceExpr(); + if (srcExpr.operation == HLIL_ADDRESS_OF) + { + GetExprTextInternal(srcExpr.GetSourceExpr(), tokens, settings, precedence); + } + else + { + tokens.Append(OperationToken, "*"); + GetExprTextInternal(srcExpr, tokens, settings, UnaryOperatorPrecedence); + } + if (statement) + tokens.AppendSemicolon(); + }(); + break; + + case HLIL_RETURN_BY_REF: + [&]() { + const auto srcExpr = instr.GetSourceExpr(); + GetExprTextInternal(srcExpr, tokens, settings, UnaryOperatorPrecedence); + if (statement) + tokens.AppendSemicolon(); + }(); + break; + case HLIL_FCMP_E: [&]() { bool parens = precedence > EqualityOperatorPrecedence; -- cgit v1.3.1