summaryrefslogtreecommitdiff
path: root/gcc/read-rtl.c
diff options
context:
space:
mode:
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-22 07:48:13 +0000
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-22 07:48:13 +0000
commit873bf3e1232f0d68f7b58923242b30f62b9f8c00 (patch)
tree2e42a28cbcc07b2eecda5dd30e14921ed15049d5 /gcc/read-rtl.c
parent6ddd7bb8d448316565b83481027a9051a5272049 (diff)
downloadgcc-873bf3e1232f0d68f7b58923242b30f62b9f8c00.tar.gz
* read-rtl.c (copy_rtx_for_iterators): Continue applying iterators
while it has any effect. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199177 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/read-rtl.c')
-rw-r--r--gcc/read-rtl.c8
1 files changed, 5 insertions, 3 deletions
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':