On Fri, Jul 19, 2013 at 01:11:18PM -0700, John McCall wrote: > On Jul 19, 2013, at 12:28 PM, Reid Kleckner <[email protected]> wrote: > > + // XXX: In the Microsoft ABI, we want to emit a delegating complete dtor > > + // without a definition, which means we won't be able to tell if the > > + // definition is a try body. In this case, MSVC simply delegates, so we > > do > > + // the same. > > > > What is this XXX about? Is this a FIXME? It looks like we're actually > > doing it. > > > > I should remove that. I'm still confused about why destructors defined as > > try bodies need to be a special case, but the current behavior should be > > compatible with cl.exe. > > You can’t delegate the base construction when there’s a try body and virtual > bases because then the try body would appear twice on the stack.
Well, cl.exe seems to delegate it anyway. This seems to be a deficiency in the ABI. I remember running an experiment in which a destructor throws an exception caught in the try body of a virtually derived class. This caused the program (compiled with cl.exe) to segfault. We might want to issue a warning if we see a destructor of a class with virtual bases defined using a try body when compiling for this ABI. Thanks, -- Peter _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
