diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index daab1608122..2b392b6d8ca 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -369,17 +369,17 @@ using std::max; # define CGAL_NO_UNIQUE_ADDRESS #endif -// Macro CGAL_ASSUME and CGAL_unreachable +// Macro CGAL_ASSUME and CGAL_UNREACHABLE // Call a builtin of the compiler to pass a hint to the compiler #if __has_builtin(__builtin_unreachable) || (CGAL_GCC_VERSION > 0 && !__STRICT_ANSI__) // From g++ 4.5, there exists a __builtin_unreachable() // Also in LLVM/clang # define CGAL_ASSUME(EX) if(!(EX)) { __builtin_unreachable(); } -# define CGAL_unreachable() __builtin_unreachable() +# define CGAL_UNREACHABLE() __builtin_unreachable() #elif defined(_MSC_VER) // MSVC has __assume # define CGAL_ASSUME(EX) __assume(EX) -# define CGAL_unreachable() __assume(0) +# define CGAL_UNREACHABLE() __assume(0) #endif // If CGAL_ASSUME is not defined, then CGAL_assume and CGAL_assume_code are // defined differently, in diff --git a/STL_Extension/include/CGAL/assertions.h b/STL_Extension/include/CGAL/assertions.h index 293a2abe557..e7357ecd8d1 100644 --- a/STL_Extension/include/CGAL/assertions.h +++ b/STL_Extension/include/CGAL/assertions.h @@ -79,14 +79,6 @@ inline bool possibly(Uncertain c); # define CGAL_destructor_assertion_catch(CODE) CODE # define CGAL_assertion_msg(EX,MSG) (static_cast(0)) # define CGAL_assertion_code(CODE) -# ifdef CGAL_ASSUME -# define CGAL_assume(EX) CGAL_ASSUME(EX) -# define CGAL_assume_code(CODE) CODE -# else // not def CGAL_ASSUME -# define CGAL_assume(EX) CGAL_assertion(EX) -# define CGAL_unreachable() CGAL_assertion(false) -# define CGAL_assume_code(CODE) CGAL_assertion_code(CODE) -# endif // not def CGAL_ASSUME #else // no CGAL_NO_ASSERTIONS # define CGAL_ASSERTIONS_ENABLED true # define CGAL_assertion(EX) \ @@ -103,10 +95,22 @@ inline bool possibly(Uncertain c); # define CGAL_assertion_msg(EX,MSG) \ (CGAL::possibly(EX)?(static_cast(0)): ::CGAL::assertion_fail( # EX , __FILE__, __LINE__, MSG)) # define CGAL_assertion_code(CODE) CODE -# define CGAL_assume(EX) CGAL_assertion(EX) -# define CGAL_assume_code(CODE) CGAL_assertion_code(CODE) #endif // no CGAL_NO_ASSERTIONS +# ifdef CGAL_ASSUME +# define CGAL_assume(EX) CGAL_ASSUME(EX) +# define CGAL_assume_code(CODE) CODE +# else // not def CGAL_ASSUME +# define CGAL_assume(EX) CGAL_assertion(EX) +# define CGAL_assume_code(CODE) CGAL_assertion_code(CODE) +# endif // CGAL_ASSUME + +# ifdef CGAL_UNREACHABLE +# define CGAL_unreachable() CGAL_UNREACHABLE() +# else // not def CGAL_UNREACHABLE +# define CGAL_unreachable() CGAL_assertion(false) +# endif // CGAL_UNREACHABLE + # define CGAL_static_assertion(EX) \ static_assert(EX, #EX)