diff options
author | Michael Lass | 2019-12-01 18:23:55 +0100 |
---|---|---|
committer | Michael Lass | 2019-12-01 22:34:13 +0100 |
commit | 90648e8c5be33987cd92bfac910b2e9db1fc21db (patch) | |
tree | 9938ffc2cb666b5a4be68c98c4aecb09ad4aa777 /GBE-let-GenRegister-reg-never-return-uninitialized-m.patch | |
parent | d58cef24046d2e4e882c71c53fddd7df4fd4cc0f (diff) | |
download | aur-90648e8c5be33987cd92bfac910b2e9db1fc21db.tar.gz |
Fix build against current git version
This introduces a couple of changes:
* match more closely the version in the community repository
* change git url to github as it contains newer commits
* build against LLVM 7, as this is currently the most recent version
supported by upstream
* add optional patch to resolve undefined behavior / segfaults
* build with cmake and ninja
Diffstat (limited to 'GBE-let-GenRegister-reg-never-return-uninitialized-m.patch')
-rw-r--r-- | GBE-let-GenRegister-reg-never-return-uninitialized-m.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/GBE-let-GenRegister-reg-never-return-uninitialized-m.patch b/GBE-let-GenRegister-reg-never-return-uninitialized-m.patch new file mode 100644 index 000000000000..7f6efa7d14b1 --- /dev/null +++ b/GBE-let-GenRegister-reg-never-return-uninitialized-m.patch @@ -0,0 +1,37 @@ +From e837f9f4c6133d8ef56923ffbdbca224b1d7aa23 Mon Sep 17 00:00:00 2001 +From: Michael Lass <bevan@bi-co.net> +Date: Sun, 1 Dec 2019 13:05:45 +0100 +Subject: [PATCH] GBE: let GenRegister::reg() never return uninitialized memory + +GenRegister::reg() is called throughout the code, not only on virtual +but also on physical registers. For the latter, value.reg is not +initialized and therefore reg() returns uninitialized memory, leading to +undefined behavior. Make sure to always return initialized memory by +returning a valid ir::Register, even for physical registers. + +Fixes https://gitlab.freedesktop.org/beignet/beignet/issues/12 +--- + backend/src/backend/gen_register.hpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/backend/src/backend/gen_register.hpp b/backend/src/backend/gen_register.hpp +index 6c73f5e6..78846c91 100644 +--- a/backend/src/backend/gen_register.hpp ++++ b/backend/src/backend/gen_register.hpp +@@ -243,7 +243,12 @@ namespace gbe + } + + /*! Return the IR virtual register */ +- INLINE ir::Register reg(void) const { return ir::Register(value.reg); } ++ INLINE ir::Register reg(void) const { ++ if (this->physical) ++ return ir::Register(); ++ else ++ return ir::Register(value.reg); ++ } + + /*! For immediates or virtual register */ + union { +-- +2.24.0 + |