Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc++] Remove conditional for attributes that are always available #126879

Merged
merged 1 commit into from
Feb 12, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 11 additions & 44 deletions libcxx/include/__config
Original file line number Diff line number Diff line change
Expand Up @@ -1119,18 +1119,23 @@ typedef __char32_t char32_t;

// Optional attributes - these are useful for a better QoI, but not required to be available

# define _LIBCPP_NOALIAS __attribute__((__malloc__))
# define _LIBCPP_NODEBUG [[__gnu__::__nodebug__]]
# define _LIBCPP_NO_SANITIZE(...) __attribute__((__no_sanitize__(__VA_ARGS__)))
# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((__init_priority__(100)))
# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) \
__attribute__((__format__(archetype, format_string_index, first_format_arg_index)))
# define _LIBCPP_PACKED __attribute__((__packed__))

// Use a function like macro to imply that it must be followed by a semicolon
# define _LIBCPP_FALLTHROUGH() [[fallthrough]]

# if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC)
# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi")))
# else
# define _LIBCPP_NO_CFI
# endif

# if __has_attribute(__malloc__)
# define _LIBCPP_NOALIAS __attribute__((__malloc__))
# else
# define _LIBCPP_NOALIAS
# endif

# if __has_attribute(__using_if_exists__)
# define _LIBCPP_USING_IF_EXISTS __attribute__((__using_if_exists__))
# else
Expand All @@ -1149,15 +1154,6 @@ typedef __char32_t char32_t;
# define _LIBCPP_DIAGNOSE_WARNING(...)
# endif

// Use a function like macro to imply that it must be followed by a semicolon
# if __has_cpp_attribute(fallthrough)
# define _LIBCPP_FALLTHROUGH() [[fallthrough]]
# elif __has_attribute(__fallthrough__)
# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__))
# else
# define _LIBCPP_FALLTHROUGH() ((void)0)
# endif

# if __has_cpp_attribute(_Clang::__lifetimebound__)
# define _LIBCPP_LIFETIMEBOUND [[_Clang::__lifetimebound__]]
# else
Expand All @@ -1170,8 +1166,6 @@ typedef __char32_t char32_t;
# define _LIBCPP_NOESCAPE
# endif

# define _LIBCPP_NODEBUG [[__gnu__::__nodebug__]]

# if __has_cpp_attribute(_Clang::__no_specializations__)
# define _LIBCPP_NO_SPECIALIZATIONS \
[[_Clang::__no_specializations__("Users are not allowed to specialize this standard library entity")]]
Expand All @@ -1191,33 +1185,6 @@ typedef __char32_t char32_t;
# define _LIBCPP_PREFERRED_NAME(x)
# endif

# if __has_attribute(__no_sanitize__)
# define _LIBCPP_NO_SANITIZE(...) __attribute__((__no_sanitize__(__VA_ARGS__)))
# else
# define _LIBCPP_NO_SANITIZE(...)
# endif

# if __has_attribute(__init_priority__)
# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((__init_priority__(100)))
# else
# define _LIBCPP_INIT_PRIORITY_MAX
# endif

# if __has_attribute(__format__)
// The attribute uses 1-based indices for ordinary and static member functions.
// The attribute uses 2-based indices for non-static member functions.
# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) \
__attribute__((__format__(archetype, format_string_index, first_format_arg_index)))
# else
# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) /* nothing */
# endif

# if __has_attribute(__packed__)
# define _LIBCPP_PACKED __attribute__((__packed__))
# else
# define _LIBCPP_PACKED
# endif

# if defined(_LIBCPP_ABI_MICROSOFT) && __has_declspec_attribute(empty_bases)
# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
# else
Expand Down