File 1021-ops.tab-Move-more-specific-transforms-before-general.patch of Package erlang
From 27d790000003cce164a002065e3c269189f8e114 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Sat, 13 May 2023 09:34:17 +0200
Subject: [PATCH 1/5] ops.tab: Move more specific transforms before general
transforms
---
erts/emulator/beam/jit/arm/ops.tab | 20 ++++++++++----------
erts/emulator/beam/jit/x86/ops.tab | 10 ++++++++++
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/erts/emulator/beam/jit/arm/ops.tab b/erts/emulator/beam/jit/arm/ops.tab
index 6d27a18c2d..e154fb36d1 100644
--- a/erts/emulator/beam/jit/arm/ops.tab
+++ b/erts/emulator/beam/jit/arm/ops.tab
@@ -55,6 +55,16 @@ func_info M=a a==am_module_info A=u==1 | label L | move n x==0 => too_old_compil
bif1 Fail u$func:erlang:is_constant/1 Src Dst => too_old_compiler
+#
+# Old guard BIFs that creates heap fragments are no longer allowed.
+#
+bif1 Fail u$bif:erlang:length/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:size/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:abs/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:float/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:round/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:trunc/1 s d => too_old_compiler
+
#
# All the other instructions.
#
@@ -1390,16 +1400,6 @@ i_bnot j I s d
i_bsr j I s s d
i_bsl j I s s d
-#
-# Old guard BIFs that creates heap fragments are no longer allowed.
-#
-bif1 Fail u$bif:erlang:length/1 s d => too_old_compiler
-bif1 Fail u$bif:erlang:size/1 s d => too_old_compiler
-bif1 Fail u$bif:erlang:abs/1 s d => too_old_compiler
-bif1 Fail u$bif:erlang:float/1 s d => too_old_compiler
-bif1 Fail u$bif:erlang:round/1 s d => too_old_compiler
-bif1 Fail u$bif:erlang:trunc/1 s d => too_old_compiler
-
#
# Handle the length/1 guard BIF specially to make it trappable.
#
diff --git a/erts/emulator/beam/jit/x86/ops.tab b/erts/emulator/beam/jit/x86/ops.tab
index ef57021d83..12be270ff9 100644
--- a/erts/emulator/beam/jit/x86/ops.tab
+++ b/erts/emulator/beam/jit/x86/ops.tab
@@ -57,6 +57,16 @@ func_info M=a a==am_module_info A=u==1 | label L | move n x==0 =>
bif1 Fail u$func:erlang:is_constant/1 Src Dst => too_old_compiler
+#
+# Old guard BIFs that creates heap fragments are no longer allowed.
+#
+bif1 Fail u$bif:erlang:length/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:size/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:abs/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:float/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:round/1 s d => too_old_compiler
+bif1 Fail u$bif:erlang:trunc/1 s d => too_old_compiler
+
#
# All the other instructions.
#
--
2.35.3