diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-06 07:32:35 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-06 07:32:35 -0500 |
commit | f59d43a94778d3d160f710ea8b6cf7ac666ab3e6 (patch) | |
tree | 69548cdd6ac0fc995d0477e63d755347c59ac2d3 | |
parent | 3ae243680a4c6597fd3af06fc588cde0f65374a8 (diff) | |
download | gcc-f59d43a94778d3d160f710ea8b6cf7ac666ab3e6.zip gcc-f59d43a94778d3d160f710ea8b6cf7ac666ab3e6.tar.gz gcc-f59d43a94778d3d160f710ea8b6cf7ac666ab3e6.tar.bz2 |
(expand_expr, case PLACEHOLDER_EXPR): Remove top entry from
PLACEHOLDER_LIST when expanding the value in it.
From-SVN: r6187
-rw-r--r-- | gcc/expr.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -3978,6 +3978,7 @@ expand_expr (exp, target, tmode, modifier) if (placeholder_list) { tree object; + tree old_list = placeholder_list; for (object = TREE_PURPOSE (placeholder_list); TREE_TYPE (object) != type @@ -3989,7 +3990,16 @@ expand_expr (exp, target, tmode, modifier) ; if (object && TREE_TYPE (object) == type) - return expand_expr (object, original_target, tmode, modifier); + { + /* Expand this object skipping the list entries before + it was found in case it is also a PLACEHOLDER_EXPR. + In that case, we want to translate it using subsequent + entries. */ + placeholder_list = TREE_CHAIN (placeholder_list); + temp = expand_expr (object, original_target, tmode, modifier); + placeholder_list = old_list; + return temp; + } } /* We can't find the object or there was a missing WITH_RECORD_EXPR. */ |