typeck2.c (digest_init): Make copies where appropriate.

* typeck2.c (digest_init): Make copies where appropriate.

	* decl2.c (delete_sanity): resolve_offset_ref.

From-SVN: r16727
This commit is contained in:
Jason Merrill 1997-11-26 09:56:56 +00:00 committed by Jason Merrill
parent 92f5c1350c
commit 19754d4cf6
4 changed files with 30 additions and 12 deletions

View File

@ -1,5 +1,9 @@
Wed Nov 26 01:11:24 1997 Jason Merrill <jason@yorick.cygnus.com>
* typeck2.c (digest_init): Make copies where appropriate.
* decl2.c (delete_sanity): resolve_offset_ref.
* except.c (expand_start_catch_block): Fix catching a reference
to pointer.

View File

@ -1,7 +1,7 @@
*** Changes since G++ version 2.7.2:
* A public review copy of the December 1996 Draft of the ANSI/ISO C++
proto-standard is now available. See
* A public review copy of the December 1996 Draft of the ISO/ANSI C++
standard is now available. See
http://www.cygnus.com/misc/wp/
@ -65,8 +65,17 @@
+ Template friends.
* Exception handling support has been significantly improved and is on by
default. This can result in significant runtime overhead. You can turn
it off with -fno-exceptions.
default. The compiler supports two mechanisms for walking back up the
call stack; one relies on static information about how registers are
saved, and causes no runtime overhead for code that does not throw
exceptions. The other mechanism uses setjmp and longjmp equivalents, and
can result in quite a bit of runtime overhead. You can determine which
mechanism is the default for your target by compiling a testcase that
uses exceptions and doing an 'nm' on the object file; if it uses __throw,
it's using the first mechanism. If it uses __sjthrow, it's using the
second.
You can turn EH support off with -fno-exceptions.
* RTTI support has been rewritten to work properly and is now on by default.
This means code that uses virtual functions will have a modest space
@ -90,9 +99,9 @@
* New flags:
+ New flags -Wsign-promo (warn about potentially confusing promotions
in overload resolution), -Wno-pmf-conversion (don't warn about
converting from a bound member function pointer to function pointer).
+ New warning -Wno-pmf-conversion (don't warn about
converting from a bound member function pointer to function
pointer).
+ A flag -Weffc++ has been added for violations of some of the style
guidelines in Scott Meyers' _Effective C++_ books.
@ -145,7 +154,7 @@
* The name of a class is now implicitly declared in its own scope; A::A
refers to A.
* Local classes are now supported.
* Local classes are now supported, though not inside templates.
* __attribute__ can now be attached to types as well as declarations.

View File

@ -1242,7 +1242,10 @@ delete_sanity (exp, size, doing_vec, use_global_delete)
return t;
}
t = stabilize_reference (convert_from_reference (exp));
t = exp;
if (TREE_CODE (t) == OFFSET_REF)
t = resolve_offset_ref (t);
t = stabilize_reference (convert_from_reference (t));
type = TREE_TYPE (t);
code = TREE_CODE (type);
@ -1270,15 +1273,14 @@ delete_sanity (exp, size, doing_vec, use_global_delete)
if (code == POINTER_TYPE)
{
#if 0
/* As of Valley Forge, you can delete a pointer to constant. */
/* You can't delete a pointer to constant. */
/* As of Valley Forge, you can delete a pointer to const. */
if (TREE_READONLY (TREE_TYPE (type)))
{
error ("`const *' cannot be deleted");
return error_mark_node;
}
#endif
/* You also can't delete functions. */
/* You can't delete functions. */
if (TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
{
error ("cannot delete a function");

View File

@ -743,6 +743,9 @@ digest_init (type, init, tail)
init = DECL_INITIAL (init);
else if (TREE_READONLY_DECL_P (init))
init = decl_constant_value (init);
else if (IS_AGGR_TYPE (type) && TYPE_NEEDS_CONSTRUCTING (type))
init = ocp_convert (type, init, CONV_IMPLICIT|CONV_FORCE_TEMP,
LOOKUP_NORMAL);
return init;
}