/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2019 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#ifndef COMPILER_H
#define COMPILER_H 1
-#define NO_RETURN __attribute__((__noreturn__))
-#define OVS_UNUSED __attribute__((__unused__))
-#define PACKED __attribute__((__packed__))
-#define PRINTF_FORMAT(FMT, ARG1) __attribute__((__format__(printf, FMT, ARG1)))
+#include "openvswitch/compiler.h"
+
+#if __GNUC__ && !__CHECKER__
#define STRFTIME_FORMAT(FMT) __attribute__((__format__(__strftime__, FMT, 0)))
#define MALLOC_LIKE __attribute__((__malloc__))
#define ALWAYS_INLINE __attribute__((always_inline))
-#define likely(x) __builtin_expect((x),1)
-#define unlikely(x) __builtin_expect((x),0)
-#define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
+#define SENTINEL(N) __attribute__((sentinel(N)))
+#else
+#define STRFTIME_FORMAT(FMT)
+#define MALLOC_LIKE
+#define ALWAYS_INLINE
+#define SENTINEL(N)
+#endif
+
+/* Output a message (not an error) while compiling without failing the
+ * compilation process */
+#if HAVE_PRAGMA_MESSAGE && !__CHECKER__
+#define DO_PRAGMA(x) _Pragma(#x)
+#define BUILD_MESSAGE(x) \
+ DO_PRAGMA(message(x))
+#else
+#define BUILD_MESSAGE(x)
+#endif
#endif /* compiler.h */