Commit ddaed37e by Jason Merrill

typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up definition of…

typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up definition of 'casting away const' in reinterpret_cast<>.

	* 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
parent 8c7707b0
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> 1999-01-16 Jason Merrill <jason@yorick.cygnus.com>
Manfred Hollstein <manfred@s-direktnet.de> Manfred Hollstein <manfred@s-direktnet.de>
......
...@@ -269,8 +269,8 @@ init.o : init.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h $(RTL_H) \ ...@@ -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 $(EXPR_H) $(srcdir)/../system.h $(srcdir)/../toplev.h
method.o : method.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \ method.o : method.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
$(srcdir)/../toplev.h $(srcdir)/../toplev.h
cvt.o : cvt.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \ cvt.o : cvt.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h decl.h \
$(srcdir)/../toplev.h $(srcdir)/../flags.h $(srcdir)/../toplev.h $(srcdir)/../convert.h
search.o : search.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../stack.h \ search.o : search.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../stack.h \
$(srcdir)/../flags.h $(srcdir)/../system.h $(srcdir)/../toplev.h $(srcdir)/../flags.h $(srcdir)/../system.h $(srcdir)/../toplev.h
tree.o : tree.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \ tree.o : tree.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \
......
...@@ -3259,6 +3259,7 @@ extern int count_functions PROTO((tree)); ...@@ -3259,6 +3259,7 @@ extern int count_functions PROTO((tree));
extern int is_overloaded_fn PROTO((tree)); extern int is_overloaded_fn PROTO((tree));
extern tree get_first_fn PROTO((tree)); extern tree get_first_fn PROTO((tree));
extern tree binding_init PROTO((struct tree_binding*)); extern tree binding_init PROTO((struct tree_binding*));
extern int bound_pmf_p PROTO((tree));
extern tree ovl_cons PROTO((tree, tree)); extern tree ovl_cons PROTO((tree, tree));
extern tree scratch_ovl_cons PROTO((tree, tree)); extern tree scratch_ovl_cons PROTO((tree, tree));
extern int ovl_member PROTO((tree, tree)); extern int ovl_member PROTO((tree, tree));
......
...@@ -32,8 +32,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -32,8 +32,7 @@ Boston, MA 02111-1307, USA. */
#include "cp-tree.h" #include "cp-tree.h"
#include "convert.h" #include "convert.h"
#include "toplev.h" #include "toplev.h"
#include "decl.h"
extern tree static_aggregates;
static tree cp_convert_to_pointer PROTO((tree, tree)); static tree cp_convert_to_pointer PROTO((tree, tree));
static tree convert_to_pointer_force PROTO((tree, tree)); static tree convert_to_pointer_force PROTO((tree, tree));
......
...@@ -1455,6 +1455,9 @@ check_classfn (ctype, function) ...@@ -1455,6 +1455,9 @@ check_classfn (ctype, function)
else else
{ {
methods = 0; methods = 0;
if (TYPE_SIZE (ctype) == 0)
incomplete_type_error (function, ctype);
else
cp_error ("no `%#D' member function declared in class `%T'", cp_error ("no `%#D' member function declared in class `%T'",
function, ctype); function, ctype);
} }
...@@ -3094,6 +3097,12 @@ do_dtors (start) ...@@ -3094,6 +3097,12 @@ do_dtors (start)
if (! current_function_decl) if (! current_function_decl)
start_objects ('D', initp); 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: /* Because of:
[class.access.spec] [class.access.spec]
......
...@@ -7439,12 +7439,10 @@ comp_ptr_ttypes_reinterpret (to, from) ...@@ -7439,12 +7439,10 @@ comp_ptr_ttypes_reinterpret (to, from)
if (TREE_CODE (to) == OFFSET_TYPE) if (TREE_CODE (to) == OFFSET_TYPE)
to = TREE_TYPE (to); to = TREE_TYPE (to);
if (TREE_CODE (to) != TREE_CODE (from))
return 1;
/* Const and volatile mean something different for function types, /* Const and volatile mean something different for function types,
so the usual checks are not appropriate. */ 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)) if (!at_least_as_qualified_p (to, from))
return 0; return 0;
...@@ -7455,7 +7453,8 @@ comp_ptr_ttypes_reinterpret (to, from) ...@@ -7455,7 +7453,8 @@ comp_ptr_ttypes_reinterpret (to, from)
constp &= TYPE_READONLY (to); constp &= TYPE_READONLY (to);
} }
if (TREE_CODE (to) != POINTER_TYPE) if (TREE_CODE (from) != POINTER_TYPE
|| TREE_CODE (to) != POINTER_TYPE)
return 1; return 1;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment