diff options
author | Xinliang David Li <davidxl@google.com> | 2013-09-24 20:44:03 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@gcc.gnu.org> | 2013-09-24 20:44:03 +0000 |
commit | 4f17aa0b9d1c065f9c1b2979e5782530cade3776 (patch) | |
tree | ad589584e20951af8c0b712b9c985c104b7654e7 /gcc/tree-vect-data-refs.c | |
parent | 114f3eb91d259328f4e043c667656d4ec6bce31a (diff) | |
download | gcc-4f17aa0b9d1c065f9c1b2979e5782530cade3776.zip gcc-4f17aa0b9d1c065f9c1b2979e5782530cade3776.tar.gz gcc-4f17aa0b9d1c065f9c1b2979e5782530cade3776.tar.bz2 |
Implement --param=vect-max-peeling-for-alignment=..
From-SVN: r202875
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r-- | gcc/tree-vect-data-refs.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 98055ae..c8cdcb8 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -1718,6 +1718,30 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) if (do_peeling) { + unsigned max_allowed_peel + = PARAM_VALUE (PARAM_VECT_MAX_PEELING_FOR_ALIGNMENT); + if (max_allowed_peel != (unsigned)-1) + { + unsigned max_peel = npeel; + if (max_peel == 0) + { + gimple dr_stmt = DR_STMT (dr0); + stmt_vec_info vinfo = vinfo_for_stmt (dr_stmt); + tree vtype = STMT_VINFO_VECTYPE (vinfo); + max_peel = TYPE_VECTOR_SUBPARTS (vtype) - 1; + } + if (max_peel > max_allowed_peel) + { + do_peeling = false; + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "Disable peeling, max peels reached: %d\n", max_peel); + } + } + } + + if (do_peeling) + { stmt_info_for_cost *si; void *data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo); |