diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-11-08 18:33:42 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-11-08 18:33:42 +0000 |
commit | ee45a32dae253f7daa966573eb8cb64b2cf7bf52 (patch) | |
tree | cf927ff52a6d5ba28290472db09363fe67a835d6 /gcc/tree-data-ref.c | |
parent | eb11eb157cf07500e2915da8a72f2f3a501cc5ae (diff) | |
download | gcc-ee45a32dae253f7daa966573eb8cb64b2cf7bf52.zip gcc-ee45a32dae253f7daa966573eb8cb64b2cf7bf52.tar.gz gcc-ee45a32dae253f7daa966573eb8cb64b2cf7bf52.tar.bz2 |
Merge of the scalar-storage-order branch.
From-SVN: r229965
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r-- | gcc/tree-data-ref.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 0004fea..74f7614 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -613,11 +613,12 @@ split_constant_offset_1 (tree type, tree op0, enum tree_code code, tree op1, tree base, poffset; HOST_WIDE_INT pbitsize, pbitpos; machine_mode pmode; - int punsignedp, pvolatilep; + int punsignedp, preversep, pvolatilep; op0 = TREE_OPERAND (op0, 0); - base = get_inner_reference (op0, &pbitsize, &pbitpos, &poffset, - &pmode, &punsignedp, &pvolatilep, false); + base + = get_inner_reference (op0, &pbitsize, &pbitpos, &poffset, &pmode, + &punsignedp, &preversep, &pvolatilep, false); if (pbitpos % BITS_PER_UNIT != 0) return false; @@ -761,7 +762,7 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest) HOST_WIDE_INT pbitsize, pbitpos; tree base, poffset; machine_mode pmode; - int punsignedp, pvolatilep; + int punsignedp, preversep, pvolatilep; affine_iv base_iv, offset_iv; tree init, dinit, step; bool in_loop = (loop && loop->num); @@ -769,8 +770,8 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest) if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "analyze_innermost: "); - base = get_inner_reference (ref, &pbitsize, &pbitpos, &poffset, - &pmode, &punsignedp, &pvolatilep, false); + base = get_inner_reference (ref, &pbitsize, &pbitpos, &poffset, &pmode, + &punsignedp, &preversep, &pvolatilep, false); gcc_assert (base != NULL_TREE); if (pbitpos % BITS_PER_UNIT != 0) @@ -780,6 +781,13 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest) return false; } + if (preversep) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "failed: reverse storage order.\n"); + return false; + } + if (TREE_CODE (base) == MEM_REF) { if (!integer_zerop (TREE_OPERAND (base, 1))) |