diff options
author | Michael Matz <matz@suse.de> | 2002-03-01 13:50:28 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2002-03-01 13:50:28 +0000 |
commit | bfba94bddcce646a126e38ec6dacc25aeba9b40e (patch) | |
tree | 5a9075bfe10e24374ff414ea4ccd0cf811c61b33 | |
parent | b41a6f95b4ca5effb7857ab2bc897d645ebdc421 (diff) | |
download | gcc-bfba94bddcce646a126e38ec6dacc25aeba9b40e.zip gcc-bfba94bddcce646a126e38ec6dacc25aeba9b40e.tar.gz gcc-bfba94bddcce646a126e38ec6dacc25aeba9b40e.tar.bz2 |
typeck.c (cp_pointer_int_sum): Complete inner type which is used later by size_in_bytes().
2002-03-01 Michael Matz <matz@suse.de>
* typeck.c (cp_pointer_int_sum): Complete inner type which is
used later by size_in_bytes().
From-SVN: r50197
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 46d6b3f..f1c25a4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-03-01 Michael Matz <matz@suse.de> + + * typeck.c (cp_pointer_int_sum): Complete inner type which is + used later by size_in_bytes(). + 2002-03-01 Phil Edwards <pme@gcc.gnu.org> * cp-tree.h: Require __GNUC__ to be #defined. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 6ca5242..e5f643c 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -4076,8 +4076,14 @@ cp_pointer_int_sum (resultcode, ptrop, intop) enum tree_code resultcode; register tree ptrop, intop; { - if (!complete_type_or_else (TREE_TYPE (ptrop), ptrop)) - return error_mark_node; + tree res_type = TREE_TYPE (ptrop); + + /* pointer_int_sum() uses size_in_bytes() on the TREE_TYPE(res_type) + in certain circumstance (when it's valid to do so). So we need + to make sure it's complete. We don't need to check here, if we + can actually complete it at all, as those checks will be done in + pointer_int_sum() anyway. */ + complete_type (TREE_TYPE (res_type)); return pointer_int_sum (resultcode, ptrop, fold (intop)); } |