Commit 99ed43a7 authored by Tudor Bosman's avatar Tudor Bosman Committed by Jordan DeLong

FOLLY_NORETURN

Summary: Seems like a good idea.

Test Plan: compiled all of folly

Reviewed By: delong.j@fb.com

FB internal diff: D783104
parent 34129f8f
......@@ -24,24 +24,25 @@
#include "folly/Conv.h"
#include "folly/Likely.h"
#include "folly/Portability.h"
namespace folly {
// Helper to throw std::system_error
void throwSystemError(int err, const char* msg) __attribute__((noreturn));
void throwSystemError(int err, const char* msg) FOLLY_NORETURN;
inline void throwSystemError(int err, const char* msg) {
throw std::system_error(err, std::system_category(), msg);
}
// Helper to throw std::system_error from errno
void throwSystemError(const char* msg) __attribute__((noreturn));
void throwSystemError(const char* msg) FOLLY_NORETURN;
inline void throwSystemError(const char* msg) {
throwSystemError(errno, msg);
}
// Helper to throw std::system_error from errno and components of a string
template <class... Args>
void throwSystemError(Args... args) __attribute__((noreturn));
void throwSystemError(Args... args) FOLLY_NORETURN;
template <class... Args>
inline void throwSystemError(Args... args) {
throwSystemError(errno, folly::to<std::string>(args...));
......
......@@ -18,9 +18,10 @@
#define FOLLY_FORMATARG_H_
#include <stdexcept>
#include "folly/Range.h"
#include "folly/Likely.h"
#include "folly/Conv.h"
#include "folly/Likely.h"
#include "folly/Portability.h"
#include "folly/Range.h"
namespace folly {
......@@ -71,7 +72,7 @@ struct FormatArg {
}
template <typename... Args>
void error(Args&&... args) const __attribute__((noreturn));
void error(Args&&... args) const FOLLY_NORETURN;
/**
* Full argument string, as passed in to the constructor.
*/
......
......@@ -60,4 +60,10 @@ struct MaxAlign { char c; } __attribute__((aligned));
# error Cannot define MaxAlign on this platform
#endif
#if defined(__clang__) || defined(__GNUC__)
# define FOLLY_NORETURN __attribute__((noreturn))
#else
# define FOLLY_NORETURN
#endif
#endif // FOLLY_PORTABILITY_H_
......@@ -20,6 +20,7 @@
#include <glog/logging.h>
#include "folly/Portability.h"
#include "folly/experimental/exception_tracer/StackTrace.h"
#include "folly/experimental/exception_tracer/ExceptionAbi.h"
#include "folly/experimental/exception_tracer/ExceptionTracer.h"
......@@ -28,9 +29,9 @@ namespace __cxxabiv1 {
extern "C" {
void __cxa_throw(void* thrownException, std::type_info* type,
void (*destructor)(void)) __attribute__((noreturn));
void (*destructor)(void)) FOLLY_NORETURN;
void* __cxa_begin_catch(void* excObj);
void __cxa_rethrow(void) __attribute__((noreturn));
void __cxa_rethrow(void) FOLLY_NORETURN;
void __cxa_end_catch(void);
}
......@@ -45,10 +46,10 @@ pthread_once_t initialized = PTHREAD_ONCE_INIT;
extern "C" {
typedef void (*CxaThrowType)(void*, std::type_info*, void (*)(void))
__attribute__((noreturn));
FOLLY_NORETURN;
typedef void* (*CxaBeginCatchType)(void*);
typedef void (*CxaRethrowType)(void)
__attribute__((noreturn));
FOLLY_NORETURN;
typedef void (*CxaEndCatchType)(void);
CxaThrowType orig_cxa_throw;
......@@ -58,7 +59,7 @@ CxaEndCatchType orig_cxa_end_catch;
} // extern "C"
typedef void (*RethrowExceptionType)(std::exception_ptr)
__attribute__((noreturn));
FOLLY_NORETURN;
RethrowExceptionType orig_rethrow_exception;
void initialize() {
......
......@@ -27,10 +27,11 @@
#include <gflags/gflags.h>
#include "folly/experimental/io/HugePages.h"
#include "folly/Format.h"
#include "folly/Portability.h"
#include "folly/Range.h"
#include "folly/ScopeGuard.h"
#include "folly/experimental/io/HugePages.h"
DEFINE_bool(cp, false, "Copy file");
......@@ -38,7 +39,7 @@ using namespace folly;
namespace {
void usage(const char* name) __attribute__((noreturn));
void usage(const char* name) FOLLY_NORETURN;
void usage(const char* name) {
std::cerr << folly::format(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment