aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Zolotukhin <michael.v.zolotukhin@intel.com>2013-05-22 07:48:13 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2013-05-22 07:48:13 +0000
commitc0602ab82fb900a92cdeb0b09dfbf16a993aaf7b (patch)
tree2e42a28cbcc07b2eecda5dd30e14921ed15049d5 /gcc
parentf6684c8d90f76becf0640bb3f48c7fa83bf2a0ea (diff)
downloadgcc-c0602ab82fb900a92cdeb0b09dfbf16a993aaf7b.zip
gcc-c0602ab82fb900a92cdeb0b09dfbf16a993aaf7b.tar.gz
gcc-c0602ab82fb900a92cdeb0b09dfbf16a993aaf7b.tar.bz2
read-rtl.c (copy_rtx_for_iterators): Continue applying iterators while it has any effect.
* read-rtl.c (copy_rtx_for_iterators): Continue applying iterators while it has any effect. From-SVN: r199177
Diffstat (limited to 'gcc')
-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 c43d820..663bfb2 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 cd58b1f..2b76c1b 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':