[llvm] r367508 - [NFC] Remove obsolete LLVM_GNUC_PREREQ

JF Bastien via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 31 20:30:46 PDT 2019


Author: jfb
Date: Wed Jul 31 20:30:45 2019
New Revision: 367508

URL: http://llvm.org/viewvc/llvm-project?rev=367508&view=rev
Log:
[NFC] Remove obsolete LLVM_GNUC_PREREQ

The current minimum GCC version is 4.8 (soon to be 5.1), we there don't need to check for older versions. While I'm around Compiler.h, also update some of the doxygen comment.

Modified:
    llvm/trunk/include/llvm/Support/Compiler.h
    llvm/trunk/include/llvm/Support/MathExtras.h
    llvm/trunk/include/llvm/Support/SwapByteOrder.h
    llvm/trunk/include/llvm/Support/type_traits.h

Modified: llvm/trunk/include/llvm/Support/Compiler.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Compiler.h?rev=367508&r1=367507&r2=367508&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/Compiler.h (original)
+++ llvm/trunk/include/llvm/Support/Compiler.h Wed Jul 31 20:30:45 2019
@@ -75,6 +75,7 @@
 #define LLVM_MSC_PREREQ(version) 0
 #endif
 
+/// \macro LLVM_HAS_RVALUE_REFERENCE_THIS
 /// Does the compiler support ref-qualifiers for *this?
 ///
 /// Sadly, this is separate from just rvalue reference support because GCC
@@ -85,6 +86,7 @@
 #define LLVM_HAS_RVALUE_REFERENCE_THIS 0
 #endif
 
+/// \macro LLVM_LVALUE_FUNCTION
 /// Expands to '&' if ref-qualifiers for *this are supported.
 ///
 /// This can be used to provide lvalue/rvalue overrides of member functions.
@@ -95,31 +97,35 @@
 #define LLVM_LVALUE_FUNCTION
 #endif
 
-/// LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked
-/// into a shared library, then the class should be private to the library and
-/// not accessible from outside it.  Can also be used to mark variables and
-/// functions, making them private to any shared library they are linked into.
-/// On PE/COFF targets, library visibility is the default, so this isn't needed.
-#if (__has_attribute(visibility) || LLVM_GNUC_PREREQ(4, 0, 0)) &&              \
+/// \macro LLVM_LIBRARY_VISIBILITY
+/// If a class marked with this attribute is linked into a shared library, then
+/// the class should be private to the library and not accessible from outside
+/// it. Can also be used to mark variables and functions, making them private to
+/// any shared library they are linked into. On PE/COFF targets, library
+/// visibility is the default, so this isn't needed.
+#if __has_attribute(visibility) &&                                      \
     !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(_WIN32)
 #define LLVM_LIBRARY_VISIBILITY __attribute__ ((visibility("hidden")))
 #else
 #define LLVM_LIBRARY_VISIBILITY
 #endif
 
+/// \macro LLVM_PREFETCH
 #if defined(__GNUC__)
 #define LLVM_PREFETCH(addr, rw, locality) __builtin_prefetch(addr, rw, locality)
 #else
 #define LLVM_PREFETCH(addr, rw, locality)
 #endif
 
-#if __has_attribute(used) || LLVM_GNUC_PREREQ(3, 1, 0)
+/// \macro LLVM_ATTRIBUTE_USED
+#if __has_attribute(used)
 #define LLVM_ATTRIBUTE_USED __attribute__((__used__))
 #else
 #define LLVM_ATTRIBUTE_USED
 #endif
 
-/// LLVM_NODISCARD - Warn if a type or return value is discarded.
+/// \macro LLVM_NODISCARD
+/// Warn if a type or return value is discarded.
 #if __cplusplus > 201402L && __has_cpp_attribute(nodiscard)
 #define LLVM_NODISCARD [[nodiscard]]
 #elif !__cplusplus
@@ -132,43 +138,47 @@
 #define LLVM_NODISCARD
 #endif
 
