[cfe-dev] Does clang support -fno-enforce-eh-specs option of gcc

Matthieu Monrocq matthieu.monrocq at gmail.com
Tue Nov 13 14:19:43 PST 2012


On Tue, Nov 13, 2012 at 9:15 PM, Richard Smith <richard at metafoo.co.uk>wrote:

> On Tue, Nov 13, 2012 at 10:51 AM, Matthieu Monrocq
> <matthieu.monrocq at gmail.com> wrote:
> >
> >
> > On Tue, Nov 13, 2012 at 7:44 PM, Konstantin Tokarev <annulen at yandex.ru>
> > wrote:
> >>
> >>
> >> 13.11.2012, 22:39, "Devchandra L Meetei" <dlmeetei at gmail.com>:
> >> > Hi all
> >> > is the above flag supported.
> >>
> >> No.
> >>
> >> > Will also appreciate if some one can tell best practices to follow
> while
> >> > using clang for reducing size of the resultant binaries?
> >>
> >> -Os -fno-rtti -fno-exceptions
> >>
> >> --
> >> Regards,
> >> Konstantin
> >
> >
> > I would note that this not exactly similar:
> >
> > -fno-enforce-eh-specs
> >     Don't check for violation of exception specifications at runtime.
> This
> > option violates the C++ standard, but may be useful for reducing code
> size
> > in production builds, much like defining NDEBUG. The compiler will still
> > optimize based on the exception specifications.
> >
> > This means that -fno-enforce-eh-specs let's you keep using exceptions.
> >
> >
> > A better alternative to `throw()` combined with `-fno-enforce-eh-specs`
> is
> > `noexcept` in C++11. If you throw, you are into undefined behavior land
> > because there is no runtime check.
>
> That was true for a while when the 'noexcept' feature was being
> designed, but is no longer the case. Just as a 'throw()' exception
> specification calls 'std::unexpected' when an exception is thrown, a
> 'noexcept' exception specification calls 'std::terminate'. See C++11
> [except.spec] p9.
>

Damned.

Thanks for the update.

Do you think it would make sense to implement the `-fno-enforce-eh-specs`
flag then ?

-- Matthieu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121113/c767a907/attachment.html>


More information about the cfe-dev mailing list