aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@st.com>2009-05-11 13:01:20 +0000
committerJ"orn Rennecke <joern.rennecke@st.com>2009-05-11 13:01:20 +0000
commit43e901e9a7cd163495f8a680a8e5010fdec61ff2 (patch)
tree5259f64b8f4ab9b50766b455fa288d74546d31d3
parent5064d9ae138cbd18665853ed33d1aceab7d1cb3a (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-target2
-rw-r--r--gcc/genmodes.c11
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