-// Indicate that a non-static, non-const C++ member function reinitializes
-// the entire object to a known state, independent of the previous state of
-// the object.
-//
-// The clang-tidy check bugprone-use-after-move recognizes this attribute as a
-// marker that a moved-from object has left the indeterminate state and can be
-// reused.
+/// \macro LLVM_ATTRIBUTE_REINITIALIZES
+///
+/// Indicate that a non-static, non-const C++ member function reinitializes the
+/// entire object to a known state, independent of the previous state of the
+/// object.
+///
+/// The clang-tidy check bugprone-use-after-move recognizes this attribute as a
+/// marker that a moved-from object has left the indeterminate state and can be
+/// reused.
 #if __has_cpp_attribute(clang::reinitializes)
 #define LLVM_ATTRIBUTE_REINITIALIZES [[clang::reinitializes]]
 #else
 #define LLVM_ATTRIBUTE_REINITIALIZES
 #endif
 
-// Some compilers warn about unused functions. When a function is sometimes
-// used or not depending on build settings (e.g. a function only called from
-// within "assert"), this attribute can be used to suppress such warnings.
-//
-// However, it shouldn't be used for unused *variables*, as those have a much
-// more portable solution:
-//   (void)unused_var_name;
-// Prefer cast-to-void wherever it is sufficient.
-#if __has_attribute(unused) || LLVM_GNUC_PREREQ(3, 1, 0)
+/// \macro LLVM_ATTRIBUTE_UNUSED
+///
+/// Some compilers warn about unused functions. When a function is sometimes
+/// used or not depending on build settings (e.g. a function only called from
+/// within "assert"), this attribute can be used to suppress such warnings.
+///
+/// However, it shouldn't be used for unused *variables*, as those have a much
+/// more portable solution:
+///   (void)unused_var_name;
+/// Prefer cast-to-void wherever it is sufficient.
+#if __has_attribute(unused)
 #define LLVM_ATTRIBUTE_UNUSED __attribute__((__unused__))
 #else
 #define LLVM_ATTRIBUTE_UNUSED
 #endif
 
+/// \macro LLVM_ATTRIBUTE_WEAK
 // FIXME: Provide this for PE/COFF targets.
-#if (__has_attribute(weak) || LLVM_GNUC_PREREQ(4, 0, 0)) &&                    \
+#if __has_attribute(weak) &&                                            \
     (!defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(_WIN32))
 #define LLVM_ATTRIBUTE_WEAK __attribute__((__weak__))
 #else
 #define LLVM_ATTRIBUTE_WEAK
 #endif
 
-// Prior to clang 3.2, clang did not accept any spelling of
-// __has_attribute(const), so assume it is supported.
+/// \macro LLVM_READNONE
 #if defined(__clang__) || defined(__GNUC__)
 // aka 'CONST' but following LLVM Conventions.
 #define LLVM_READNONE __attribute__((__const__))
@@ -176,6 +186,7 @@
 #define LLVM_READNONE
 #endif
 
+/// \macro LLVM_READONLY
 #if __has_attribute(pure) || defined(__GNUC__)
 // aka 'PURE' but following LLVM Conventions.
 #define LLVM_READONLY __attribute__((__pure__))
@@ -183,7 +194,9 @@
 #define LLVM_READONLY
 #endif
 
-#if __has_builtin(__builtin_expect) || LLVM_GNUC_PREREQ(4, 0, 0)
+/// \macro LLVM_LIKELY
+/// \macro LLVM_UNLIKELY
+#if __has_builtin(__builtin_expect)
 #define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
 #define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
 #else
@@ -191,9 +204,10 @@
 #define LLVM_UNLIKELY(EXPR) (EXPR)
 #endif
 
