Auto merge of #145043 - Zalathar:rollup-3dbvdrm, r=Zalathar
Rollup of 19 pull requests Successful merges: - rust-lang/rust#137831 (Tweak auto trait errors) - rust-lang/rust#138689 (add nvptx_target_feature) - rust-lang/rust#140267 (implement continue_ok and break_ok for ControlFlow) - rust-lang/rust#143028 (emit `StorageLive` and schedule `StorageDead` for `let`-`else`'s bindings after matching) - rust-lang/rust#143764 (lower pattern bindings in the order they're written and base drop order on primary bindings' order) - rust-lang/rust#143808 (Port `#[should_panic]` to the new attribute parsing infrastructure ) - rust-lang/rust#143906 (Miri: non-deterministic floating point operations in `foreign_items`) - rust-lang/rust#143929 (Mark all deprecation lints in name resolution as deny-by-default and report-in-deps) - rust-lang/rust#144133 (Stabilize const TypeId::of) - rust-lang/rust#144369 (Upgrade semicolon_in_expressions_from_macros from warn to deny) - rust-lang/rust#144439 (Introduce ModernIdent type to unify macro 2.0 hygiene handling) - rust-lang/rust#144473 (Address libunwind.a inconsistency issues in the bootstrap program) - rust-lang/rust#144601 (Allow `cargo fix` to partially apply `mismatched_lifetime_syntaxes`) - rust-lang/rust#144650 (Additional tce tests) - rust-lang/rust#144659 (bootstrap: refactor mingw dist and fix gnullvm) - rust-lang/rust#144682 (Stabilize `strict_overflow_ops`) - rust-lang/rust#145026 (Update books) - rust-lang/rust#145033 (Reimplement `print_region` in `type_name.rs`.) - rust-lang/rust#145040 (rustc-dev-guide subtree update) Failed merges: - rust-lang/rust#143857 (Port #[macro_export] to the new attribute parsing infrastructure) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
@@ -197,7 +197,10 @@ fn parse_rust_feature_flag<'a>(
|
||||
/// 2nd component of the return value, respectively).
|
||||
///
|
||||
/// `target_base_has_feature` should check whether the given feature (a Rust feature name!) is
|
||||
/// enabled in the "base" target machine, i.e., without applying `-Ctarget-feature`.
|
||||
/// enabled in the "base" target machine, i.e., without applying `-Ctarget-feature`. Note that LLVM
|
||||
/// may consider features to be implied that we do not and vice-versa. We want `cfg` to be entirely
|
||||
/// consistent with Rust feature implications, and thus only consult LLVM to expand the target CPU
|
||||
/// to target features.
|
||||
///
|
||||
/// We do not have to worry about RUSTC_SPECIFIC_FEATURES here, those are handled elsewhere.
|
||||
pub fn cfg_target_feature(
|
||||
@@ -211,7 +214,15 @@ pub fn cfg_target_feature(
|
||||
.rust_target_features()
|
||||
.iter()
|
||||
.filter(|(feature, _, _)| target_base_has_feature(feature))
|
||||
.map(|(feature, _, _)| Symbol::intern(feature))
|
||||
.flat_map(|(base_feature, _, _)| {
|
||||
// Expand the direct base feature into all transitively-implied features. Note that we
|
||||
// cannot simply use the `implied` field of the tuple since that only contains
|
||||
// directly-implied features.
|
||||
//
|
||||
// Iteration order is irrelevant because we're collecting into an `UnordSet`.
|
||||
#[allow(rustc::potential_query_instability)]
|
||||
sess.target.implied_target_features(base_feature).into_iter().map(|f| Symbol::intern(f))
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Add enabled and remove disabled features.
|
||||
|
||||
Reference in New Issue
Block a user