aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2002-03-01 13:50:28 +0000
committerMichael Matz <matz@gcc.gnu.org>2002-03-01 13:50:28 +0000
commitbfba94bddcce646a126e38ec6dacc25aeba9b40e (patch)
tree5a9075bfe10e24374ff414ea4ccd0cf811c61b33
parentb41a6f95b4ca5effb7857ab2bc897d645ebdc421 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/typeck.c10
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));
}