-/// LLVM_ATTRIBUTE_NOINLINE - On compilers where we have a directive to do so,
-/// mark a method "not for inlining".
-#if __has_attribute(noinline) || LLVM_GNUC_PREREQ(3, 4, 0)
+/// \macro LLVM_ATTRIBUTE_NOINLINE
+/// On compilers where we have a directive to do so, mark a method "not for
+/// inlining".
+#if __has_attribute(noinline)
 #define LLVM_ATTRIBUTE_NOINLINE __attribute__((noinline))
 #elif defined(_MSC_VER)
 #define LLVM_ATTRIBUTE_NOINLINE __declspec(noinline)
@@ -201,11 +215,12 @@
 #define LLVM_ATTRIBUTE_NOINLINE
 #endif
 
-/// LLVM_ATTRIBUTE_ALWAYS_INLINE - On compilers where we have a directive to do
-/// so, mark a method "always inline" because it is performance sensitive. GCC
-/// 3.4 supported this but is buggy in various cases and produces unimplemented
-/// errors, just use it in GCC 4.0 and later.
-#if __has_attribute(always_inline) || LLVM_GNUC_PREREQ(4, 0, 0)
+/// \macro LLVM_ATTRIBUTE_ALWAYS_INLINE
+/// On compilers where we have a directive to do so, mark a method "always
+/// inline" because it is performance sensitive. GCC 3.4 supported this but is
+/// buggy in various cases and produces unimplemented errors, just use it in GCC
+/// 4.0 and later.
+#if __has_attribute(always_inline)
 #define LLVM_ATTRIBUTE_ALWAYS_INLINE __attribute__((always_inline))
 #elif defined(_MSC_VER)
 #define LLVM_ATTRIBUTE_ALWAYS_INLINE __forceinline
@@ -213,6 +228,7 @@
 #define LLVM_ATTRIBUTE_ALWAYS_INLINE
 #endif
 
+/// \macro LLVM_ATTRIBUTE_NORETURN
 #ifdef __GNUC__
 #define LLVM_ATTRIBUTE_NORETURN __attribute__((noreturn))
 #elif defined(_MSC_VER)
@@ -221,6 +237,7 @@
 #define LLVM_ATTRIBUTE_NORETURN
 #endif
 
+/// \macro LLVM_ATTRIBUTE_RETURNS_NONNULL
 #if __has_attribute(returns_nonnull) || LLVM_GNUC_PREREQ(4, 9, 0)
 #define LLVM_ATTRIBUTE_RETURNS_NONNULL __attribute__((returns_nonnull))
 #elif defined(_MSC_VER)
@@ -229,8 +246,9 @@
 #define LLVM_ATTRIBUTE_RETURNS_NONNULL
 #endif
 
-/// \macro LLVM_ATTRIBUTE_RETURNS_NOALIAS Used to mark a function as returning a
-/// pointer that does not alias any other valid pointer.
+/// \macro LLVM_ATTRIBUTE_RETURNS_NOALIAS
+/// Used to mark a function as returning a pointer that does not alias any other
+/// valid pointer.
 #ifdef __GNUC__
 #define LLVM_ATTRIBUTE_RETURNS_NOALIAS __attribute__((__malloc__))
 #elif defined(_MSC_VER)
@@ -239,7 +257,8 @@
 #define LLVM_ATTRIBUTE_RETURNS_NOALIAS
 #endif
 
-/// LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
+/// \macro LLVM_FALLTHROUGH
+/// Mark fallthrough cases in switch statements.
 #if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
 #define LLVM_FALLTHROUGH [[fallthrough]]
 #elif __has_cpp_attribute(gnu::fallthrough)
@@ -254,8 +273,8 @@
 #define LLVM_FALLTHROUGH
 #endif
 
-/// LLVM_REQUIRE_CONSTANT_INITIALIZATION - Apply this to globals to ensure that
-/// they are constant initialized.
+/// \macro LLVM_REQUIRE_CONSTANT_INITIALIZATION
+/// Apply this to globals to ensure that they are constant initialized.
 #if __has_cpp_attribute(clang::require_constant_initialization)
 #define LLVM_REQUIRE_CONSTANT_INITIALIZATION                                   \
   [[clang::require_constant_initialization]]
