From 37f3b02bf8edbf707e6156feec593b9b0d7da027 Mon Sep 17 00:00:00 2001 From: CohenArthur Date: Mon, 6 Sep 2021 12:07:50 +0200 Subject: mangling: Use Enum(frust_mangling) for option instead of string Co-authored-by: Marc Poulhies --- gcc/rust/backend/rust-mangle.h | 15 +++++---------- gcc/rust/lang.opt | 13 +++++++++++-- gcc/rust/rust-session-manager.cc | 3 +-- 3 files changed, 17 insertions(+), 14 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/backend/rust-mangle.h b/gcc/rust/backend/rust-mangle.h index 1087446..9e77c54 100644 --- a/gcc/rust/backend/rust-mangle.h +++ b/gcc/rust/backend/rust-mangle.h @@ -26,8 +26,9 @@ class Mangler public: enum MangleVersion { + // Values defined in rust/lang.opt LEGACY = 0, - V0, + V0 = 1, }; // this needs to support Legacy and V0 see github #429 or #305 @@ -40,18 +41,12 @@ public: const std::string &name, const std::string &crate_name) const; - static bool choose_mangling (std::string arg) + static void set_mangling (int frust_mangling_value) { - if (arg == "legacy") - version = MangleVersion::LEGACY; - else if (arg == "v0") - version = MangleVersion::V0; - else - return false; - - return true; + version = static_cast (frust_mangling_value); } +private: static enum MangleVersion version; }; } // namespace Compile diff --git a/gcc/rust/lang.opt b/gcc/rust/lang.opt index 72542de..27e3c44 100644 --- a/gcc/rust/lang.opt +++ b/gcc/rust/lang.opt @@ -44,8 +44,17 @@ Rust Joined RejectNegative -frust-dump- Dump Rust frontend internal information. frust-mangling= -Rust Joined RejectNegative --frust-mangling= Choose which version to use for name mangling (legacy, v0) +Rust Joined RejectNegative Enum(frust_mangling) Var(flag_rust_mangling) +-frust-mangling=[legacy|v0] Choose which version to use for name mangling + +Enum +Name(frust_mangling) Type(int) UnknownError(unknown rust mangling option %qs) + +EnumValue +Enum(frust_mangling) String(legacy) Value(0) + +EnumValue +Enum(frust_mangling) String(v0) Value(1) o Rust Joined Separate diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 82593f3..a924c4b 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -371,8 +371,7 @@ Session::handle_option ( } break; case OPT_frust_mangling_: - if (arg != nullptr) - ret = Compile::Mangler::choose_mangling (std::string (arg)); + Compile::Mangler::set_mangling (flag_rust_mangling); // no option handling for -o default: // return 1 to indicate option is valid -- cgit v1.1