Does clang support -fno-enforce-eh-specs option of gcc

Hi all
is the above flag supported.
Will also appreciate if some one can tell best practices to follow while using clang for reducing size of the resultant binaries?

Warm Regards
-Dev

š
š

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

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.

I do not think there are similar alternatives when the exception specification did precise a list of exceptions, but those are much rarer.

– Matthieu

Thanks All

Warm regards
–Dev

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

I guess that will make migration from gcc easy a bit.