C++ PATCH: Backport stabilize_call and 13944 fix to 3.4

Jason Merrill jason@redhat.com
Tue Mar 2 19:56:00 GMT 2004


This patch is a backport of three patches previously applied to the
tree-ssa branch:

  http://gcc.gnu.org/ml/gcc-patches/2003-11/msg01390.html
  http://gcc.gnu.org/ml/gcc-patches/2004-02/msg02240.html
  http://gcc.gnu.org/ml/gcc-patches/2004-02/msg02241.html

I applied the first one only to tree-ssa because I thought that it was not
a bugfix.  However, Jan found a case which fails on 3.4 because of
CALL_EXPR sharing, which is fixed by my patch.

  http://gcc.gnu.org/ml/gcc-patches/2004-01/msg00118.html

The fix for 13944 doesn't depend on stabilize_call, but the change is
affected by it, so I'm appling it at the same time.

Tested x86_64-pc-linux-gnu, applied to 3.4 branch.

2004-03-01  Jason Merrill  <jason@redhat.com>

	PR c++/13944
	* except.c (do_free_exception): Remove #if 0 wrapper.
	(build_throw): Use it if we elide a copy into the
	exception object.

	* tree.c (stabilize_call): Fix thinko.

	* init.c (build_new_1): Preevaluate initializer.  Simplify EH code.
	(build_init): Call a constructor rather than call build_aggr_init
	for classes.
	* except.c (stabilize_throw_expr): Remove.
	(build_throw): Use stabilize_init instead of stabilize_throw_expr.
	* tree.c (stabilize_call, stabilize_init): New fns.
	* call.c (build_over_call): A constructor no longer returns the
	address of the object.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/x-patch
Size: 22074 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20040302/7cd006d7/attachment.bin>


More information about the Gcc-patches mailing list