diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2005-05-23 19:02:53 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2005-05-23 19:02:53 -0400 |
commit | bd16f8f1525135a3d730a4cc8136aeb3328bdfb0 (patch) | |
tree | 759c405352fb4d74c1af9ce55e7ac917dd80ea6f /gcc | |
parent | a9563c96b6dd09bef5ba298e4c6f038275feb42d (diff) | |
download | gcc-bd16f8f1525135a3d730a4cc8136aeb3328bdfb0.zip gcc-bd16f8f1525135a3d730a4cc8136aeb3328bdfb0.tar.gz gcc-bd16f8f1525135a3d730a4cc8136aeb3328bdfb0.tar.bz2 |
tweak comment
From-SVN: r100088
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/except.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 60db762..0133981 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -697,15 +697,18 @@ build_throw (tree exp) the space first we would have to deal with cleaning it up if evaluating this expression throws. - The case where EXP the initializer is a call to a constructor or a - function returning a class is a bit of a grey area in the - standard; it's unclear whether or not it should be allowed to - throw. We used to say no, as that allowed us to optimize this - case without worrying about deallocating the exception object if - it does. But that conflicted with expectations (PR 13944) and the - EDG compiler; now we wrap the initialization in a TRY_CATCH_EXPR - to call do_free_exception rather than in a MUST_NOT_THROW_EXPR, - for this case only. + The case where EXP the initializer is a cast or a function + returning a class is a bit of a grey area in the standard; it's + unclear whether or not it should be allowed to throw. We used to + say no, as that allowed us to optimize this case without worrying + about deallocating the exception object if it does. But that + conflicted with expectations (PR 13944) and the EDG compiler; now + we wrap the initialization in a TRY_CATCH_EXPR to call + do_free_exception rather than in a MUST_NOT_THROW_EXPR, for this + case only. + + BUT: Issue 475 may do away with this inconsistency by removing the + terminate() in this situation. Note that we don't check the return value from stabilize_init because it will only return false in cases where elided is true, |