summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkugwa <kugwa2000@gmail.com>2016-01-21 18:45:08 +0800
committerkugwa <kugwa2000@gmail.com>2016-01-21 18:46:39 +0800
commit0b2af19e14053a2d02447a3fec93b2cf24a799aa (patch)
tree6940ed2582e3fb1cfa91162873899882945aead0
parent47ce6d2cb6c10aad10e6e4c7eb554e34e0c96e35 (diff)
downloadcompiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar.gz
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar.bz2
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar.lz
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar.xz
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.tar.zst
compiler2015-0b2af19e14053a2d02447a3fec93b2cf24a799aa.zip
Add missing _caller_save() and _save_arguments()
-rw-r--r--src/code-generation.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/code-generation.c b/src/code-generation.c
index 644e7c5..a0551d9 100644
--- a/src/code-generation.c
+++ b/src/code-generation.c
@@ -545,6 +545,9 @@ static void call_function(CcmmcAst *id, CcmmcState *state,
for (i = 0; i < call_param_count; i++)
ccmmc_register_free(state->reg_pool, dists[i], current_offset);
return;
+ } else {
+ ccmmc_register_save_arguments(state->reg_pool, stored_param_count);
+ ccmmc_register_caller_save(state->reg_pool);
}
fprintf(state->asm_output, "\tbl\t%s\n", func_name);
ccmmc_register_caller_load(state->reg_pool);