summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-29 20:40:37 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-29 20:40:37 +0000
commitcef46d40ab159052bf5542a6699012ec9c954c4c (patch)
treeb7dfde5673777a9ff6af2467e3188ef73e60c109
parent6d731e4def9f9f9b3cb2d8621092c7655d1b7435 (diff)
downloadgcc-cef46d40ab159052bf5542a6699012ec9c954c4c.tar.gz
* tree.c (unsave_expr_1): Don't mess with a TARGET_EXPR that hasn't
been expanded. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32814 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 428eccbe673..e2c99f8d52d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-03-29 Jason Merrill <jason@casey.cygnus.com>
+
+ * tree.c (unsave_expr_1): Don't mess with a TARGET_EXPR that hasn't
+ been expanded.
+
Wed Mar 29 15:39:10 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stor-layout.c (bit_from_pos, byte_from_pos): New functions.
diff --git a/gcc/tree.c b/gcc/tree.c
index 826327e0ee6..f018e9d86cf 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -2605,6 +2605,13 @@ unsave_expr_1 (expr)
break;
case TARGET_EXPR:
+ /* Don't mess with a TARGET_EXPR that hasn't been expanded.
+ It's OK for this to happen if it was part of a subtree that
+ isn't immediately expanded, such as operand 2 of another
+ TARGET_EXPR. */
+ if (TREE_OPERAND (expr, 1))
+ break;
+
TREE_OPERAND (expr, 1) = TREE_OPERAND (expr, 3);
TREE_OPERAND (expr, 3) = NULL_TREE;
break;