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
This commit is contained in:
Jason Merrill 1999-01-18 07:49:20 -05:00
parent 8c7707b030
commit ddaed37e04
6 changed files with 43 additions and 11 deletions

View 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>

View 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 \

View 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));

View 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));

View 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]

View 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;
}
}