diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2021-08-10 18:34:13 +0000 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2021-08-12 09:44:16 -0700 |
| commit | fd116c806aaa59fabd2ab72398d35fc665e8226e (patch) | |
| tree | 3b83acaf50233c52e2bcbf39216cf8fafd886db2 /compiler/rustc_target/src/spec | |
| parent | ae90dcf0207c57c3034f00b07048d63f8b2363c8 (diff) | |
| download | rust-fd116c806aaa59fabd2ab72398d35fc665e8226e.tar.gz rust-fd116c806aaa59fabd2ab72398d35fc665e8226e.zip | |
Add c_enum_min_bits to target spec
Diffstat (limited to 'compiler/rustc_target/src/spec')
| -rw-r--r-- | compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs index e0097ee220a..27d306c41b7 100644 --- a/compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs +++ b/compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs @@ -13,6 +13,8 @@ pub fn target() -> Target { base.dynamic_linking = true; base.executables = true; + base.c_enum_min_bits = 8; + Target { llvm_target: "hexagon-unknown-linux-musl".to_string(), pointer_width: 32, diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 9c957cba6cc..e5987511c97 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1335,6 +1335,9 @@ pub struct TargetOptions { /// If present it's a default value to use for adjusting the C ABI. pub default_adjusted_cabi: Option<Abi>, + + /// Minimum number of bits in #[repr(C)] enum. Defaults to 32. + pub c_enum_min_bits: u64, } impl Default for TargetOptions { @@ -1439,6 +1442,7 @@ impl Default for TargetOptions { split_debuginfo: SplitDebuginfo::Off, supported_sanitizers: SanitizerSet::empty(), default_adjusted_cabi: None, + c_enum_min_bits: 32, } } } @@ -1603,6 +1607,12 @@ impl Target { base.$key_name = s; } } ); + ($key_name:ident, u64) => ( { + let name = (stringify!($key_name)).replace("_", "-"); + if let Some(s) = obj.remove_key(&name).and_then(|j| Json::as_u64(&j)) { + base.$key_name = s; + } + } ); ($key_name:ident, Option<u32>) => ( { let name = (stringify!($key_name)).replace("_", "-"); if let Some(s) = obj.remove_key(&name).and_then(|j| Json::as_u64(&j)) { @@ -2016,6 +2026,7 @@ impl Target { key!(split_debuginfo, SplitDebuginfo)?; key!(supported_sanitizers, SanitizerSet)?; key!(default_adjusted_cabi, Option<Abi>)?; + key!(c_enum_min_bits, u64); if base.is_builtin { // This can cause unfortunate ICEs later down the line. @@ -2254,6 +2265,7 @@ impl ToJson for Target { target_option_val!(has_thumb_interworking); target_option_val!(split_debuginfo); target_option_val!(supported_sanitizers); + target_option_val!(c_enum_min_bits); if let Some(abi) = self.default_adjusted_cabi { d.insert("default-adjusted-cabi".to_string(), Abi::name(abi).to_json()); |
