From b54fa9745b3bd84cb44baf9dbee2379fa9e28362 Mon Sep 17 00:00:00 2001
From: Bin Cheng <binche01@e108451-lin.cambridge.arm.com>
Date: Wed, 9 Aug 2017 15:40:38 +0100
Subject: [PATCH 5/6] clear-fixed-dep_info-20170801.txt
---
gcc/tree-ssa-address.c | 40 ++++++++++++++++++++++++++++++++++++++++
gcc/tree-ssa-address.h | 1 +
gcc/tree-ssa-loop.c | 2 ++
3 files changed, 43 insertions(+)
@@ -975,6 +975,46 @@ copy_dependence_info (tree to, tree from)
MR_DEPENDENCE_FIXED_LENGTH_P (to) = MR_DEPENDENCE_FIXED_LENGTH_P (from);
}
+/* Clear dependence information in REF if it's for fixed access length. */
+
+static inline void
+clear_dependence_info (tree ref)
+{
+ if ((TREE_CODE (ref) != MEM_REF && TREE_CODE (ref) != TARGET_MEM_REF)
+ || !MR_DEPENDENCE_FIXED_LENGTH_P (ref))
+ return;
+
+ MR_DEPENDENCE_CLIQUE (ref) = 0;
+ MR_DEPENDENCE_BASE (ref) = 0;
+ MR_DEPENDENCE_FIXED_LENGTH_P (ref) = false;
+}
+
+/* Clear all dependence information which is for fixed access length. */
+
+void
+clear_all_dependence_info ()
+{
+ basic_block bb;
+
+ FOR_EACH_BB_FN (bb, cfun)
+ {
+ for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
+ !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple *stmt = gsi_stmt (gsi);
+ if (!is_gimple_assign (stmt))
+ continue;
+
+ enum tree_code code = gimple_assign_rhs_code (stmt);
+ if (get_gimple_rhs_class (code) != GIMPLE_SINGLE_RHS)
+ continue;
+
+ clear_dependence_info (gimple_assign_lhs (stmt));
+ clear_dependence_info (gimple_assign_rhs1 (stmt));
+ }
+ }
+}
+
/* Copies the reference information from OLD_REF to NEW_REF, where
NEW_REF should be either a MEM_REF or a TARGET_MEM_REF. */
@@ -37,6 +37,7 @@ extern void move_fixed_address_to_symbol (struct mem_address *,
tree create_mem_ref (gimple_stmt_iterator *, tree,
struct aff_tree *, tree, tree, tree, bool);
extern void copy_dependence_info (tree, tree);
+extern void clear_all_dependence_info ();
extern void copy_ref_info (tree, tree);
tree maybe_fold_tmr (tree);
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa-loop-manip.h"
#include "tree-ssa-loop-niter.h"
#include "tree-ssa-loop.h"
+#include "tree-ssa-address.h"
#include "cfgloop.h"
#include "tree-inline.h"
#include "tree-scalar-evolution.h"
@@ -517,6 +518,7 @@ tree_ssa_loop_done (void)
free_numbers_of_iterations_estimates (cfun);
scev_finalize ();
loop_optimizer_finalize ();
+ clear_all_dependence_info ();
return 0;
}
--
1.9.1