https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61611

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-06-25
     Ever confirmed|0                           |1

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Brad Spencer from comment #0)
> Perhaps _all_ catch blocks (including nested catch blocks) in a constructor
> function try-catch are rethrowing when control reaches the end of them
> instead of only the catch blocks of the actual constructor function
> try-catch structure.

Yes, that seems to be the case.

> Apologies for the non-preprocessed test file, but it does use only standard
> headers.

That's fine, but personally I find it more useful if the testcase shows the bug
by default, and a macro is needed to make it pass.

Reduced:

struct A { };
struct B { };

class Test
{
public:
  Test()
  try
  {
    throw A();
  }
  catch(const A&)
  {
    try
    {
      throw B();
    } catch(const B&) {
    }
  }
};

int
main()
{
  try
  {
    Test x;
  }
  catch(const A&)
  {
  }
}

This should terminate normally.

Reply via email to