Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang
erlang
3061-beam_ssa_recv-Track-parameters-through-ret...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3061-beam_ssa_recv-Track-parameters-through-return-edges.patch of Package erlang
From 72c1aa4cc2b4ff18f66052d956d240f47075edf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org> Date: Wed, 8 Feb 2023 13:06:34 +0100 Subject: [PATCH] beam_ssa_recv: Track parameters through return edges --- lib/compiler/src/beam_ssa_recv.erl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/compiler/src/beam_ssa_recv.erl b/lib/compiler/src/beam_ssa_recv.erl index 64953837e4..d509fa18ad 100644 --- a/lib/compiler/src/beam_ssa_recv.erl +++ b/lib/compiler/src/beam_ssa_recv.erl @@ -284,7 +284,8 @@ scan_add_call(Call, CallLbl, SuccLbl, Caller, #scan{module=ModMap}=State0) -> {CallTranslation, CallInverse, Args}, State0), - {RetTranslation, RetInverse} = scan_translate_return(Rets, Dst), + {RetTranslation, RetInverse} = + scan_translate_return(Rets, Dst, CallTranslation), scan_add_edge({Callee, ?RETURN_BLOCK}, {Caller, SuccLbl}, {RetTranslation, RetInverse, Params}, @@ -297,9 +298,10 @@ scan_translate_call([Arg | Args], [Param | Params], ArgToParams, ParamToArgs) -> scan_translate_call([], [], ArgToParams, ParamToArgs) -> {ArgToParams, ParamToArgs}. -scan_translate_return(Rets, Dst) -> +scan_translate_return(Rets, Dst, CallerToCallee0) -> + CallerToCallee = CallerToCallee0#{ Dst => Rets }, CalleeToCaller = scan_translate_return_1(Rets, Dst, #{}), - {CalleeToCaller, #{ Dst => Rets }}. + {CalleeToCaller, CallerToCallee}. scan_translate_return_1([Ret | Rets], Dst, CalleeToCaller) -> scan_translate_return_1(Rets, Dst, CalleeToCaller#{ Ret => Dst }); -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor