Fix fallback when register allocation fails

A register allocation failure was causing no program to be made available,
not even a safe/slow "fallback" equivalent. Upstream patch from git fixes
this. http://dev.laptop.org/ticket/12463
This commit is contained in:
Daniel Drake 2013-01-19 08:01:00 -06:00
parent f39256968b
commit 519b9772c8
2 changed files with 68 additions and 1 deletions

View File

@ -1,6 +1,6 @@
Name: orc Name: orc
Version: 0.4.16 Version: 0.4.16
Release: 6%{?dist} Release: 7%{?dist}
Summary: The Oil Run-time Compiler Summary: The Oil Run-time Compiler
Group: System Environment/Libraries Group: System Environment/Libraries
@ -13,9 +13,13 @@ BuildRequires: gtk-doc, libtool
Patch1: orc-no-nopl.patch Patch1: orc-no-nopl.patch
Patch2: orc-no-nopw.patch Patch2: orc-no-nopw.patch
# Upstream bug: https://bugs.freedesktop.org/show_bug.cgi?id=41446 # Upstream bug: https://bugs.freedesktop.org/show_bug.cgi?id=41446
Patch3: orc-subdir.patch Patch3: orc-subdir.patch
# Fix fallback when register allocation fails
Patch4: reg-alloc-fail.patch
%description %description
Orc is a library and set of tools for compiling and executing Orc is a library and set of tools for compiling and executing
very simple programs that operate on arrays of data. The "language" very simple programs that operate on arrays of data. The "language"
@ -59,6 +63,7 @@ The Orc compiler, to produce optimized code.
%patch1 -p1 -b .nopl %patch1 -p1 -b .nopl
%patch2 -p1 -b .nopw %patch2 -p1 -b .nopw
%patch3 -p1 -b .subdir %patch3 -p1 -b .subdir
%patch4 -p1 -b .regalloc
autoreconf -vif autoreconf -vif
@ -122,6 +127,10 @@ make check
%changelog %changelog
* Sat Jan 19 2012 Daniel Drake <dsd@laptop.org> - 0.4.16-7
- Fix fallback path when register allocation fails
- Fixes gstreamer-1.0 crash on OLPC XO-1.75
* Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.16-6 * Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.16-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

58
reg-alloc-fail.patch Normal file
View File

@ -0,0 +1,58 @@
Fixes http://dev.laptop.org/ticket/12463
From b4f7fcaf99a4d952e59f2a9fa9286d24cc4b3a5a Mon Sep 17 00:00:00 2001
From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= <sebastian.droege@collabora.co.uk>
Date: Thu, 10 Jan 2013 18:13:32 +0100
Subject: [PATCH] orccompiler: Allow fallback to backup/emulation if the
target specific register allocation fails
The OrcCode of the program wouldn't be filled with all required fields
if the register allocation happens to early.
---
orc/orccompiler.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index 68eb01e..2175206 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -254,12 +254,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
orc_compiler_rewrite_vars (compiler);
if (compiler->error) goto error;
- if (compiler->target) {
- orc_compiler_global_reg_alloc (compiler);
-
- orc_compiler_rewrite_vars2 (compiler);
- }
-
#if 0
{
ORC_ERROR("variables");
@@ -285,9 +279,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
}
}
#endif
-
- if (compiler->error) goto error;
-
program->orccode = orc_code_new ();
program->orccode->is_2d = program->is_2d;
@@ -323,6 +314,13 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
goto error;
}
+ if (compiler->target) {
+ orc_compiler_global_reg_alloc (compiler);
+
+ orc_compiler_rewrite_vars2 (compiler);
+ }
+ if (compiler->error) goto error;
+
orc_compiler_assign_rules (compiler);
if (compiler->error) goto error;
--
1.7.9.5