21 Star 27 Fork 151

src-openEuler/gcc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0293-Fix-error-with-stmts-insertion-in-ipa-prefetch-for-I.patch 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
huangzifeng 提交于 2024-11-21 11:35 +08:00 . Sync patches from branch openEuler-24.09
From bfb77997f423ffe3bdcbd8bb8d7f739fe51ce4f5 Mon Sep 17 00:00:00 2001
From: Diachkov Ilia <diachkov.ilia1@huawei-partners.com>
Date: Fri, 6 Sep 2024 11:36:11 +0800
Subject: [PATCH 3/3] Fix error with stmts insertion in ipa-prefetch (for
IAO6R3)
Signed-off-by: Diachkov Ilia <diachkov.ilia1@huawei-partners.com>
---
gcc/ipa-prefetch.cc | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/gcc/ipa-prefetch.cc b/gcc/ipa-prefetch.cc
index b000d4d75..6190c2ebb 100644
--- a/gcc/ipa-prefetch.cc
+++ b/gcc/ipa-prefetch.cc
@@ -2096,7 +2096,7 @@ optimize_function (cgraph_node *n, function *fn)
fprintf (dump_file, "\n");
}
- /* Try to find comp_mr's stmt in the dominator bb. */
+ /* Try to find comp_mr's stmt in the post dominator bb. */
gimple *last_used = NULL;
for (gimple_stmt_iterator si = gsi_last_bb (dom_bb); !gsi_end_p (si);
gsi_prev (&si))
@@ -2168,7 +2168,22 @@ optimize_function (cgraph_node *n, function *fn)
vec<gimple *> pcalls = vNULL;
gimple *last_pref = NULL;
insert_prefetch_stmts (pcalls, stmts, last_pref, vmrs, processed_stmts);
- gsi_insert_seq_after (&gsi, stmts, GSI_NEW_STMT);
+
+ gimple *gstmt = gsi_stmt (gsi);
+ bool insert_after = last_used || gstmt == NULL || !is_ctrl_stmt (gstmt);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, "Insert prefetch sequence %s stmt:\n",
+ insert_after ? "after": "before");
+ if (gstmt)
+ print_gimple_stmt (dump_file, gstmt, 0);
+ else
+ fprintf (dump_file, "(no stmts)\n");
+ }
+ if (insert_after)
+ gsi_insert_seq_after (&gsi, stmts, GSI_NEW_STMT);
+ else
+ gsi_insert_seq_before (&gsi, stmts, GSI_NEW_STMT);
correct_cfg (bbends, last_pref, dom_bb);
--
2.33.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/gcc.git
git@gitee.com:src-openeuler/gcc.git
src-openeuler
gcc
gcc
master

搜索帮助