Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-vect-analyze.c @ 19:58ad6c70ea60
update gcc from 4.4.0 to 4.4.1.
author | kent@firefly.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 24 Sep 2009 13:21:57 +0900 |
parents | a06113de4d67 |
children | 3bfb6c00c1e0 |
line wrap: on
line diff
--- a/gcc/tree-vect-analyze.c Thu Sep 24 13:06:16 2009 +0900 +++ b/gcc/tree-vect-analyze.c Thu Sep 24 13:21:57 2009 +0900 @@ -199,6 +199,15 @@ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM); } + if (gimple_has_volatile_ops (stmt)) + { + if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS)) + fprintf (vect_dump, "not vectorized: stmt has volatile" + " operands"); + + return false; + } + gcc_assert (stmt_info); /* skip stmts which do not need to be vectorized. */ @@ -2187,7 +2196,7 @@ tree next_step; tree prev_init = DR_INIT (data_ref); gimple prev = stmt; - HOST_WIDE_INT diff, count_in_bytes; + HOST_WIDE_INT diff, count_in_bytes, gaps = 0; while (next) { @@ -2249,6 +2258,8 @@ fprintf (vect_dump, "interleaved store with gaps"); return false; } + + gaps += diff - 1; } /* Store the gap from the previous member of the group. If there is no @@ -2265,8 +2276,9 @@ the type to get COUNT_IN_BYTES. */ count_in_bytes = type_size * count; - /* Check that the size of the interleaving is not greater than STEP. */ - if (dr_step < count_in_bytes) + /* Check that the size of the interleaving (including gaps) is not greater + than STEP. */ + if (dr_step && dr_step < count_in_bytes + gaps * type_size) { if (vect_print_dump_info (REPORT_DETAILS)) {