aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-03-16 19:23:14 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-03-16 19:23:14 -0500
commit6cba9fcc2181b0a6a8c0f1dcecb87e9289516653 (patch)
treefe4133a227446b8bbf39012318fe6662e3077429 /gcc
parent0c0558276011b8b544407d3c1e1c5bbbdce0047e (diff)
downloadgcc-6cba9fcc2181b0a6a8c0f1dcecb87e9289516653.zip
gcc-6cba9fcc2181b0a6a8c0f1dcecb87e9289516653.tar.gz
gcc-6cba9fcc2181b0a6a8c0f1dcecb87e9289516653.tar.bz2
(substitute_in_expr, case COMPONENT_REF): Ignore if inner
PLACEHOLDER_EXPR has not yet been initialized. From-SVN: r11547
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index cfceb59..a1c7e3e 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1,5 +1,5 @@
/* Language-independent node constructors for parse phase of GNU compiler.
- Copyright (C) 1987, 88, 92, 93, 94, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -2286,6 +2286,12 @@ substitute_in_expr (exp, f, r)
&& TREE_OPERAND (exp, 1) == f)
return r;
+ /* If this expression hasn't been completed let, leave it
+ alone. */
+ if (TREE_CODE (inner) == PLACEHOLDER_EXPR
+ && TREE_TYPE (inner) == 0)
+ return exp;
+
new = fold (build (code, TREE_TYPE (exp),
substitute_in_expr (TREE_OPERAND (exp, 0), f, r),
TREE_OPERAND (exp, 1)));