Hi,
This patch moves pass ivcanon before loop distribution. Pass loop split could
create
loops with limited niters. Such loop should be unrolled before loop
distribution (or graphite),
rather than after.
Bootstrap and test at O2/O3 on x86_64 and AArch64. is it OK?
Thanks,
bin
2017-05-31 Bin Cheng <bin.ch...@arm.com>
* passes.def (pass_iv_canon): Move before pass_loop_distribution.
From 1698cc3e552a17e84719dba1ff2fbe4a8890e6be Mon Sep 17 00:00:00 2001
From: Bin Cheng <binch...@e108451-lin.cambridge.arm.com>
Date: Tue, 30 May 2017 17:56:05 +0100
Subject: [PATCH 3/5] move-ivcanon-pass-20170529.txt
---
gcc/passes.def | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/passes.def b/gcc/passes.def
index 10a18bf..beb350b 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -277,6 +277,7 @@ along with GCC; see the file COPYING3. If not see
empty loops. Remove them now. */
NEXT_PASS (pass_cd_dce);
NEXT_PASS (pass_record_bounds);
+ NEXT_PASS (pass_iv_canon);
NEXT_PASS (pass_loop_distribution);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_graphite);
@@ -286,7 +287,6 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_dce);
POP_INSERT_PASSES ()
- NEXT_PASS (pass_iv_canon);
NEXT_PASS (pass_parallelize_loops, false /* oacc_kernels_p */);
NEXT_PASS (pass_expand_omp_ssa);
NEXT_PASS (pass_ch_vect);
--
1.9.1