convert.c (convert_to_integer): Issue an error on conversions to incomplete types.
authorMark Mitchell <mark@markmitchell.com>
Sun, 30 Aug 1998 16:04:17 +0000 (16:04 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Sun, 30 Aug 1998 16:04:17 +0000 (16:04 +0000)
* convert.c (convert_to_integer): Issue an error on conversions to
incomplete types.

From-SVN: r22102

gcc/ChangeLog
gcc/convert.c

index 7d8dd73ff2fa0134d35664a354f6aba6ddd62cc8..67b14e6f385a71a9ac932ff040ace80ca0ed5b89 100644 (file)
@@ -1,3 +1,8 @@
+Sun Aug 30 16:05:45 1998  Mark Mitchell  <mark@markmitchell.com>
+
+       * convert.c (convert_to_integer): Issue an error on conversions to
+       incomplete types.
+
 Sun Aug 30 16:47:20 1998  Martin von Lvwis  <loewis@informatik.hu-berlin.de>
 
        * Makefile.in: Add lang_tree_files and gencheck.h.
index e03d39b7f32071f1220e0e80b16802c8cff7b17e..bfcb5db447045f2edd1d620368431f9ac3318293 100644 (file)
@@ -121,6 +121,14 @@ convert_to_integer (type, expr)
   int inprec = TYPE_PRECISION (intype);
   int outprec = TYPE_PRECISION (type);
 
+  /* An INTEGER_TYPE cannot be incomplete, but an ENUMERAL_TYPE can
+     be.  Consider `enum E = { a, b = (enum E) 3 };'.  */
+  if (!TYPE_SIZE (type))
+    {
+      error ("conversion to incomplete type");
+      return error_mark_node;
+    }
+
   switch (TREE_CODE (intype))
     {
     case POINTER_TYPE: