On Mon, 25 Sep 2017, Martin Jambor wrote:
> --- a/gcc/tree-sra.c
> +++ b/gcc/tree-sra.c
> @@ -1542,19 +1542,20 @@ compare_access_positions (const void *a, const void
> *b)
> && TREE_CODE (f2->type) != COMPLEX_TYPE
> && TREE_CODE (f2->type) != VECTOR_TYPE)
> return -1;
> - /* Put the integral type with the bigger precision first. */
> + /* Put any integral type before any non-integral type. When splicing,
> we
> + make sure that those with insufficient precision and occupupying the
Typo (s/upup/up).
> @@ -2102,6 +2106,21 @@ sort_and_splice_var_accesses (tree var)
> this combination of size and offset, the comparison function
> should have put the scalars first. */
> gcc_assert (first_scalar || !is_gimple_reg_type (ac2->type));
> + /* It also prefers integral types to non-integral. However, when the
> + precision of the selected type does not span the entire area and
> + should also be used for a non-integer (i.e. float), we must not
> + let that happen. */
> + if (non_full_precision && !INTEGRAL_TYPE_P (ac2->type))
> + {
> + if (dump_file && (dump_flags & TDF_DETAILS))
> + {
> + fprintf (dump_file, "Cannot sclarize the following access "
Typo ('scalarize').
Thanks! If this is resolved, haifa-sched autoprefetch ranking will become the
last remaining (among discovered so far) inconsistent qsort comparator in GCC.
Alexander