rust/compiler
许杰友 Jieyou Xu (Joe) d65f568302
Rollup merge of #137713 - vayunbiyani:fix-enzyme-build-errors, r=oli-obk
Fix enzyme build errors

After [this PR](https://github.com/rust-lang/rust/pull/136428) was merged, I switched to master and attempted building `./x.py build --stage 1 library` with the config mentioned in the enzyme rustbook but it resulted in some errors tho the config.example.toml build succeeded
The errors were re:
### 1. Use of ref in match patterns
The errors were related to match ergonomics in Rust 2024, where ref is no longer needed when matching on references. Examples:
```
error: binding modifiers may only be written when the default binding mode is `move`
   --> compiler/rustc_builtin_macros/src/autodiff.rs:136:31
    |
136 |             Annotatable::Item(ref iitem) => {
    |                               ^^^ binding modifier not allowed under `ref` default binding mode
    |
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html>
note: matching on a reference type with a non-reference pattern changes the default binding mode
   --> compiler/rustc_builtin_macros/src/autodiff.rs:136:13
    |
136 |             Annotatable::Item(ref iitem) => {
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_`
help: remove the unnecessary binding modifier
    |
136 -             Annotatable::Item(ref iitem) => {
136 +             Annotatable::Item(iitem) => {
    |

error: binding modifiers may only be written when the default binding mode is `move`
   --> compiler/rustc_builtin_macros/src/autodiff.rs:146:36
    |
146 |             Annotatable::AssocItem(ref assoc_item, _) => {
    |                                    ^^^ binding modifier not allowed under `ref` default binding mode
    |
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html>
note: matching on a reference type with a non-reference pattern changes the default binding mode
   --> compiler/rustc_builtin_macros/src/autodiff.rs:146:13
    |
146 |             Annotatable::AssocItem(ref assoc_item, _) => {
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_`
help: remove the unnecessary binding modifier
    |
146 -             Annotatable::AssocItem(ref assoc_item, _) => {
146 +             Annotatable::AssocItem(assoc_item, _) => {
    |

error: binding modifiers may only be written when the default binding mode is `move`
   --> compiler/rustc_builtin_macros/src/autodiff.rs:174:31
    |
174 | ...       Annotatable::Item(ref iitem) => (iitem.vis.clone(), iitem.ide...
    |                             ^^^ binding modifier not allowed under `ref` default binding mode
    |
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html>
note: matching on a reference type with a non-reference pattern changes the default binding mode
   --> compiler/rustc_builtin_macros/src/autodiff.rs:174:13
    |
174 | ...   Annotatable::Item(ref iitem) => (iitem.vis.clone(), iitem.ident.c...
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_`
help: remove the unnecessary binding modifier
    |
174 -             Annotatable::Item(ref iitem) => (iitem.vis.clone(), iitem.ident.clone()),
174 +             Annotatable::Item(iitem) => (iitem.vis.clone(), iitem.ident.clone()),
    |

error: binding modifiers may only be written when the default binding mode is `move`
   --> compiler/rustc_builtin_macros/src/autodiff.rs:175:36
    |
175 |             Annotatable::AssocItem(ref assoc_item, _) => {
    |                                    ^^^ binding modifier not allowed under `ref` default binding mode
    |
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/match-ergonomics.html>
note: matching on a reference type with a non-reference pattern changes the default binding mode
   --> compiler/rustc_builtin_macros/src/autodiff.rs:175:13
    |
175 |             Annotatable::AssocItem(ref assoc_item, _) => {
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this matches on type `&_`
help: remove the unnecessary binding modifier
    |
175 -             Annotatable::AssocItem(ref assoc_item, _) => {
175 +             Annotatable::AssocItem(assoc_item, _) => {
    |

error: could not compile `rustc_builtin_macros` (lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
Build completed unsuccessfully in 0:19:39
```
### 2. the use of external C blocks without unsafe in compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs (I don't have the error message handy)

The first commit fixes the errors above

---
## Additional Improvement:
`@ZuseZ4` suggested we consolidate the variants under `#[cfg(llvm_enzyme)]` and `#[cfg(not(llvm_enzyme))]` by conditionally checking for `cfg!(llvm_enzyme)` instead. This way,  the autodiff code is compiled but not executed avoiding such regressions

r? `@ZuseZ4`
cc: `@oli-obk`
2025-02-28 21:42:01 +08:00
..
rustc Fix overcapturing, unsafe extern blocks, and new unsafe ops 2025-02-22 00:01:48 +00:00
rustc_abi Rollup merge of #137334 - compiler-errors:edition-2024-fresh-2, r=saethlin,traviscross 2025-02-23 02:44:18 -05:00
rustc_arena Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_ast Rename AssocOp::As as AssocOp::Cast. 2025-02-27 09:53:18 +11:00
rustc_ast_ir Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_ast_lowering lower attr spans and inline some functions to hopefully mitigate perf regressions 2025-02-24 14:37:58 +01:00
rustc_ast_passes Teach structured errors to display short Ty 2025-02-25 16:56:03 +00:00
rustc_ast_pretty Introduce AssocOp::Binary. 2025-02-27 09:53:17 +11:00
rustc_attr_data_structures Spruce up AttributeKind docs 2025-02-26 22:21:36 +00:00
rustc_attr_parsing fix #137589 2025-02-25 18:17:32 +01:00
rustc_baked_icu_data Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_borrowck Rollup merge of #137201 - estebank:structured-errors-long-ty, r=oli-obk 2025-02-26 19:03:55 +01:00
rustc_builtin_macros switch #[cfg(not(llvm_enzyme))] to cfg!(llvm_enzyme) 2025-02-27 19:32:30 +05:30
rustc_codegen_cranelift Auto merge of #137608 - fmease:rollup-h4siso6, r=fmease 2025-02-25 19:36:17 +00:00
rustc_codegen_gcc Rollup merge of #137595 - folkertdev:remove-simd-pow-powi, r=RalfJung 2025-02-25 13:07:40 +01:00
rustc_codegen_llvm Rollup merge of #137713 - vayunbiyani:fix-enzyme-build-errors, r=oli-obk 2025-02-28 21:42:01 +08:00
rustc_codegen_ssa Rollup merge of #137201 - estebank:structured-errors-long-ty, r=oli-obk 2025-02-26 19:03:55 +01:00
rustc_const_eval require trait impls to have matching const stabilities as the traits 2025-02-27 04:56:27 +00:00
rustc_data_structures Rollup merge of #136579 - bjorn3:fix_thinvec_ext_ub, r=BoxyUwU 2025-02-27 08:56:36 +01:00
rustc_driver Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_driver_impl Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_error_codes Rollup merge of #137489 - RalfJung:no-more-rustc_intrinsic_must_be_overridden, r=oli-obk 2025-02-24 19:21:47 -05:00
rustc_error_messages Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_errors Fix rebase 2025-02-25 17:27:22 +00:00
rustc_expand Introduce new-style attribute parsers for several attributes 2025-02-24 14:31:17 +01:00
rustc_feature Rollup merge of #137489 - RalfJung:no-more-rustc_intrinsic_must_be_overridden, r=oli-obk 2025-02-24 19:21:47 -05:00
rustc_fluent_macro Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_fs_util Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_graphviz Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_hashes Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_hir Rollup merge of #137712 - meithecatte:extract-binding-mode, r=oli-obk 2025-02-28 21:42:00 +08:00
rustc_hir_analysis Rollup merge of #137631 - TaKO8Ki:issue-137508, r=compiler-errors 2025-02-26 19:03:56 +01:00
rustc_hir_pretty Introduce AssocOp::Binary. 2025-02-27 09:53:17 +11:00
rustc_hir_typeck Clean up TypeckResults::extract_binding_mode 2025-02-27 10:19:12 +01:00
rustc_incremental Change span field accesses to method calls 2025-02-24 14:22:31 +01:00
rustc_index Rollup merge of #136610 - Jarcho:range_idx, r=Noratrieb 2025-02-24 02:11:32 -05:00
rustc_index_macros Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_infer Rollup merge of #136610 - Jarcho:range_idx, r=Noratrieb 2025-02-24 02:11:32 -05:00
rustc_interface Auto merge of #137420 - matthiaskrgr:rollup-rr0q37f, r=matthiaskrgr 2025-02-22 13:32:44 +00:00
rustc_lexer Greatly simplify lifetime captures in edition 2024 2025-02-22 22:24:52 +00:00
rustc_lint Rollup merge of #136424 - 11happy:overflow.hex.fix, r=fmease 2025-02-28 21:41:58 +08:00
rustc_lint_defs Introduce new-style attribute parsers for several attributes 2025-02-24 14:31:17 +01:00
rustc_llvm Auto merge of #137271 - nikic:gep-nuw-2, r=scottmcm 2025-02-24 03:06:16 +00:00
rustc_log Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_macros pretty print hir attributes 2025-02-24 14:31:19 +01:00
rustc_metadata Rollup merge of #137201 - estebank:structured-errors-long-ty, r=oli-obk 2025-02-26 19:03:55 +01:00
rustc_middle Rollup merge of #137712 - meithecatte:extract-binding-mode, r=oli-obk 2025-02-28 21:42:00 +08:00
rustc_mir_build Teach structured errors to display short Ty 2025-02-25 16:56:03 +00:00
rustc_mir_dataflow Greatly simplify lifetime captures in edition 2024 2025-02-22 22:24:52 +00:00
rustc_mir_transform Print out destructor 2025-02-26 19:03:29 +00:00
rustc_monomorphize Rollup merge of #137601 - davidtwco:deduplicate-type-has-metadata, r=fmease,bjorn3 2025-02-26 04:15:05 +01:00
rustc_next_trait_solver review 2025-02-28 12:16:48 +01:00
rustc_parse Rollup merge of #136846 - nnethercote:make-AssocOp-more-like-ExprKind, r=spastorino 2025-02-27 08:56:37 +01:00
rustc_parse_format Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_passes require trait impls to have matching const stabilities as the traits 2025-02-27 04:56:27 +00:00
rustc_pattern_analysis Greatly simplify lifetime captures in edition 2024 2025-02-22 22:24:52 +00:00
rustc_privacy Introduce new-style attribute parsers for several attributes 2025-02-24 14:31:17 +01:00
rustc_query_impl Introduce new parsing infrastructure and types for parsed attributes 2025-02-24 14:26:06 +01:00
rustc_query_system Introduce new parsing infrastructure and types for parsed attributes 2025-02-24 14:26:06 +01:00
rustc_resolve Rollup merge of #137201 - estebank:structured-errors-long-ty, r=oli-obk 2025-02-26 19:03:55 +01:00
rustc_sanitizers Introduce new-style attribute parsers for several attributes 2025-02-24 14:31:17 +01:00
rustc_serialize rename sub_ptr 😅 2025-02-23 23:11:00 +07:00
rustc_session Teach structured errors to display short Ty 2025-02-25 16:56:03 +00:00
rustc_smir change smir attributes getters to only support tool attributes 2025-02-24 14:31:19 +01:00
rustc_span Auto merge of #137608 - fmease:rollup-h4siso6, r=fmease 2025-02-25 19:36:17 +00:00
rustc_symbol_mangling Introduce new-style attribute parsers for several attributes 2025-02-24 14:31:17 +01:00
rustc_target Rollup merge of #137370 - RalfJung:x86-abi-fallback, r=SparrowLii 2025-02-25 13:07:23 +01:00
rustc_trait_selection review 2025-02-28 12:16:48 +01:00
rustc_traits Rollup merge of #137333 - compiler-errors:edition-2024-fresh, r=Nadrieril 2025-02-22 11:36:43 +01:00
rustc_transmute Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
rustc_ty_utils Don't infer unwinding of virtual calls based on the function attributes 2025-02-27 12:58:18 +08:00
rustc_type_ir review 2025-02-28 12:16:48 +01:00
rustc_type_ir_macros Upgrade the compiler to edition 2024 2025-02-22 00:01:48 +00:00
stable_mir change smir attributes getters to only support tool attributes 2025-02-24 14:31:19 +01:00