File 5211-Don-t-break-bs_match-sequences-by-mixing-registers-a.patch of Package erlang

From 7d01f8a48fb5fd404469197c1b99509d7fb934a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Mon, 30 Jan 2023 13:37:57 +0100
Subject: [PATCH] Don't break bs_match sequences by mixing registers (again)

See #6623 for a fix to a similar bug reported in #6613.

Closes #6755
---
 lib/compiler/src/beam_ssa_codegen.erl |  3 ++-
 lib/compiler/test/bs_match_SUITE.erl  | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lib/compiler/src/beam_ssa_codegen.erl b/lib/compiler/src/beam_ssa_codegen.erl
index 64f9363085..c5ae273711 100644
--- a/lib/compiler/src/beam_ssa_codegen.erl
+++ b/lib/compiler/src/beam_ssa_codegen.erl
@@ -489,7 +489,8 @@ 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 ->
+       Op =:= bs_ensure;
+       Op =:= bs_match_string ->
     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) ->
-- 
2.35.3

openSUSE Build Service is sponsored by