Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
4731-beam_ssa_codegen-Don-t-break-bs_match-sequ...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 4731-beam_ssa_codegen-Don-t-break-bs_match-sequences-by-m.patch of Package erlang
From 07697d39e2cdc142919a610f29739ca0eb82e620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org> Date: Mon, 2 Jan 2023 16:19:37 +0100 Subject: [PATCH] beam_ssa_codegen: Don't break bs_match sequences by mixing registers --- lib/compiler/src/beam_ssa_codegen.erl | 7 +++++++ lib/compiler/test/bs_match_SUITE.erl | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/compiler/src/beam_ssa_codegen.erl b/lib/compiler/src/beam_ssa_codegen.erl index 3ff24ae322..64f9363085 100644 --- a/lib/compiler/src/beam_ssa_codegen.erl +++ b/lib/compiler/src/beam_ssa_codegen.erl @@ -485,6 +485,13 @@ prefer_xregs_is([#cg_set{op=call,dst=Dst}=I0|Is], St, Copies, Acc) -> prefer_xregs_is([#cg_set{op=old_make_fun,dst=Dst}=I0|Is], St, Copies, Acc) -> I = prefer_xregs_call(I0, Copies, St), prefer_xregs_is(Is, St, #{Dst=>{x,0}}, [I|Acc]); +prefer_xregs_is([#cg_set{op=Op}=I|Is], St, Copies0, Acc) + when Op =:= bs_checked_get; + Op =:= bs_checked_skip; + Op =:= bs_checked_get_tail; + Op =:= bs_ensure -> + Copies = prefer_xregs_prune(I, Copies0, St), + prefer_xregs_is(Is, St, Copies, [I|Acc]); prefer_xregs_is([#cg_set{args=Args0}=I0|Is], St, Copies0, Acc) -> Args = [do_prefer_xreg(A, Copies0, St) || A <- Args0], I = I0#cg_set{args=Args}, -- 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