diff options
author | J"orn Rennecke <joern.rennecke@st.com> | 2009-05-11 13:01:20 +0000 |
---|---|---|
committer | J"orn Rennecke <joern.rennecke@st.com> | 2009-05-11 13:01:20 +0000 |
commit | 43e901e9a7cd163495f8a680a8e5010fdec61ff2 (patch) | |
tree | 5259f64b8f4ab9b50766b455fa288d74546d31d3 | |
parent | 5064d9ae138cbd18665853ed33d1aceab7d1cb3a (diff) |
* genmodes.c (drop_mode): handle !old_contained.multi-target-4_4-branch
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/multi-target-4_4-branch@147374 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.multi-target | 2 | ||||
-rw-r--r-- | gcc/genmodes.c | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog.multi-target b/gcc/ChangeLog.multi-target index 6e354bdab70..fe64bfa5bd1 100644 --- a/gcc/ChangeLog.multi-target +++ b/gcc/ChangeLog.multi-target @@ -1,5 +1,7 @@ 2009-05-11 J"orn Rennecke <joern.rennecke@arc.com> + * genmodes.c (drop_mode): handle !old_contained. + * genmodes.c (find_mode): Set target field for to-be searched mode. (eq_mode): Also consider target. (drop_mode): New function. diff --git a/gcc/genmodes.c b/gcc/genmodes.c index 716d5c102d7..047586aec10 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -446,10 +446,13 @@ drop_mode (struct mode_data *old, struct mode_data *new) struct mode_data *m, *last; DEBUG ("dropping %s %s\n", m->name, m->target); - for (m = old->contained; m; last = m, m = m->next_cont) - m->component = new; - last->next_cont = new->contained; - new->contained = old->contained; + if old->contained) + { + for (m = old->contained; m; last = m, m = m->next_cont) + m->component = new; + last->next_cont = new->contained; + new->contained = old->contained; + } } static void |