summaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-06 17:22:34 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-06 17:22:34 +0000
commitbbf73e27ac8bd56e5a3d96c7fd361c0605b8d0d1 (patch)
treeaefe1ecd4d6369bfc4ffaac75091b8be5f4fb778 /gcc/lra-constraints.c
parenta0771737785702d15016325848a314e68582403c (diff)
downloadgcc-bbf73e27ac8bd56e5a3d96c7fd361c0605b8d0d1.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211320 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index cafbc898c66..08716fe698a 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,