summaryrefslogtreecommitdiff
path: root/gcc/brig
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/brig')
-rw-r--r--gcc/brig/ChangeLog6
-rw-r--r--gcc/brig/brigfrontend/brig-branch-inst-handler.cc2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog
index c66b16fba98..bdb70188240 100644
--- a/gcc/brig/ChangeLog
+++ b/gcc/brig/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-03 Henry Linjamäki <henry.linjamaki@parmance.com>
+
+ * brigfrontend/brig-branch-inst-handler.cc: Fix (more) crash with
+ calls with more than 4 args. It missed a reference which is required
+ because vector expansion can move the object to another location.
+
2017-09-29 Henry Linjamäki <henry.linjamaki@parmance.com>
* brigfrontend/brig-branch-inst-handler.cc: Fix crash with
diff --git a/gcc/brig/brigfrontend/brig-branch-inst-handler.cc b/gcc/brig/brigfrontend/brig-branch-inst-handler.cc
index a32dd996044..30aec373732 100644
--- a/gcc/brig/brigfrontend/brig-branch-inst-handler.cc
+++ b/gcc/brig/brigfrontend/brig-branch-inst-handler.cc
@@ -70,7 +70,7 @@ brig_branch_inst_handler::operator () (const BrigBase *base)
const BrigOperandOffset32_t *operand_ptr
= (const BrigOperandOffset32_t *) data->bytes;
- vec<tree, va_gc> *args = i == 0 ? out_args : in_args;
+ vec<tree, va_gc> *&args = i == 0 ? out_args : in_args;
while (bytes > 0)
{