On 2014-06-03, 6:02 PM, James Greenhalgh wrote:
On Thu, May 29, 2014 at 06:38:22PM +0100, Vladimir Makarov wrote:
The following patch PR61325. The details can be found on
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61325
The patch was bootstrapped and tested on x86/x86-64.
Committed as rev. 211060 to gcc-4.9 branch and as rev.211061 to trunk.
2014-05-29 Vladimir Makarov <vmaka...@redhat.com>
PR rtl-optimization/61325
* lra-constraints.c (process_address): Rename to
process_address_1.
(process_address): New function.
2014-05-29 Vladimir Makarov <vmaka...@redhat.com>
PR rtl-optimization/61325
* gcc.target/aarch64/pr61325.c: New.
Hi Vlad,
This patch appears to cause issues where the ARM backend can get stuck in a
seemingly infinite loop.
Sorry for inconvenience.
Could you test the following patch
Index: lra-constraints.c
===================================================================
--- lra-constraints.c (revision 211061)
+++ lra-constraints.c (working copy)
@@ -2974,6 +2974,13 @@ process_address_1 (int nop, rtx *before,
*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,
If it is ok, I'll commit it as soon as possible.
I checked the patch on x86/x86-64. The patch is ok for this platform.