diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1998-04-03 12:17:58 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-04-03 07:17:58 -0500 |
commit | b3e401c25a949e00ea3a77a508d3a33142f139e2 (patch) | |
tree | 3db835b5eec1bdb109338f53bf3dc77fd46eb6aa /gcc/cp | |
parent | 9a71c18b28efc85365b4a221558d748ec6582794 (diff) | |
download | gcc-b3e401c25a949e00ea3a77a508d3a33142f139e2.zip gcc-b3e401c25a949e00ea3a77a508d3a33142f139e2.tar.gz gcc-b3e401c25a949e00ea3a77a508d3a33142f139e2.tar.bz2 |
* decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
From-SVN: r18974
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/decl.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7610185..b02f2bb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ Fri Apr 3 02:22:59 1998 Jason Merrill <jason@yorick.cygnus.com> + * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs. + Re-implement allocation of base class subobjects. * tree.c (unshare_base_binfos): New fn. (layout_basetypes): Use it. Now handles offsets of both virtual and diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 3a75da7..e891613 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -12886,6 +12886,12 @@ cplus_expand_expr_stmt (exp) libg++ to miscompile, and tString to core dump. */ exp = build1 (CLEANUP_POINT_EXPR, TREE_TYPE (exp), exp); #endif + + /* Strip unused implicit INDIRECT_REFs of references. */ + if (TREE_CODE (exp) == INDIRECT_REF + && TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == REFERENCE_TYPE) + exp = TREE_OPERAND (exp, 0); + /* If we don't do this, we end up down inside expand_expr trying to do TYPE_MODE on the ERROR_MARK, and really go outside the bounds of the type. */ |