@@ -263,8 +282,8 @@
 #define LLVM_REQUIRE_CONSTANT_INITIALIZATION
 #endif
 
-/// LLVM_EXTENSION - Support compilers where we have a keyword to suppress
-/// pedantic diagnostics.
+/// \macro LLVM_EXTENSION
+/// Support compilers where we have a keyword to suppress pedantic diagnostics.
 #ifdef __GNUC__
 #define LLVM_EXTENSION __extension__
 #else
@@ -286,18 +305,18 @@
   decl
 #endif
 
-/// LLVM_BUILTIN_UNREACHABLE - On compilers which support it, expands
-/// to an expression which states that it is undefined behavior for the
-/// compiler to reach this point.  Otherwise is not defined.
-#if __has_builtin(__builtin_unreachable) || LLVM_GNUC_PREREQ(4, 5, 0)
+/// On compilers which support it, expands to an expression which states that it
+/// is undefined behavior for the compiler to reach this point. Otherwise is not
+/// defined.
+#if __has_builtin(__builtin_unreachable)
 # define LLVM_BUILTIN_UNREACHABLE __builtin_unreachable()
 #elif defined(_MSC_VER)
 # define LLVM_BUILTIN_UNREACHABLE __assume(false)
 #endif
 
-/// LLVM_BUILTIN_TRAP - On compilers which support it, expands to an expression
-/// which causes the program to exit abnormally.
-#if __has_builtin(__builtin_trap) || LLVM_GNUC_PREREQ(4, 3, 0)
+/// On compilers which support it, expands to an expression which causes the
+/// program to exit abnormally.
+#if __has_builtin(__builtin_trap)
 # define LLVM_BUILTIN_TRAP __builtin_trap()
 #elif defined(_MSC_VER)
 // The __debugbreak intrinsic is supported by MSVC, does not require forward
@@ -309,9 +328,9 @@
 # define LLVM_BUILTIN_TRAP *(volatile int*)0x11 = 0
 #endif
 
-/// LLVM_BUILTIN_DEBUGTRAP - On compilers which support it, expands to
-/// an expression which causes the program to break while running
-/// under a debugger.
+/// \macro LLVM_BUILTIN_DEBUGTRAP
+/// On compilers which support it, expands to an expression which causes the
+/// program to break while running under a debugger.
 #if __has_builtin(__builtin_debugtrap)
 # define LLVM_BUILTIN_DEBUGTRAP __builtin_debugtrap()
 #elif defined(_MSC_VER)
@@ -328,7 +347,7 @@
 
 /// \macro LLVM_ASSUME_ALIGNED
 /// Returns a pointer with an assumed alignment.
-#if __has_builtin(__builtin_assume_aligned) || LLVM_GNUC_PREREQ(4, 7, 0)
+#if __has_builtin(__builtin_assume_aligned)
 # define LLVM_ASSUME_ALIGNED(p, a) __builtin_assume_aligned(p, a)
 #elif defined(LLVM_BUILTIN_UNREACHABLE)
 // As of today, clang does not support __builtin_assume_aligned.
