diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2025-12-23 13:12:02 -0700 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2026-05-22 16:30:56 -0400 |
| commit | 8d621c51b2797fda7b1dc22243dde611cfc04f68 (patch) | |
| tree | ba5e6a90e644d21d13e75dabcbd0cc747444443a /lang/c/pseudoc.cpp | |
| parent | 08e34ac325743085911f96b62c81d9a1f2127806 (diff) | |
Refactor calling conventions to support correct representation of structures
Diffstat (limited to 'lang/c/pseudoc.cpp')
| -rw-r--r-- | lang/c/pseudoc.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
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<HLIL_PASS_BY_REF>(); + if (srcExpr.operation == HLIL_ADDRESS_OF) + { + GetExprTextInternal(srcExpr.GetSourceExpr<HLIL_ADDRESS_OF>(), 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<HLIL_RETURN_BY_REF>(); + GetExprTextInternal(srcExpr, tokens, settings, UnaryOperatorPrecedence); + if (statement) + tokens.AppendSemicolon(); + }(); + break; + case HLIL_FCMP_E: [&]() { bool parens = precedence > EqualityOperatorPrecedence; |
