summaryrefslogtreecommitdiff
path: root/0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch
diff options
context:
space:
mode:
Diffstat (limited to '0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch')
-rw-r--r--0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch b/0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch
new file mode 100644
index 0000000..13341df
--- /dev/null
+++ b/0292-Fix-errors-in-ipa-prefetch-IAORPF-and-IAOSJ0.patch
@@ -0,0 +1,42 @@
+From 808294bf0f32aaff1cc7e56a756b246d328b3402 Mon Sep 17 00:00:00 2001
+From: Diachkov Ilia <diachkov.ilia1@huawei-partners.com>
+Date: Fri, 6 Sep 2024 11:10:03 +0800
+Subject: [PATCH 2/3] Fix errors in ipa-prefetch (IAORPF and IAOSJ0)
+
+Signed-off-by: Diachkov Ilia <diachkov.ilia1@huawei-partners.com>
+---
+ gcc/ipa-prefetch.cc | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/gcc/ipa-prefetch.cc b/gcc/ipa-prefetch.cc
+index b000d4d75..74af55af0 100644
+--- a/gcc/ipa-prefetch.cc
++++ b/gcc/ipa-prefetch.cc
+@@ -1681,7 +1681,8 @@ insert_page_check (tree addr, tree_poly_offset_map &offset_map,
+ unsigned long long pmask = ~(param_ipa_prefetch_pagesize - 1);
+ tree pmask_cst = build_int_cst (utype, pmask);
+ tree off_tree = wide_int_to_tree (sizetype, offset);
+- gcc_assert (TREE_CODE (addr_type) == POINTER_TYPE);
++ gcc_assert (TREE_CODE (addr_type) == POINTER_TYPE
++ || TREE_CODE (addr_type) == REFERENCE_TYPE);
+ tree addr_with_offset = gimple_build (&stmts, POINTER_PLUS_EXPR,
+ addr_type, addr, off_tree);
+ tree conv_addr = make_ssa_name (utype);
+@@ -2082,11 +2083,11 @@ optimize_function (cgraph_node *n, function *fn)
+ for (unsigned int i = 0; i < vmrs.length (); i++)
+ find_nearest_common_post_dominator (vmrs[i], dom_bb);
+
+- if (!dom_bb)
++ if (!dom_bb || dom_bb->index == ENTRY_BLOCK || dom_bb->index == EXIT_BLOCK)
+ {
+ if (dump_file)
+- fprintf (dump_file, "Post dominator bb for MRs is not found. "
+- "Skip the case.\n");
++ fprintf (dump_file, "Post dominator bb for MRs is not found or "
++ "it's an entry/exit block. Skip the case.\n");
+ return 0;
+ }
+ else if (dump_file)
+--
+2.33.0
+