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