Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit a1ab167

Browse files
authored
Rollup merge of rust-lang#117141 - tmiasko:inline-target-features, r=oli-obk
Require target features to match exactly during inlining In general it is not correct to inline a callee with a target features that are subset of the callee. Require target features to match exactly during inlining. The exact match could be potentially relaxed, but this would require identifying specific feature that are allowed to differ, those that need to match, and those that can be present in caller but not in callee. This resolves MIR part of rust-lang#116573. For other concerns with respect to the previous implementation also see areInlineCompatible in LLVM.
2 parents 24254d2 + 011b260 commit a1ab167

12 files changed

+44
-230
lines changed

compiler/rustc_mir_transform/src/inline.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,10 +438,8 @@ impl<'tcx> Inliner<'tcx> {
438438
return Err("incompatible instruction set");
439439
}
440440

441-
for feature in &callee_attrs.target_features {
442-
if !self.codegen_fn_attrs.target_features.contains(feature) {
443-
return Err("incompatible target feature");
444-
}
441+
if callee_attrs.target_features != self.codegen_fn_attrs.target_features {
442+
return Err("incompatible target features");
445443
}
446444

447445
Ok(())

tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-abort.diff

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-unwind.diff

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-abort.diff

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-unwind.diff

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-abort.diff

Lines changed: 0 additions & 22 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-unwind.diff

Lines changed: 0 additions & 22 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-abort.diff

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-unwind.diff

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-abort.diff

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)