From 295378729b782d7ec45588af136a0d7c7305e8df Mon Sep 17 00:00:00 2001 From: Daniel Paoliello Date: Mon, 28 Apr 2025 12:07:30 -0700 Subject: [PATCH 001/152] DRAFT: Add an aarch64-msvc build running on ARM64 Windows --- .github/workflows/ci.yml | 3 +++ src/ci/github-actions/jobs.yml | 21 +++++++++++++++++++-- src/ci/scripts/install-clang.sh | 16 +++++++++++++--- src/ci/scripts/install-rust.sh | 15 +++++++++++++++ 4 files changed, 50 insertions(+), 5 deletions(-) create mode 100755 src/ci/scripts/install-rust.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 841bc39bf1e6..cb0510115ae5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -163,6 +163,9 @@ jobs: - name: show the current environment run: src/ci/scripts/dump-environment.sh + - name: install rust + run: src/ci/scripts/install-rust.sh + - name: install awscli run: src/ci/scripts/install-awscli.sh diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index 43c77d1ddf7f..0bd05b99bbc5 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -46,6 +46,10 @@ runners: os: windows-2025-8core-32gb <<: *base-job + - &job-windows-aarch64 + os: windows-11-arm + <<: *base-job + - &job-aarch64-linux # Free some disk space to avoid running out of space during the build. free_disk: true @@ -539,6 +543,19 @@ auto: SCRIPT: make ci-msvc-ps1 <<: *job-windows + # aarch64-msvc is split into two jobs to run tests in parallel. + - name: aarch64-msvc-1 + env: + RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc + SCRIPT: make ci-msvc-py + <<: *job-windows-aarch64 + + - name: aarch64-msvc-2 + env: + RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc + SCRIPT: make ci-msvc-ps1 + <<: *job-windows-aarch64 + # x86_64-msvc-ext is split into multiple jobs to run tests in parallel. - name: x86_64-msvc-ext1 env: @@ -634,14 +651,14 @@ auto: - name: dist-aarch64-msvc env: RUST_CONFIGURE_ARGS: >- - --build=x86_64-pc-windows-msvc + --build=aarch64-pc-windows-msvc --host=aarch64-pc-windows-msvc --target=aarch64-pc-windows-msvc,arm64ec-pc-windows-msvc --enable-full-tools --enable-profiler SCRIPT: python x.py dist bootstrap --include-default-paths DIST_REQUIRE_ALL_TOOLS: 1 - <<: *job-windows + <<: *job-windows-aarch64 - name: dist-i686-mingw env: diff --git a/src/ci/scripts/install-clang.sh b/src/ci/scripts/install-clang.sh index a9528e929159..657e1492a6d6 100755 --- a/src/ci/scripts/install-clang.sh +++ b/src/ci/scripts/install-clang.sh @@ -56,9 +56,19 @@ elif isWindows && ! isKnownToBeMingwBuild; then mkdir -p citools/clang-rust cd citools - retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.exe" \ - -o "LLVM-${LLVM_VERSION}-win64.exe" - 7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-win64.exe" + + if [[ "${CI_JOB_NAME}" = *aarch64* ]]; then + suffix=woa64 + + # On Arm64, the Ring crate requires that Clang be on the PATH. + # https://github.com/briansmith/ring/blob/main/BUILDING.md + ciCommandAddPath "$(cygpath -m "$(pwd)/clang-rust/bin")" + else + suffix=win64 + fi + retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-${suffix}.exe" \ + -o "LLVM-${LLVM_VERSION}-${suffix}.exe" + 7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-${suffix}.exe" ciCommandSetEnv RUST_CONFIGURE_ARGS \ "${RUST_CONFIGURE_ARGS} --set llvm.clang-cl=$(pwd)/clang-rust/bin/clang-cl.exe" diff --git a/src/ci/scripts/install-rust.sh b/src/ci/scripts/install-rust.sh new file mode 100755 index 000000000000..e4aee98c9fb2 --- /dev/null +++ b/src/ci/scripts/install-rust.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# The Arm64 Windows Runner does not have Rust already installed +# https://github.com/actions/partner-runner-images/issues/77 + +set -euo pipefail +IFS=$'\n\t' + +source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" + +if [[ "${CI_JOB_NAME}" = *aarch64* ]] && isWindows; then + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ + sh -s -- -y -q --default-host aarch64-pc-windows-msvc + ciCommandAddPath "${USERPROFILE}/.cargo/bin" +fi From e9191ec57ee5bdd0961a22fd9852f361a5c97ea0 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Tue, 1 Jul 2025 21:42:20 +0500 Subject: [PATCH 002/152] moved tests --- .../auto-traits-type-parameter} | 0 .../const-eval-array-len-in-impl.rs} | 0 .../const-eval-array-len-in-impl.stderr} | 0 .../let-binding-tuple-destructuring.rs} | 0 .../any-lifetime-escape-higher-rank.rs} | 0 .../type-length-limit-enforcement.rs} | 0 .../type-length-limit-enforcement.stderr} | 0 .../macro-fragment-ident-underscore-error.rs} | 0 .../macro-fragment-ident-underscore-error.stderr} | 0 .../struct-type-and-function-name-coexistence.rs} | 0 .../integer-literal-method-call-underscore.rs} | 0 .../ptr-write-bool-representation.rs} | 0 tests/ui/{type-ptr.rs => ptr_ops/raw-pointer-type-basic.rs} | 0 .../try-operator-expansion-hygiene.rs} | 0 .../try-operator-various-contexts.rs} | 0 .../type-inference-none-in-generic-ref.rs} | 0 .../type-inference-none-in-generic-ref.stderr} | 0 .../type-inference-unconstrained-none.rs} | 0 .../type-inference-unconstrained-none.stderr} | 0 tests/ui/{tydesc-name.rs => type/type-name-basic.rs} | 0 .../typeid-consistency-comprehensive.rs} | 0 .../basic-underscore-lifetime-elision.rs} | 0 22 files changed, 0 insertions(+), 0 deletions(-) rename tests/ui/{type-param-constraints.rs => auto-traits/auto-traits-type-parameter} (100%) rename tests/ui/{unevaluated_fixed_size_array_len.rs => consts/const-eval-array-len-in-impl.rs} (100%) rename tests/ui/{unevaluated_fixed_size_array_len.stderr => consts/const-eval-array-len-in-impl.stderr} (100%) rename tests/ui/{typestate-multi-decl.rs => destructuring-assignment/let-binding-tuple-destructuring.rs} (100%) rename tests/ui/{type-id-higher-rank-2.rs => lifetimes/any-lifetime-escape-higher-rank.rs} (100%) rename tests/ui/{type_length_limit.rs => limits/type-length-limit-enforcement.rs} (100%) rename tests/ui/{type_length_limit.stderr => limits/type-length-limit-enforcement.stderr} (100%) rename tests/ui/{underscore-ident-matcher.rs => macros/macro-fragment-ident-underscore-error.rs} (100%) rename tests/ui/{underscore-ident-matcher.stderr => macros/macro-fragment-ident-underscore-error.stderr} (100%) rename tests/ui/{type-namespace.rs => namespace/struct-type-and-function-name-coexistence.rs} (100%) rename tests/ui/{underscore-method-after-integer.rs => parser/integer-literal-method-call-underscore.rs} (100%) rename tests/ui/{type-use-i1-versus-i8.rs => ptr_ops/ptr-write-bool-representation.rs} (100%) rename tests/ui/{type-ptr.rs => ptr_ops/raw-pointer-type-basic.rs} (100%) rename tests/ui/{try-operator-hygiene.rs => try-trait/try-operator-expansion-hygiene.rs} (100%) rename tests/ui/{try-operator.rs => try-trait/try-operator-various-contexts.rs} (100%) rename tests/ui/{unconstrained-ref.rs => type-inference/type-inference-none-in-generic-ref.rs} (100%) rename tests/ui/{unconstrained-ref.stderr => type-inference/type-inference-none-in-generic-ref.stderr} (100%) rename tests/ui/{unconstrained-none.rs => type-inference/type-inference-unconstrained-none.rs} (100%) rename tests/ui/{unconstrained-none.stderr => type-inference/type-inference-unconstrained-none.stderr} (100%) rename tests/ui/{tydesc-name.rs => type/type-name-basic.rs} (100%) rename tests/ui/{typeid-intrinsic.rs => type/typeid-consistency-comprehensive.rs} (100%) rename tests/ui/{underscore-lifetimes.rs => underscore-lifetime/basic-underscore-lifetime-elision.rs} (100%) diff --git a/tests/ui/type-param-constraints.rs b/tests/ui/auto-traits/auto-traits-type-parameter similarity index 100% rename from tests/ui/type-param-constraints.rs rename to tests/ui/auto-traits/auto-traits-type-parameter diff --git a/tests/ui/unevaluated_fixed_size_array_len.rs b/tests/ui/consts/const-eval-array-len-in-impl.rs similarity index 100% rename from tests/ui/unevaluated_fixed_size_array_len.rs rename to tests/ui/consts/const-eval-array-len-in-impl.rs diff --git a/tests/ui/unevaluated_fixed_size_array_len.stderr b/tests/ui/consts/const-eval-array-len-in-impl.stderr similarity index 100% rename from tests/ui/unevaluated_fixed_size_array_len.stderr rename to tests/ui/consts/const-eval-array-len-in-impl.stderr diff --git a/tests/ui/typestate-multi-decl.rs b/tests/ui/destructuring-assignment/let-binding-tuple-destructuring.rs similarity index 100% rename from tests/ui/typestate-multi-decl.rs rename to tests/ui/destructuring-assignment/let-binding-tuple-destructuring.rs diff --git a/tests/ui/type-id-higher-rank-2.rs b/tests/ui/lifetimes/any-lifetime-escape-higher-rank.rs similarity index 100% rename from tests/ui/type-id-higher-rank-2.rs rename to tests/ui/lifetimes/any-lifetime-escape-higher-rank.rs diff --git a/tests/ui/type_length_limit.rs b/tests/ui/limits/type-length-limit-enforcement.rs similarity index 100% rename from tests/ui/type_length_limit.rs rename to tests/ui/limits/type-length-limit-enforcement.rs diff --git a/tests/ui/type_length_limit.stderr b/tests/ui/limits/type-length-limit-enforcement.stderr similarity index 100% rename from tests/ui/type_length_limit.stderr rename to tests/ui/limits/type-length-limit-enforcement.stderr diff --git a/tests/ui/underscore-ident-matcher.rs b/tests/ui/macros/macro-fragment-ident-underscore-error.rs similarity index 100% rename from tests/ui/underscore-ident-matcher.rs rename to tests/ui/macros/macro-fragment-ident-underscore-error.rs diff --git a/tests/ui/underscore-ident-matcher.stderr b/tests/ui/macros/macro-fragment-ident-underscore-error.stderr similarity index 100% rename from tests/ui/underscore-ident-matcher.stderr rename to tests/ui/macros/macro-fragment-ident-underscore-error.stderr diff --git a/tests/ui/type-namespace.rs b/tests/ui/namespace/struct-type-and-function-name-coexistence.rs similarity index 100% rename from tests/ui/type-namespace.rs rename to tests/ui/namespace/struct-type-and-function-name-coexistence.rs diff --git a/tests/ui/underscore-method-after-integer.rs b/tests/ui/parser/integer-literal-method-call-underscore.rs similarity index 100% rename from tests/ui/underscore-method-after-integer.rs rename to tests/ui/parser/integer-literal-method-call-underscore.rs diff --git a/tests/ui/type-use-i1-versus-i8.rs b/tests/ui/ptr_ops/ptr-write-bool-representation.rs similarity index 100% rename from tests/ui/type-use-i1-versus-i8.rs rename to tests/ui/ptr_ops/ptr-write-bool-representation.rs diff --git a/tests/ui/type-ptr.rs b/tests/ui/ptr_ops/raw-pointer-type-basic.rs similarity index 100% rename from tests/ui/type-ptr.rs rename to tests/ui/ptr_ops/raw-pointer-type-basic.rs diff --git a/tests/ui/try-operator-hygiene.rs b/tests/ui/try-trait/try-operator-expansion-hygiene.rs similarity index 100% rename from tests/ui/try-operator-hygiene.rs rename to tests/ui/try-trait/try-operator-expansion-hygiene.rs diff --git a/tests/ui/try-operator.rs b/tests/ui/try-trait/try-operator-various-contexts.rs similarity index 100% rename from tests/ui/try-operator.rs rename to tests/ui/try-trait/try-operator-various-contexts.rs diff --git a/tests/ui/unconstrained-ref.rs b/tests/ui/type-inference/type-inference-none-in-generic-ref.rs similarity index 100% rename from tests/ui/unconstrained-ref.rs rename to tests/ui/type-inference/type-inference-none-in-generic-ref.rs diff --git a/tests/ui/unconstrained-ref.stderr b/tests/ui/type-inference/type-inference-none-in-generic-ref.stderr similarity index 100% rename from tests/ui/unconstrained-ref.stderr rename to tests/ui/type-inference/type-inference-none-in-generic-ref.stderr diff --git a/tests/ui/unconstrained-none.rs b/tests/ui/type-inference/type-inference-unconstrained-none.rs similarity index 100% rename from tests/ui/unconstrained-none.rs rename to tests/ui/type-inference/type-inference-unconstrained-none.rs diff --git a/tests/ui/unconstrained-none.stderr b/tests/ui/type-inference/type-inference-unconstrained-none.stderr similarity index 100% rename from tests/ui/unconstrained-none.stderr rename to tests/ui/type-inference/type-inference-unconstrained-none.stderr diff --git a/tests/ui/tydesc-name.rs b/tests/ui/type/type-name-basic.rs similarity index 100% rename from tests/ui/tydesc-name.rs rename to tests/ui/type/type-name-basic.rs diff --git a/tests/ui/typeid-intrinsic.rs b/tests/ui/type/typeid-consistency-comprehensive.rs similarity index 100% rename from tests/ui/typeid-intrinsic.rs rename to tests/ui/type/typeid-consistency-comprehensive.rs diff --git a/tests/ui/underscore-lifetimes.rs b/tests/ui/underscore-lifetime/basic-underscore-lifetime-elision.rs similarity index 100% rename from tests/ui/underscore-lifetimes.rs rename to tests/ui/underscore-lifetime/basic-underscore-lifetime-elision.rs From 1fb5e0149fb85af0e49fa40329cbc352b4cba861 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Tue, 1 Jul 2025 23:33:59 +0500 Subject: [PATCH 003/152] moved tests --- .../weak-uninhabited-type.rs} | 0 .../underscore-prefixed-function-argument.rs} | 0 .../ownership-struct-update-moved-error.rs} | 0 .../ownership-struct-update-moved-error.stderr} | 0 .../no-capture-closure-call.rs} | 0 .../ui/{unknown-llvm-arg.rs => codegen/llvm-args-invalid-flag.rs} | 0 .../llvm-args-invalid-flag.stderr} | 0 .../box-drop-unused-value-statement-regression.rs} | 0 tests/ui/{weird-exprs.rs => expr/syntax-edge-cases-lint-clean.rs} | 0 .../hashset-enum-variant.rs} | 0 tests/ui/{write-fmt-errors.rs => io-checks/write-macro-error.rs} | 0 .../lang-item-unknown-definition-error.rs} | 0 .../lang-item-unknown-definition-error.stderr} | 0 .../module-qualified-paths-basic.rs} | 0 .../{use-nested-groups.rs => modules/module-use-nested-groups.rs} | 0 .../primitive-type-module-deprecated-paths.rs} | 0 .../use-keyword-reexport-type-alias.rs} | 0 .../unary-negation-unsigned-integer-error.rs} | 0 .../unary-negation-unsigned-integer-error.stderr} | 0 .../unwind-force-no-unwind-tables.rs} | 0 .../process-spawn-failure.rs} | 0 .../windows-exit-code-still-active.rs} | 0 .../diverging-expressions-unreachable-code.rs} | 0 .../unreachable-code-diverging-expressions.rs} | 0 .../virtual-call-parameter-handling.rs} | 0 tests/ui/{unit.rs => type/unit-type-basic-usages.rs} | 0 .../usize-no-generic-arguments.rs} | 0 .../usize-no-generic-arguments.stderr} | 0 .../maybe-uninit-zero-sized-types.rs} | 0 29 files changed, 0 insertions(+), 0 deletions(-) rename tests/ui/{weak-new-uninhabited-issue-48493.rs => allocator/weak-uninhabited-type.rs} (100%) rename tests/ui/{unnamed_argument_mode.rs => binding/underscore-prefixed-function-argument.rs} (100%) rename tests/ui/{walk-struct-literal-with.rs => borrowck/ownership-struct-update-moved-error.rs} (100%) rename tests/ui/{walk-struct-literal-with.stderr => borrowck/ownership-struct-update-moved-error.stderr} (100%) rename tests/ui/{unused-move-capture.rs => closures/no-capture-closure-call.rs} (100%) rename tests/ui/{unknown-llvm-arg.rs => codegen/llvm-args-invalid-flag.rs} (100%) rename tests/ui/{unknown-llvm-arg.stderr => codegen/llvm-args-invalid-flag.stderr} (100%) rename tests/ui/{unused-move.rs => drop/box-drop-unused-value-statement-regression.rs} (100%) rename tests/ui/{weird-exprs.rs => expr/syntax-edge-cases-lint-clean.rs} (100%) rename tests/ui/{wrong-hashset-issue-42918.rs => hashmap/hashset-enum-variant.rs} (100%) rename tests/ui/{write-fmt-errors.rs => io-checks/write-macro-error.rs} (100%) rename tests/ui/{unknown-language-item.rs => lang-items/lang-item-unknown-definition-error.rs} (100%) rename tests/ui/{unknown-language-item.stderr => lang-items/lang-item-unknown-definition-error.stderr} (100%) rename tests/ui/{use-import-export.rs => modules/module-qualified-paths-basic.rs} (100%) rename tests/ui/{use-nested-groups.rs => modules/module-use-nested-groups.rs} (100%) rename tests/ui/{use-module-level-int-consts.rs => modules/primitive-type-module-deprecated-paths.rs} (100%) rename tests/ui/{use-keyword-2.rs => modules/use-keyword-reexport-type-alias.rs} (100%) rename tests/ui/{unsigned-literal-negation.rs => numbers-arithmetic/unary-negation-unsigned-integer-error.rs} (100%) rename tests/ui/{unsigned-literal-negation.stderr => numbers-arithmetic/unary-negation-unsigned-integer-error.stderr} (100%) rename tests/ui/{unwind-no-uwtable.rs => panics/unwind-force-no-unwind-tables.rs} (100%) rename tests/ui/{wait-forked-but-failed-child.rs => process/process-spawn-failure.rs} (100%) rename tests/ui/{weird-exit-code.rs => process/windows-exit-code-still-active.rs} (100%) rename tests/ui/{unreachable-code-1.rs => reachable/diverging-expressions-unreachable-code.rs} (100%) rename tests/ui/{unreachable-code.rs => reachable/unreachable-code-diverging-expressions.rs} (100%) rename tests/ui/{virtual-call-attrs-issue-137646.rs => traits/virtual-call-parameter-handling.rs} (100%) rename tests/ui/{unit.rs => type/unit-type-basic-usages.rs} (100%) rename tests/ui/{usize-generic-argument-parent.rs => type/usize-no-generic-arguments.rs} (100%) rename tests/ui/{usize-generic-argument-parent.stderr => type/usize-no-generic-arguments.stderr} (100%) rename tests/ui/{uninit-empty-types.rs => unsafe/maybe-uninit-zero-sized-types.rs} (100%) diff --git a/tests/ui/weak-new-uninhabited-issue-48493.rs b/tests/ui/allocator/weak-uninhabited-type.rs similarity index 100% rename from tests/ui/weak-new-uninhabited-issue-48493.rs rename to tests/ui/allocator/weak-uninhabited-type.rs diff --git a/tests/ui/unnamed_argument_mode.rs b/tests/ui/binding/underscore-prefixed-function-argument.rs similarity index 100% rename from tests/ui/unnamed_argument_mode.rs rename to tests/ui/binding/underscore-prefixed-function-argument.rs diff --git a/tests/ui/walk-struct-literal-with.rs b/tests/ui/borrowck/ownership-struct-update-moved-error.rs similarity index 100% rename from tests/ui/walk-struct-literal-with.rs rename to tests/ui/borrowck/ownership-struct-update-moved-error.rs diff --git a/tests/ui/walk-struct-literal-with.stderr b/tests/ui/borrowck/ownership-struct-update-moved-error.stderr similarity index 100% rename from tests/ui/walk-struct-literal-with.stderr rename to tests/ui/borrowck/ownership-struct-update-moved-error.stderr diff --git a/tests/ui/unused-move-capture.rs b/tests/ui/closures/no-capture-closure-call.rs similarity index 100% rename from tests/ui/unused-move-capture.rs rename to tests/ui/closures/no-capture-closure-call.rs diff --git a/tests/ui/unknown-llvm-arg.rs b/tests/ui/codegen/llvm-args-invalid-flag.rs similarity index 100% rename from tests/ui/unknown-llvm-arg.rs rename to tests/ui/codegen/llvm-args-invalid-flag.rs diff --git a/tests/ui/unknown-llvm-arg.stderr b/tests/ui/codegen/llvm-args-invalid-flag.stderr similarity index 100% rename from tests/ui/unknown-llvm-arg.stderr rename to tests/ui/codegen/llvm-args-invalid-flag.stderr diff --git a/tests/ui/unused-move.rs b/tests/ui/drop/box-drop-unused-value-statement-regression.rs similarity index 100% rename from tests/ui/unused-move.rs rename to tests/ui/drop/box-drop-unused-value-statement-regression.rs diff --git a/tests/ui/weird-exprs.rs b/tests/ui/expr/syntax-edge-cases-lint-clean.rs similarity index 100% rename from tests/ui/weird-exprs.rs rename to tests/ui/expr/syntax-edge-cases-lint-clean.rs diff --git a/tests/ui/wrong-hashset-issue-42918.rs b/tests/ui/hashmap/hashset-enum-variant.rs similarity index 100% rename from tests/ui/wrong-hashset-issue-42918.rs rename to tests/ui/hashmap/hashset-enum-variant.rs diff --git a/tests/ui/write-fmt-errors.rs b/tests/ui/io-checks/write-macro-error.rs similarity index 100% rename from tests/ui/write-fmt-errors.rs rename to tests/ui/io-checks/write-macro-error.rs diff --git a/tests/ui/unknown-language-item.rs b/tests/ui/lang-items/lang-item-unknown-definition-error.rs similarity index 100% rename from tests/ui/unknown-language-item.rs rename to tests/ui/lang-items/lang-item-unknown-definition-error.rs diff --git a/tests/ui/unknown-language-item.stderr b/tests/ui/lang-items/lang-item-unknown-definition-error.stderr similarity index 100% rename from tests/ui/unknown-language-item.stderr rename to tests/ui/lang-items/lang-item-unknown-definition-error.stderr diff --git a/tests/ui/use-import-export.rs b/tests/ui/modules/module-qualified-paths-basic.rs similarity index 100% rename from tests/ui/use-import-export.rs rename to tests/ui/modules/module-qualified-paths-basic.rs diff --git a/tests/ui/use-nested-groups.rs b/tests/ui/modules/module-use-nested-groups.rs similarity index 100% rename from tests/ui/use-nested-groups.rs rename to tests/ui/modules/module-use-nested-groups.rs diff --git a/tests/ui/use-module-level-int-consts.rs b/tests/ui/modules/primitive-type-module-deprecated-paths.rs similarity index 100% rename from tests/ui/use-module-level-int-consts.rs rename to tests/ui/modules/primitive-type-module-deprecated-paths.rs diff --git a/tests/ui/use-keyword-2.rs b/tests/ui/modules/use-keyword-reexport-type-alias.rs similarity index 100% rename from tests/ui/use-keyword-2.rs rename to tests/ui/modules/use-keyword-reexport-type-alias.rs diff --git a/tests/ui/unsigned-literal-negation.rs b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs similarity index 100% rename from tests/ui/unsigned-literal-negation.rs rename to tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs diff --git a/tests/ui/unsigned-literal-negation.stderr b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr similarity index 100% rename from tests/ui/unsigned-literal-negation.stderr rename to tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr diff --git a/tests/ui/unwind-no-uwtable.rs b/tests/ui/panics/unwind-force-no-unwind-tables.rs similarity index 100% rename from tests/ui/unwind-no-uwtable.rs rename to tests/ui/panics/unwind-force-no-unwind-tables.rs diff --git a/tests/ui/wait-forked-but-failed-child.rs b/tests/ui/process/process-spawn-failure.rs similarity index 100% rename from tests/ui/wait-forked-but-failed-child.rs rename to tests/ui/process/process-spawn-failure.rs diff --git a/tests/ui/weird-exit-code.rs b/tests/ui/process/windows-exit-code-still-active.rs similarity index 100% rename from tests/ui/weird-exit-code.rs rename to tests/ui/process/windows-exit-code-still-active.rs diff --git a/tests/ui/unreachable-code-1.rs b/tests/ui/reachable/diverging-expressions-unreachable-code.rs similarity index 100% rename from tests/ui/unreachable-code-1.rs rename to tests/ui/reachable/diverging-expressions-unreachable-code.rs diff --git a/tests/ui/unreachable-code.rs b/tests/ui/reachable/unreachable-code-diverging-expressions.rs similarity index 100% rename from tests/ui/unreachable-code.rs rename to tests/ui/reachable/unreachable-code-diverging-expressions.rs diff --git a/tests/ui/virtual-call-attrs-issue-137646.rs b/tests/ui/traits/virtual-call-parameter-handling.rs similarity index 100% rename from tests/ui/virtual-call-attrs-issue-137646.rs rename to tests/ui/traits/virtual-call-parameter-handling.rs diff --git a/tests/ui/unit.rs b/tests/ui/type/unit-type-basic-usages.rs similarity index 100% rename from tests/ui/unit.rs rename to tests/ui/type/unit-type-basic-usages.rs diff --git a/tests/ui/usize-generic-argument-parent.rs b/tests/ui/type/usize-no-generic-arguments.rs similarity index 100% rename from tests/ui/usize-generic-argument-parent.rs rename to tests/ui/type/usize-no-generic-arguments.rs diff --git a/tests/ui/usize-generic-argument-parent.stderr b/tests/ui/type/usize-no-generic-arguments.stderr similarity index 100% rename from tests/ui/usize-generic-argument-parent.stderr rename to tests/ui/type/usize-no-generic-arguments.stderr diff --git a/tests/ui/uninit-empty-types.rs b/tests/ui/unsafe/maybe-uninit-zero-sized-types.rs similarity index 100% rename from tests/ui/uninit-empty-types.rs rename to tests/ui/unsafe/maybe-uninit-zero-sized-types.rs From e101e383d0580e642548a5e935a9ff844339159a Mon Sep 17 00:00:00 2001 From: Tsukasa OI Date: Sun, 29 Jun 2025 07:06:25 +0000 Subject: [PATCH 004/152] std_detect: Tidying of slice length We don't need to put the length of the `riscv_hwprobe` array into a variable. This commit removes that variable and gives the length of the output slice to the `__riscv_hwprobe` directly. --- library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs b/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs index 5506ff31fc79..e044d5f15412 100644 --- a/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs +++ b/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs @@ -124,8 +124,7 @@ fn _riscv_hwprobe(out: &mut [riscv_hwprobe]) -> bool { } } - let len = out.len(); - unsafe { __riscv_hwprobe(out.as_mut_ptr(), len, 0, ptr::null_mut(), 0) == 0 } + unsafe { __riscv_hwprobe(out.as_mut_ptr(), out.len(), 0, ptr::null_mut(), 0) == 0 } } /// Read list of supported features from (1) the auxiliary vector From 75cea03e0385b793a640f3f74237e3caf5060641 Mon Sep 17 00:00:00 2001 From: dianne Date: Sat, 28 Jun 2025 01:37:33 -0700 Subject: [PATCH 005/152] de-duplicate condition scoping logic --- compiler/rustc_ast_lowering/src/expr.rs | 45 ++----------------- .../rustc_hir_analysis/src/check/region.rs | 38 +++++++++++----- compiler/rustc_hir_typeck/src/lib.rs | 6 +-- 3 files changed, 33 insertions(+), 56 deletions(-) diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index c2140514e311..9942862a25d0 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -532,7 +532,7 @@ impl<'hir> LoweringContext<'_, 'hir> { then: &Block, else_opt: Option<&Expr>, ) -> hir::ExprKind<'hir> { - let lowered_cond = self.lower_cond(cond); + let lowered_cond = self.lower_expr(cond); let then_expr = self.lower_block_expr(then); if let Some(rslt) = else_opt { hir::ExprKind::If( @@ -545,44 +545,6 @@ impl<'hir> LoweringContext<'_, 'hir> { } } - // Lowers a condition (i.e. `cond` in `if cond` or `while cond`), wrapping it in a terminating scope - // so that temporaries created in the condition don't live beyond it. - fn lower_cond(&mut self, cond: &Expr) -> &'hir hir::Expr<'hir> { - fn has_let_expr(expr: &Expr) -> bool { - match &expr.kind { - ExprKind::Binary(_, lhs, rhs) => has_let_expr(lhs) || has_let_expr(rhs), - ExprKind::Let(..) => true, - _ => false, - } - } - - // We have to take special care for `let` exprs in the condition, e.g. in - // `if let pat = val` or `if foo && let pat = val`, as we _do_ want `val` to live beyond the - // condition in this case. - // - // In order to maintain the drop behavior for the non `let` parts of the condition, - // we still wrap them in terminating scopes, e.g. `if foo && let pat = val` essentially - // gets transformed into `if { let _t = foo; _t } && let pat = val` - match &cond.kind { - ExprKind::Binary(op @ Spanned { node: ast::BinOpKind::And, .. }, lhs, rhs) - if has_let_expr(cond) => - { - let op = self.lower_binop(*op); - let lhs = self.lower_cond(lhs); - let rhs = self.lower_cond(rhs); - - self.arena.alloc(self.expr(cond.span, hir::ExprKind::Binary(op, lhs, rhs))) - } - ExprKind::Let(..) => self.lower_expr(cond), - _ => { - let cond = self.lower_expr(cond); - let reason = DesugaringKind::CondTemporary; - let span_block = self.mark_span_with_reason(reason, cond.span, None); - self.expr_drop_temps(span_block, cond) - } - } - } - // We desugar: `'label: while $cond $body` into: // // ``` @@ -606,7 +568,7 @@ impl<'hir> LoweringContext<'_, 'hir> { body: &Block, opt_label: Option