From 12446037bd1f330c779ce7a01c7b9030bbe4ece0 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Sun, 1 Aug 2021 18:24:58 -0400 Subject: [PATCH] [decompiler] Make addition nicer (#733) * temp * update refs * update reference * fix tests --- decompiler/IR2/FormExpressionAnalysis.cpp | 100 +++++++++++++----- .../reference/engine/ambient/mood_REF.gc | 62 +++-------- .../engine/camera/cam-debug-h_REF.gc | 10 +- .../reference/engine/camera/camera_REF.gc | 48 ++------- .../engine/collide/collide-frag_REF.gc | 12 +-- .../engine/collide/collide-shape-h_REF.gc | 12 +-- .../reference/engine/data/art-h_REF.gc | 2 +- .../reference/engine/data/res_REF.gc | 13 +-- .../reference/engine/debug/menu_REF.gc | 2 +- .../reference/engine/debug/stats-h_REF.gc | 8 +- .../reference/engine/dma/dma-bucket_REF.gc | 4 +- .../reference/engine/dma/dma-buffer_REF.gc | 8 +- .../reference/engine/dma/dma-disasm_REF.gc | 7 +- .../reference/engine/dma/dma_REF.gc | 2 +- .../engine/draw/process-drawable-h_REF.gc | 2 +- .../reference/engine/engine/connect_REF.gc | 18 ++-- .../reference/engine/gfx/hw/display_REF.gc | 11 +- .../reference/engine/gfx/hw/gs_REF.gc | 2 +- .../reference/engine/gfx/merc/merc-h_REF.gc | 5 +- .../engine/gfx/ocean/ocean-transition_REF.gc | 37 ++----- .../reference/engine/gfx/ripple_REF.gc | 2 +- .../engine/gfx/shrub/shrubbery-h_REF.gc | 9 +- .../reference/engine/gfx/sprite/sprite_REF.gc | 14 +-- .../reference/engine/gfx/texture_REF.gc | 82 +++++--------- .../engine/gfx/tfrag/subdivide_REF.gc | 22 ++-- .../reference/engine/gfx/vis/bsp-h_REF.gc | 2 +- .../reference/engine/gfx/wind-h_REF.gc | 5 +- .../reference/engine/load/loader_REF.gc | 9 +- .../reference/engine/math/vector-h_REF.gc | 10 +- .../reference/engine/nav/navigate-h_REF.gc | 2 +- .../reference/engine/ps2/pad_REF.gc | 7 +- .../reference/engine/ps2/rpc-h_REF.gc | 7 +- .../reference/engine/ps2/timer_REF.gc | 12 +-- .../reference/engine/sound/gsound_REF.gc | 12 ++- .../reference/engine/ui/credits_REF.gc | 2 +- .../reference/kernel/gcommon_REF.gc | 29 ++--- .../reference/kernel/gkernel_REF.gc | 39 ++----- .../reference/kernel/gstring_REF.gc | 44 ++------ test/decompiler/test_FormExpressionBuild.cpp | 55 +++++----- test/decompiler/test_FormExpressionBuild2.cpp | 3 +- .../test_FormExpressionBuildLong.cpp | 22 +--- test/decompiler/test_gkernel_decomp.cpp | 76 ++++--------- 42 files changed, 294 insertions(+), 536 deletions(-) diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index 4f43d06777..2d454e5faa 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -689,6 +689,54 @@ void SimpleExpressionElement::update_from_stack_si_1(const Env& env, make_cast_if_needed(arg, in_type, TypeSpec("int"), pool, env))); } +namespace { +std::vector