base: Add GEM5_DEPRECATED_ENUM_VAL

This deperecation enum works exactly the same way as GEM5_DEPRECATED
but will not expand if using GCC <6, as enum value deprecation was only
introduced in GCC 6.

Change-Id: I64fcaca0d79a353da805642e021ec1cb101cfa0e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/45539
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Bobby R. Bruce
2021-05-14 17:28:36 -07:00
parent a84a15ab17
commit 3275fa8e4f
2 changed files with 13 additions and 3 deletions

View File

@@ -116,6 +116,16 @@
// Mark a c++ declaration as deprecated, with a message explaining what to do
// to update to a non-deprecated alternative.
# define GEM5_DEPRECATED(message) [[gnu::deprecated(message)]]
// Mark a C++ emum value as deprecated, with a message explaining what to do
// to update to a non-deprecated alternative. This wraps GEM5_DEPRECATED but
// is guarded by a preprocessor if directive to ensure it is not included
// when compiled in GCC < 6, as deprecation of enum values was introduced in
// GCC 6. All supported clang compilers allow enum value deprecation.
# if defined(__clang__) || __GNUC__ >= 6
# define GEM5_DEPRECATED_ENUM_VAL(message) GEM5_DEPRECATED(message)
# else
# define GEM5_DEPRECATED_ENUM_VAL(message)
# endif
// Mark an expression-like macro as deprecated by wrapping it in some code
// which declares and uses a deprecated variable with the same name as the
// macro. The wrapping macro evaluates to the same thing as the original macro.

View File

@@ -98,8 +98,8 @@ enum Type
} // namespace gem5
#define GEM5_DEPRECATE_AT(NAME, name) M5_AT_##NAME \
GEM5_DEPRECATED("Replace M5_AT_" #NAME " with gem5::auxv::" #name) = \
gem5::auxv::name
GEM5_DEPRECATED_ENUM_VAL(\
"Replace M5_AT_" #NAME " with gem5::auxv::" #name) = gem5::auxv::name
enum AuxiliaryVectorType
{
@@ -122,7 +122,7 @@ enum AuxiliaryVectorType
GEM5_DEPRECATE_AT(HWCAP, Hwcap),
GEM5_DEPRECATE_AT(CLKTCK, Clktck),
GEM5_DEPRECATE_AT(SECURE, Secure),
M5_BASE_PLATFORM GEM5_DEPRECATED(
M5_BASE_PLATFORM GEM5_DEPRECATED_ENUM_VAL(
"Replace M5_BASE_PLATFORM with gem5::auxv::BasePlatform") =
gem5::auxv::BasePlatform,
GEM5_DEPRECATE_AT(RANDOM, Random),