aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2014-06-06 17:22:34 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2014-06-06 17:22:34 +0000
commit5a770e0137b2dbfcf87978b6ec949114449ad1a9 (patch)
treeaefe1ecd4d6369bfc4ffaac75091b8be5f4fb778
parent4dadc66d180efede2b31bc3c45a9602cd03fca84 (diff)
downloadgcc-5a770e0137b2dbfcf87978b6ec949114449ad1a9.zip
gcc-5a770e0137b2dbfcf87978b6ec949114449ad1a9.tar.gz
gcc-5a770e0137b2dbfcf87978b6ec949114449ad1a9.tar.bz2
re PR rtl-optimization/61325 (aarch64_be build fails)
2014-06-06 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/61325 * lra-constraints.c (process_address_1): Check scale equal to one to prevent transformation: base + scale * index => base + new_reg. From-SVN: r211320
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lra-constraints.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 19aeddc..4084533 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-06 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/61325
+ * lra-constraints.c (process_address_1): Check scale equal to one
+ to prevent transformation: base + scale * index => base + new_reg.
+
2014-06-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/59299
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index cafbc89..08716fe 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -3033,6 +3033,13 @@ process_address_1 (int nop, rtx *before, rtx *after)
*ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg),
new_reg, *ad.index);
}
+ else if (get_index_scale (&ad) == 1)
+ {
+ /* The last transformation to one reg will be made in
+ curr_insn_transform function. */
+ end_sequence ();
+ return false;
+ }
else
{
/* base + scale * index => base + new_reg,