From: ceriel Date: Fri, 2 Oct 1987 12:43:54 +0000 (+0000) Subject: Handle GTO, LOR/STR 0 also use local base X-Git-Tag: release-5-5~3824 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=1ac5d9c95a30981e7f62c01236f4779ffa1a4bd3;p=ack.git Handle GTO, LOR/STR 0 also use local base --- diff --git a/util/ego/cf/cf.c b/util/ego/cf/cf.c index b1cd2754c..fe4be6138 100644 --- a/util/ego/cf/cf.c +++ b/util/ego/cf/cf.c @@ -23,6 +23,7 @@ #include "../../../h/em_pseu.h" #include "../../../h/em_spec.h" #include "../../../h/em_flag.h" +#include "../../../h/em_mes.h" #include "../share/def.h" #include "cf.h" #include "cf_succ.h" @@ -303,6 +304,17 @@ STATIC interproc_analysis(p) case op_lxa: curproc->p_flags1 |= PF_ENVIRON; break; + case op_lor: + case op_str: + if (SHORT(lnp) == 0) { + curproc->p_flags1 |= PF_ENVIRON; + } + break; + case ps_mes: + if (aoff(ARG(lnp),0) == ms_gto) { + ENTERED_WITH_GTO(curproc); + } + break; } } } diff --git a/util/ego/cf/cf_succ.c b/util/ego/cf/cf_succ.c index ac71e5f7b..21176c487 100644 --- a/util/ego/cf/cf_succ.c +++ b/util/ego/cf/cf_succ.c @@ -236,7 +236,9 @@ control_flow(head) } else { if (!IS_RETURN(instr)) { if (IS_UNCOND_JUMP(instr)) { - succeeds(TARGET(lnp),b); + if (instr != op_gto) { + succeeds(TARGET(lnp),b); + } } else { if (IS_COND_JUMP(instr)) { succeeds(TARGET(lnp),b);