From 01b862af3be3cde43223e4b900f0025f70aaaac2 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Wed, 6 Mar 2019 21:11:23 -0800 Subject: qbe: Fix an aliasing bug --- ...call-when-determining-if-a-local-needs-to.patch | 26 ++++++++++++++++++++++ pkg/qbe/rev | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 pkg/qbe/patch/0004-Consider-vacall-when-determining-if-a-local-needs-to.patch (limited to 'pkg/qbe') diff --git a/pkg/qbe/patch/0004-Consider-vacall-when-determining-if-a-local-needs-to.patch b/pkg/qbe/patch/0004-Consider-vacall-when-determining-if-a-local-needs-to.patch new file mode 100644 index 00000000..71126690 --- /dev/null +++ b/pkg/qbe/patch/0004-Consider-vacall-when-determining-if-a-local-needs-to.patch @@ -0,0 +1,26 @@ +From 2fcb277b0fa2993b00e0a85fe0e28697fe855dd1 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Wed, 6 Mar 2019 20:31:11 -0800 +Subject: [PATCH] Consider vacall when determining if a local needs to be + loaded + +--- + load.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/load.c b/load.c +index 6f5b6ab..a21a488 100644 +--- a/load.c ++++ b/load.c +@@ -231,7 +231,7 @@ def(Slice sl, bits msk, Blk *b, Ins *i, Loc *il) + while (i > b->ins) { + --i; + if (killsl(i->to, sl) +- || (i->op == Ocall && escapes(sl.ref, curf))) ++ || ((i->op == Ocall || i->op == Ovacall) && escapes(sl.ref, curf))) + goto Load; + ld = isload(i->op); + if (ld) { +-- +2.21.0 + diff --git a/pkg/qbe/rev b/pkg/qbe/rev index b4de3947..48082f72 100644 --- a/pkg/qbe/rev +++ b/pkg/qbe/rev @@ -1 +1 @@ -11 +12 -- cgit v1.2.3