@@ -455,6 +474,7 @@ void AnnotateIgnoreWritesEnd(const char
 #define LLVM_NO_SANITIZE(KIND)
 #endif
 
+/// \macro LLVM_DUMP_METHOD
 /// Mark debug helper function definitions like dump() that should not be
 /// stripped from debug builds.
 /// Note that you should also surround dump() functions with

Modified: llvm/trunk/include/llvm/Support/MathExtras.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/MathExtras.h?rev=367508&r1=367507&r2=367508&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/MathExtras.h (original)
+++ llvm/trunk/include/llvm/Support/MathExtras.h Wed Jul 31 20:30:45 2019
@@ -79,7 +79,7 @@ template <typename T> struct TrailingZer
     if (ZB != ZB_Undefined && Val == 0)
       return 32;
 
-#if __has_builtin(__builtin_ctz) || LLVM_GNUC_PREREQ(4, 0, 0)
+#if __has_builtin(__builtin_ctz)
     return __builtin_ctz(Val);
 #elif defined(_MSC_VER)
     unsigned long Index;
@@ -95,7 +95,7 @@ template <typename T> struct TrailingZer
     if (ZB != ZB_Undefined && Val == 0)
       return 64;
 
-#if __has_builtin(__builtin_ctzll) || LLVM_GNUC_PREREQ(4, 0, 0)
+#if __has_builtin(__builtin_ctzll)
     return __builtin_ctzll(Val);
 #elif defined(_MSC_VER)
     unsigned long Index;
@@ -148,7 +148,7 @@ template <typename T> struct LeadingZero
     if (ZB != ZB_Undefined && Val == 0)
       return 32;
 
-#if __has_builtin(__builtin_clz) || LLVM_GNUC_PREREQ(4, 0, 0)
+#if __has_builtin(__builtin_clz)
     return __builtin_clz(Val);
 #elif defined(_MSC_VER)
     unsigned long Index;
@@ -164,7 +164,7 @@ template <typename T> struct LeadingZero
     if (ZB != ZB_Undefined && Val == 0)
       return 64;
 
-#if __has_builtin(__builtin_clzll) || LLVM_GNUC_PREREQ(4, 0, 0)
+#if __has_builtin(__builtin_clzll)
     return __builtin_clzll(Val);
 #elif defined(_MSC_VER)
     unsigned long Index;

Modified: llvm/trunk/include/llvm/Support/SwapByteOrder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/SwapByteOrder.h?rev=367508&r1=367507&r2=367508&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/SwapByteOrder.h (original)
+++ llvm/trunk/include/llvm/Support/SwapByteOrder.h Wed Jul 31 20:30:45 2019
@@ -42,7 +42,7 @@ inline uint16_t SwapByteOrder_16(uint16_
 /// SwapByteOrder_32 - This function returns a byte-swapped representation of
 /// the 32-bit argument.
 inline uint32_t SwapByteOrder_32(uint32_t value) {
-#if defined(__llvm__) || (LLVM_GNUC_PREREQ(4, 3, 0) && !defined(__ICC))
+#if defined(__llvm__) || !defined(__ICC)
   return __builtin_bswap32(value);
 #elif defined(_MSC_VER) && !defined(_DEBUG)
   return _byteswap_ulong(value);
@@ -58,7 +58,7 @@ inline uint32_t SwapByteOrder_32(uint32_
 /// SwapByteOrder_64 - This function returns a byte-swapped representation of
 /// the 64-bit argument.
 inline uint64_t SwapByteOrder_64(uint64_t value) {
-#if defined(__llvm__) || (LLVM_GNUC_PREREQ(4, 3, 0) && !defined(__ICC))
+#if defined(__llvm__) || !defined(__ICC)
   return __builtin_bswap64(value);
 #elif defined(_MSC_VER) && !defined(_DEBUG)
   return _byteswap_uint64(value);

Modified: llvm/trunk/include/llvm/Support/type_traits.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/type_traits.h?rev=367508&r1=367507&r2=367508&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/type_traits.h (original)
+++ llvm/trunk/include/llvm/Support/type_traits.h Wed Jul 31 20:30:45 2019
@@ -199,7 +199,7 @@ class is_trivially_copyable<T*> : public
 // macro will be left undefined.
 #if __cplusplus >= 201402L || defined(_MSC_VER)
 #define LLVM_IS_FINAL(Ty) std::is_final<Ty>()
-#elif __has_feature(is_final) || LLVM_GNUC_PREREQ(4, 7, 0)
+#elif __has_feature(is_final)
 #define LLVM_IS_FINAL(Ty) __is_final(Ty)
 #endif
 




More information about the llvm-commits mailing list