summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/read-rtl.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c43d82034fc..663bfb26933 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-05-22 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * read-rtl.c (copy_rtx_for_iterators): Continue applying iterators
+ while it has any effect.
+
2013-05-21 Easwaran Raman <eraman@google.com>
PR tree-optimization/57322
diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c
index cd58b1f8238..2b76c1b9db2 100644
--- a/gcc/read-rtl.c
+++ b/gcc/read-rtl.c
@@ -380,7 +380,7 @@ apply_iterator_to_string (const char *string)
static rtx
copy_rtx_for_iterators (rtx original)
{
- const char *format_ptr;
+ const char *format_ptr, *p;
int i, j;
rtx x;
@@ -397,12 +397,14 @@ copy_rtx_for_iterators (rtx original)
switch (format_ptr[i])
{
case 'T':
- XTMPL (x, i) = apply_iterator_to_string (XTMPL (x, i));
+ while (XTMPL (x, i) != (p = apply_iterator_to_string (XTMPL (x, i))))
+ XTMPL (x, i) = p;
break;
case 'S':
case 's':
- XSTR (x, i) = apply_iterator_to_string (XSTR (x, i));
+ while (XSTR (x, i) != (p = apply_iterator_to_string (XSTR (x, i))))
+ XSTR (x, i) = p;
break;
case 'e':