typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up definition of 'casting...
authorJason Merrill <jason@gcc.gnu.org>
Mon, 18 Jan 1999 12:49:20 +0000 (07:49 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 18 Jan 1999 12:49:20 +0000 (07:49 -0500)
* typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up
definition of 'casting away const' in reinterpret_cast<>.
* cvt.c: Add include for decl.h, remove extern for
static_aggregates which is now provided by decl.h.
* Makefile.in (cvt.o): Add dependency for decl.h and missing
dependencies for convert.h and flags.h.
* decl2.c (do_dtors): Set current location to that of the
decl, for sensible diagnostics and debugging.
(check_classfn): Issue `incomplete type' error, if
class is not defined.
* cp-tree.h: Add prototype for bound_pmf_p.

From-SVN: r24748

gcc/cp/ChangeLog
gcc/cp/Makefile.in
gcc/cp/cp-tree.h
gcc/cp/cvt.c
gcc/cp/decl2.c
gcc/cp/typeck.c

index 554d85f5c32c2ec586bc4ad5811f0ce7753cf5e1..dfe2645c0cc88271f7ae75c774e4af75677d9055 100644 (file)
@@ -1,3 +1,27 @@
+1999-01-18  Chip Salzenberg  <chip@perlsupport.com>
+
+       * typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up
+       definition of 'casting away const' in reinterpret_cast<>.
+
+1999-01-18  Graham <grahams@rcp.co.uk>
+
+       * cvt.c: Add include for decl.h, remove extern for
+       static_aggregates which is now provided by decl.h.
+
+       * Makefile.in (cvt.o): Add dependency for decl.h and missing
+       dependencies for convert.h and flags.h.
+
+1999-01-18  Nathan Sidwell  <nathan@acm.org>
+
+       * decl2.c (do_dtors): Set current location to that of the
+       decl, for sensible diagnostics and debugging.
+       (check_classfn): Issue `incomplete type' error, if
+       class is not defined.
+
+1999-01-16  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * cp-tree.h: Add prototype for bound_pmf_p.
+
 1999-01-16  Jason Merrill  <jason@yorick.cygnus.com>
            Manfred Hollstein <manfred@s-direktnet.de>
 
index 9fc861a32a207f7d4ca5c26bf648fd1ef504fcb3..fd4f5c01b57cb023fba6c39994bd15bc7b21c1ff 100644 (file)
@@ -269,8 +269,8 @@ init.o : init.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h $(RTL_H) \
   $(EXPR_H) $(srcdir)/../system.h $(srcdir)/../toplev.h
 method.o : method.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
   $(srcdir)/../toplev.h
-cvt.o : cvt.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
-  $(srcdir)/../toplev.h
+cvt.o : cvt.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h decl.h \
+  $(srcdir)/../flags.h $(srcdir)/../toplev.h $(srcdir)/../convert.h
 search.o : search.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../stack.h \
   $(srcdir)/../flags.h $(srcdir)/../system.h $(srcdir)/../toplev.h
 tree.o : tree.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \
index fb80e38cd3cb79298ea8ec9b41f7d855fb59397e..18f697ae860504885bceef8271f3b612989fc1bf 100644 (file)
@@ -3259,6 +3259,7 @@ extern int count_functions                        PROTO((tree));
 extern int is_overloaded_fn                    PROTO((tree));
 extern tree get_first_fn                       PROTO((tree));
 extern tree binding_init                        PROTO((struct tree_binding*));
+extern int bound_pmf_p                         PROTO((tree));
 extern tree ovl_cons                            PROTO((tree, tree));
 extern tree scratch_ovl_cons                    PROTO((tree, tree));
 extern int ovl_member                           PROTO((tree, tree));
index d11209691c9003746f7c76204e5603649b57e14b..2b0cd53a68a0725acc5c4bafedcf0b2c4fda6647 100644 (file)
@@ -32,8 +32,7 @@ Boston, MA 02111-1307, USA.  */
 #include "cp-tree.h"
 #include "convert.h"
 #include "toplev.h"
-
-extern tree static_aggregates;
+#include "decl.h"
 
 static tree cp_convert_to_pointer PROTO((tree, tree));
 static tree convert_to_pointer_force PROTO((tree, tree));
index 0ca5753d45abd40caa84afcf4135323cf53d2591..9ca09cb985b9326e99d6f4172138b9012a0e610e 100644 (file)
@@ -1455,8 +1455,11 @@ check_classfn (ctype, function)
   else
     {
       methods = 0;
-      cp_error ("no `%#D' member function declared in class `%T'",
-               function, ctype);
+      if (TYPE_SIZE (ctype) == 0)
+        incomplete_type_error (function, ctype);
+      else
+        cp_error ("no `%#D' member function declared in class `%T'",
+                 function, ctype);
     }
 
   /* If we did not find the method in the class, add it to avoid
@@ -3094,6 +3097,12 @@ do_dtors (start)
          if (! current_function_decl)
            start_objects ('D', initp);
 
+         /* Set these global variables so that GDB at least puts
+            us near the declaration which required the initialization.  */
+         input_filename = DECL_SOURCE_FILE (decl);
+         lineno = DECL_SOURCE_LINE (decl);
+         emit_note (input_filename, lineno);
+         
          /* Because of:
 
               [class.access.spec]
index 4fb4f593f14c8f9956339167130a79b691c702ca..662cb500c363ac628f15fa7540bdb5a152bb3aa4 100644 (file)
@@ -7439,12 +7439,10 @@ comp_ptr_ttypes_reinterpret (to, from)
       if (TREE_CODE (to) == OFFSET_TYPE)
        to = TREE_TYPE (to);
 
-      if (TREE_CODE (to) != TREE_CODE (from))
-       return 1;
-
       /* Const and volatile mean something different for function types,
         so the usual checks are not appropriate.  */
-      if (TREE_CODE (to) != FUNCTION_TYPE && TREE_CODE (to) != METHOD_TYPE)
+      if (TREE_CODE (from) != FUNCTION_TYPE && TREE_CODE (from) != METHOD_TYPE
+         && TREE_CODE (to) != FUNCTION_TYPE && TREE_CODE (to) != METHOD_TYPE)
        {
          if (!at_least_as_qualified_p (to, from))
            return 0;
@@ -7455,7 +7453,8 @@ comp_ptr_ttypes_reinterpret (to, from)
          constp &= TYPE_READONLY (to);
        }
 
-      if (TREE_CODE (to) != POINTER_TYPE)
+      if (TREE_CODE (from) != POINTER_TYPE
+         || TREE_CODE (to) != POINTER_TYPE)
        return 1;
     }
 }