aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2003-09-18 21:22:17 +0000
committerDanny Smith <dannysmith@gcc.gnu.org>2003-09-18 21:22:17 +0000
commit3f50d3dd9d05836954dd17d31866834923caa4d5 (patch)
tree082e617cb7d59065265e93f21029a0e7a485cfc2 /gcc
parent7229527c2c6859c3e172b1a2d9ab16a144c93a91 (diff)
downloadgcc-3f50d3dd9d05836954dd17d31866834923caa4d5.zip
gcc-3f50d3dd9d05836954dd17d31866834923caa4d5.tar.gz
gcc-3f50d3dd9d05836954dd17d31866834923caa4d5.tar.bz2
re PR c++/12320 (ICE on use of undefined enum)
PR c++/12320 * call.c (type_passed_as): Check for incomplete type. (convert_for_arg_passing): Likewise. From-SVN: r71546
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ad41de2..1bc2abf 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-09-18 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR c++/12320
+ * call.c (type_passed_as): Check for incomplete type.
+ (convert_for_arg_passing): Likewise.
+
2003-09-18 Nathan Sidwell <nathan@codesourcery.com>
PR c++/9848
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 4f86cc6..b2b9d00 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -4342,6 +4342,7 @@ type_passed_as (tree type)
type = build_reference_type (type);
else if (PROMOTE_PROTOTYPES
&& INTEGRAL_TYPE_P (type)
+ && COMPLETE_TYPE_P (type)
&& INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
TYPE_SIZE (integer_type_node)))
type = integer_type_node;
@@ -4361,6 +4362,7 @@ convert_for_arg_passing (tree type, tree val)
val = build1 (ADDR_EXPR, build_reference_type (type), val);
else if (PROMOTE_PROTOTYPES
&& INTEGRAL_TYPE_P (type)
+ && COMPLETE_TYPE_P (type)
&& INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
TYPE_SIZE (integer_type_node)))
val = perform_integral_promotions (val);