summaryrefslogtreecommitdiff
path: root/0085-loop-distribution-Bugfix-for-loop-distribution.patch
diff options
context:
space:
mode:
Diffstat (limited to '0085-loop-distribution-Bugfix-for-loop-distribution.patch')
-rw-r--r--0085-loop-distribution-Bugfix-for-loop-distribution.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/0085-loop-distribution-Bugfix-for-loop-distribution.patch b/0085-loop-distribution-Bugfix-for-loop-distribution.patch
new file mode 100644
index 0000000..37c2a1b
--- /dev/null
+++ b/0085-loop-distribution-Bugfix-for-loop-distribution.patch
@@ -0,0 +1,58 @@
+From d73cd8783ca930724def3e9909fc484ec15404f5 Mon Sep 17 00:00:00 2001
+From: benniaobufeijiushiji <linda7@huawei.com>
+Date: Mon, 19 Dec 2022 11:48:12 +0800
+Subject: [PATCH 1/3] [loop-distribution] Bugfix for loop-distribution Add
+ exception in function BUILD_QUEUE when there is a null pointer in
+ grouped_loads.
+
+---
+ gcc/tree-loop-distribution.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
+index 88b56379c..b68b9c7eb 100644
+--- a/gcc/tree-loop-distribution.c
++++ b/gcc/tree-loop-distribution.c
+@@ -3208,16 +3208,31 @@ build_queue (loop_vec_info vinfo, unsigned vf,
+ {
+ unsigned group_size = stmt_info->size;
+ stmt_vec_info c_stmt_info = stmt_info;
++ bool succ = true;
+ while (group_size >= vf)
+ {
+ vec_alloc (worklist, vf);
+ for (unsigned j = 0; j < vf; ++j)
+ {
++ if (c_stmt_info == NULL)
++ {
++ succ = false;
++ break;
++ }
+ ginfo = new _group_info ();
+ ginfo->stmt = c_stmt_info->stmt;
+ worklist->safe_push (ginfo);
+ c_stmt_info = c_stmt_info->next_element;
+ }
++ if (!succ)
++ {
++ unsigned k = 0;
++ ginfo = NULL;
++ FOR_EACH_VEC_ELT (*worklist, k, ginfo)
++ delete ginfo;
++ vec_free (worklist);
++ break;
++ }
+ worklists.safe_push (worklist);
+ group_size -= vf;
+ }
+@@ -3711,6 +3726,7 @@ free_ginfos (vec<vec<group_info> *> &worklists)
+ unsigned j = 0;
+ FOR_EACH_VEC_ELT (*worklist, j, ginfo)
+ delete ginfo;
++ vec_free (worklist);
+ }
+ }
+
+--
+2.27.0.windows.1
+