summaryrefslogtreecommitdiff
path: root/gcc/tree.c
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 /gcc/tree.c
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
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c7
1 files changed, 7 insertions, 0 deletions
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;