aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorCohenArthur <arthur.cohen@epita.fr>2021-09-06 12:07:50 +0200
committerCohenArthur <arthur.cohen@epita.fr>2021-09-06 12:07:50 +0200
commit37f3b02bf8edbf707e6156feec593b9b0d7da027 (patch)
treebb57652658a6676fa95283302d6aa374f4c5f176 /gcc
parent04ea1955ee6a70390a171328c537ed121eb05078 (diff)
downloadgcc-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.h15
-rw-r--r--gcc/rust/lang.opt13
-rw-r--r--gcc/rust/rust-session-manager.cc3
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