Bug in gcc-2.95 prerelease

Mike Stump mrs@wrs.com
Thu Jul 15 14:34:00 GMT 1999


> From: "Carlos O'Ryan" <coryan@cs.wustl.edu>
> Date: Thu, 15 Jul 1999 14:13:50 -0500 (CDT)

> 	See my point above: issuing a diagnostic for a situation that
> cannot be fixed is (IMHO) a bug;

-fcheck-new should cause the warning/error to go away.  If it doesn't
than that _is_ a bug.

> the test for "new must throw" should be disabled if exceptions are
> disabled.

No, what should be changed is the wording of the message.  This is a
minor nit.  If -fcheck-new is in effect, we can remove it.

> 	Sure, i only have to change 1,000,000 lines of code to do that

If you lucky, you can

#define new new(nothrow)

in your .h file, this is a small change.

>  > If you insist on doing what you want, you will need -fcheck-new,

> 	Hmmm, from the flag documentation it would seem like this will 
> fix the run-time behavior; i'm not complaining about the resulting
> run-time behavior;

That's unfortunate.  It means you haven't tested the code any (when
you return 0).  It should be near useless without it.

> 	My only complaint is that *if* exceptions are disabled (have
> no problems with it if exceptions are enabled), this particular
> diagnostic is at least misleading and i would even say that it is
> plain wrong.  In fact the problem is fairly easy to fix, and here is
> the patch:

> ---------------- cut here ----------------
> --- typeck.c.orig       Thu Jul 15 13:50:39 1999
> +++ typeck.c    Thu Jul 15 13:51:42 1999
> @@ -7352,7 +7352,8 @@
>    if ((DECL_NAME (current_function_decl) == ansi_opname[(int) NEW_EXPR]
>         || DECL_NAME (current_function_decl) == ansi_opname[(int) VEC_NEW_EXPR])
>        && !TYPE_NOTHROW_P (TREE_TYPE (current_function_decl))
> -      && null_ptr_cst_p (retval))
> +      && null_ptr_cst_p (retval)
> +      && doing_eh (0))
>      cp_pedwarn ("operator new should throw an exception, not return NULL");
>    
>    if (retval == NULL_TREE)


More information about the Gcc-bugs mailing list