From 098f50c32dca45cafcfc626f49bc7342295afede Mon Sep 17 00:00:00 2001 From: Bob Dubner <rdubner@symas.com> Date: Tue, 2 Jan 2024 17:09:54 -0500 Subject: [PATCH] Make all USING arguments persistent when recursing --- gcc/cobol/genapi.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index 4b2e3ad75a2d..ca520cf062d0 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -5469,6 +5469,21 @@ parser_division(cbl_division_t division, // It makes more sense if you don't think about it too hard. + + // We need to be able to restore prior arguments when doing recursive + // calls: + IF( member(args[i].refer.field->var_decl_node, "data"), + ne_op, + gg_cast(UCHAR_P, null_pointer_node) ) + { + gg_call(VOID, + "__gg__push_local_variable", + 1, + gg_get_address_of(args[i].refer.field->var_decl_node)); + } + ELSE + ENDIF + tree base = gg_define_variable(UCHAR_P); gg_assign(rt_i, build_int_cst_type(INT, i)); IF( rt_i, lt_op , var_decl_call_parameter_count ) -- GitLab