diff options
author | CohenArthur <arthur.cohen@epita.fr> | 2021-09-06 12:07:50 +0200 |
---|---|---|
committer | CohenArthur <arthur.cohen@epita.fr> | 2021-09-06 12:07:50 +0200 |
commit | 37f3b02bf8edbf707e6156feec593b9b0d7da027 (patch) | |
tree | bb57652658a6676fa95283302d6aa374f4c5f176 /gcc | |
parent | 04ea1955ee6a70390a171328c537ed121eb05078 (diff) | |
download | gcc-37f3b02bf8edbf707e6156feec593b9b0d7da027.zip gcc-37f3b02bf8edbf707e6156feec593b9b0d7da027.tar.gz gcc-37f3b02bf8edbf707e6156feec593b9b0d7da027.tar.bz2 |
mangling: Use Enum(frust_mangling) for option instead of string
Co-authored-by: Marc Poulhies <dkm@kataplop.net>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/backend/rust-mangle.h | 15 | ||||
-rw-r--r-- | gcc/rust/lang.opt | 13 | ||||
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 3 |
3 files changed, 17 insertions, 14 deletions
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<MangleVersion> (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-<type> Dump Rust frontend internal information. frust-mangling= -Rust Joined RejectNegative --frust-mangling=<version> 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 |