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

Commit 1a69ffe

Browse files
authored
Unrolled build for rust-lang#117141
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 cf226e9 + 011b260 commit 1a69ffe

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)