| #!/usr/bin/env bash | |
| set -e | |
| cd $(dirname "$0")/../ | |
| source ./scripts/setup_rust_fork.sh | |
| echo "[TEST] Test suite of rustc" | |
| pushd rust | |
| command -v rg >/dev/null 2>&1 || cargo install ripgrep | |
| # should-fail tests don't work when compiletest is compiled with panic=abort | |
| for test in $(rg --files-with-matches "//@ should-fail" tests/{codegen-units,ui,incremental}); do | |
| rm $test | |
| done | |
| for test in $(rg -i --files-with-matches "//(\[\w+\])?~[^\|]*\s*ERR|//@ error-pattern:|//@(\[.*\])? build-fail|//@(\[.*\])? run-fail|-Cllvm-args" tests/ui); do | |
| rm $test | |
| done | |
| git checkout -- tests/ui/cross-crate/auxiliary/nested-struct-in-polymorphic-impl-method.rs # contains //~ERROR, but shouldn't be removed | |
| git checkout -- tests/ui/entry-point/auxiliary/bad_main_functions.rs | |
| # missing features | |
| # ================ | |
| # vendor intrinsics | |
| rm tests/ui/simd/dont-invalid-bitcast-x86_64.rs # unimplemented llvm.x86.sse41.round.ps | |
| rm tests/ui/simd/intrinsic/generic-arithmetic-pass.rs # unimplemented simd_funnel_{shl,shr} | |
| rm -r tests/ui/scalable-vectors # scalable vectors are unsupported | |
| # exotic linkages | |
| rm tests/incremental/hashes/function_interfaces.rs | |
| rm tests/incremental/hashes/statics.rs | |
| rm -r tests/run-make/naked-symbol-visibility | |
| rm tests/ui/linkage-attr/linkage-attr-does-not-panic-llvm-issue-33992.rs | |
| # variadic arguments | |
| rm tests/ui/abi/mir/mir_codegen_calls_variadic.rs # requires float varargs | |
| rm tests/ui/c-variadic/naked.rs # same | |
| rm tests/ui/consts/const-eval/c-variadic.rs # same | |
| rm tests/ui/abi/variadic-ffi.rs # requires callee side vararg support | |
| rm -r tests/run-make/c-link-to-rust-va-list-fn # requires callee side vararg support | |
| rm tests/ui/c-variadic/valid.rs # same | |
| rm tests/ui/c-variadic/trait-method.rs # same | |
| rm tests/ui/c-variadic/inherent-method.rs # same | |
| rm tests/ui/c-variadic/copy.rs # same | |
| rm tests/ui/sanitizer/kcfi-c-variadic.rs # same | |
| rm tests/ui/c-variadic/same-program-multiple-abis-x86_64.rs # variadics for calling conventions other than C unsupported | |
| rm tests/ui/delegation/fn-header.rs | |
| rm tests/ui/c-variadic/roundtrip.rs | |
| # inline assembly features | |
| rm tests/ui/asm/global-asm-mono-sym-fn.rs # same | |
| rm tests/ui/asm/naked-functions/mono-sym-fn.rs # same | |
| rm tests/ui/asm/x86_64/goto.rs # inline asm labels not supported | |
| rm tests/ui/asm/label-operand.rs # same | |
| rm tests/ui/asm/may_unwind.rs # asm unwinding not supported | |
| rm tests/ui/asm/aarch64/may_unwind.rs # same | |
| rm tests/ui/asm/x86_64/may_unwind.rs # same | |
| # misc unimplemented things | |
| rm tests/ui/target-feature/missing-plusminus.rs # error not implemented | |
| rm -r tests/run-make/repr128-dwarf # debuginfo test | |
| rm -r tests/run-make/split-debuginfo # same | |
| rm -r tests/run-make/target-specs # i686 not supported by Cranelift | |
| rm -r tests/run-make/mismatching-target-triples # same | |
| rm tests/ui/simd/simd-bitmask-notpow2.rs # non-pow-of-2 simd vector sizes | |
| rm tests/ui/attributes/fn-align-dyn.rs # per-function alignment not supported | |
| rm -r tests/ui/explicit-tail-calls # tail calls | |
| rm -r tests/run-make/pointer-auth-link-with-c # pointer auth | |
| rm -r tests/ui/eii # EII not yet implemented | |
| rm -r tests/run-make/forced-unwind-terminate-pof # forced unwinding doesn't take precedence | |
| # requires LTO | |
| rm -r tests/ui/lto | |
| for test in $(rg --files-with-matches "lto" tests/{codegen-units,ui,incremental}); do | |
| rm $test | |
| done | |
| rm -r tests/run-make/cdylib | |
| rm -r tests/run-make/codegen-options-parsing | |
| rm -r tests/run-make/lto-* | |
| rm -r tests/run-make/reproducible-build-2 | |
| rm -r tests/run-make/no-builtins-lto | |
| rm -r tests/run-make/reachable-extern-fn-available-lto | |
| rm -r tests/run-make/no-builtins-linker-plugin-lto | |
| rm -r tests/run-make/fat-then-thin-lto | |
| rm -r tests/run-make/cross-lang-lto-upstream-rlibs | |
| rm -r tests/run-make/fat-lto-module-summary | |
| # coverage instrumentation | |
| rm tests/ui/consts/precise-drop-with-coverage.rs | |
| rm -r tests/ui/instrument-coverage/ | |
| # optimization tests | |
| # ================== | |
| rm tests/ui/codegen/issue-28950.rs # depends on stack size optimizations | |
| rm tests/ui/codegen/init-large-type.rs # same | |
| rm tests/ui/codegen/StackColoring-not-blowup-stack-issue-40883.rs # same | |
| rm tests/ui/statics/const_generics.rs # tests an optimization | |
| rm tests/ui/linking/executable-no-mangle-strip.rs # requires --gc-sections to work for statics | |
| # backend specific tests | |
| # ====================== | |
| rm -r tests/run-make/cross-lang-lto # requires LLVM | |
| rm -r tests/run-make/volatile-intrinsics # same | |
| rm -r tests/run-make/llvm-ident # same | |
| rm -r tests/run-make/no-builtins-attribute # same | |
| rm -r tests/run-make/pgo-gen-no-imp-symbols # same | |
| rm -r tests/run-make/llvm-location-discriminator-limit-dummy-span # same | |
| rm tests/ui/abi/stack-protector.rs # requires stack protector support | |
| rm -r tests/run-make/emit-stack-sizes # requires support for -Z emit-stack-sizes | |
| rm -r tests/run-make/optimization-remarks-dir # remarks are LLVM specific | |
| rm tests/ui/codegen/remark-flag-functionality.rs # same | |
| rm -r tests/run-make/print-to-output # requires --print relocation-models | |
| rm tests/ui/abi/rust-preserve-none-cc.rs # extern "rust-preserve-none" is LLVM specific | |
| rm tests/ui/abi/rust-tail-cc.rs # extern "rust-tail" is LLVM specific | |
| rm tests/ui/target-feature/missing-plusminus-llvm.rs # error implemented in cg_llvm | |
| # requires asm, llvm-ir and/or llvm-bc emit support | |
| # ============================================= | |
| rm -r tests/run-make/emit-named-files | |
| rm -r tests/run-make/multiple-emits | |
| rm -r tests/run-make/output-type-permutations | |
| rm -r tests/run-make/emit-to-stdout | |
| rm -r tests/run-make/compressed-debuginfo | |
| rm -r tests/run-make/symbols-include-type-name | |
| rm -r tests/run-make/notify-all-emit-artifacts | |
| rm -r tests/run-make/reset-codegen-1 | |
| rm -r tests/run-make/inline-always-many-cgu | |
| rm -r tests/run-make/intrinsic-unreachable | |
| rm -r tests/run-make/artifact-incr-cache | |
| rm -r tests/run-make/artifact-incr-cache-no-obj | |
| rm -r tests/run-make/emit | |
| rm -r tests/run-make/llvm-outputs | |
| rm -r tests/run-make/panic-impl-transitive | |
| rm tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs | |
| rm tests/ui/statics/issue-91050-1.rs | |
| rm tests/ui/statics/issue-91050-2.rs | |
| # giving different but possibly correct results | |
| # ============================================= | |
| rm tests/ui/mir/mir_raw_fat_ptr.rs # same | |
| rm tests/ui/consts/const-mut-refs-crate.rs # same | |
| rm tests/ui/abi/large-byval-align.rs # exceeds implementation limit of Cranelift | |
| rm -r tests/run-make/short-ice # ICE backtrace begin/end marker mismatch | |
| rm tests/ui/codegen/huge-stacks.rs # Cranelift doesn't allow stack frames to exceed 4GB | |
| rm -r tests/run-make/rustdoc/doctest/test_harness # different thread names likely caused by -Zpanic-abort-tests | |
| rm -r tests/run-make/requires-consistent-cpu-no-native # no -Ctarget-cpu=help support | |
| # doesn't work due to the way the rustc test suite is invoked. | |
| # should work when using ./x.py test the way it is intended | |
| # ============================================================ | |
| rm -r tests/run-make/remap-path-prefix-dwarf # requires llvm-dwarfdump | |
| rm -r tests/run-make/strip # same | |
| rm -r tests/run-make-cargo/compiler-builtins # Expects lib/rustlib/src/rust to contains the standard library source | |
| rm -r tests/run-make-cargo/panic-immediate-abort-works # same | |
| rm -r tests/run-make-cargo/panic-immediate-abort-codegen # same | |
| rm -r tests/run-make/missing-unstable-trait-bound # This disables support for unstable features, but running cg_clif needs some unstable features | |
| rm -r tests/run-make/const-trait-stable-toolchain # same | |
| rm -r tests/run-make/print-request-help-stable-unstable # same | |
| rm -r tests/run-make/issue-149402-suggest-unresolve # same | |
| rm -r tests/run-make/const-destruct-stable-toolchain # same | |
| rm -r tests/run-make/incr-add-rust-src-component | |
| rm tests/ui/errors/remap-path-prefix-sysroot.rs # different sysroot source path | |
| rm -r tests/run-make/export # something about rustc version mismatches | |
| rm tests/ui/compiletest-self-test/compile-flags-incremental.rs # needs compiletest compiled with panic=unwind | |
| rm tests/ui/extern/extern-types-field-offset.rs # expects /rustc/<hash> rather than /rustc/FAKE_PREFIX | |
| rm tests/ui/process/println-with-broken-pipe.rs # same | |
| # genuine bugs | |
| # ============ | |
| rm -r tests/run-make/extern-fn-explicit-align # argument alignment not yet supported | |
| rm -r tests/run-make/panic-abort-eh_frame # .eh_frame emitted with panic=abort | |
| rm -r tests/run-make/used-proc-macro # doesn't work on arm64 for some reason | |
| # bugs in the test suite | |
| # ====================== | |
| rm tests/ui/process/nofile-limit.rs # FIXME some AArch64 linking issue | |
| rm -r tests/ui/codegen/equal-pointers-unequal # make incorrect assumptions about the location of stack variables | |
| rm tests/incremental/extern_static/issue-49153.rs # assumes reference to undefined static gets optimized away | |
| rm tests/ui/linkage-attr/raw-dylib/elf/glibc-x86_64.rs # implicitly depends on libcore getting optimized away to avoid symbol refs | |
| rm tests/ui/thread-local/thread-local-issue-37508.rs # incorrect rust_eh_personality signature | |
| rm -r tests/run-make/staticlib-hide-internal-symbols # missing needs-unwind | |
| rm -r tests/run-make/staticlib-rename-internal-symbols # needs files from staticlib-hide-internal-symbols | |
| rm tests/ui/intrinsics/panic-uninitialized-zeroed.rs # really slow with unoptimized libstd | |
| rm tests/ui/process/process-panic-after-fork.rs # same | |
| cp ../dist/bin/rustdoc-clif ../dist/bin/rustdoc # some tests expect bin/rustdoc to exist | |
| cat <<EOF | git apply - | |
| diff --git a/src/tools/compiletest/src/runtest/run_make.rs b/src/tools/compiletest/src/runtest/run_make.rs | |
| index 073116933bd..c3e4578204d 100644 | |
| --- a/src/tools/compiletest/src/runtest/run_make.rs | |
| +++ b/src/tools/compiletest/src/runtest/run_make.rs | |
| @@ -109,7 +109,6 @@ pub(super) fn run_rmake_test(&self) { | |
| // library or compiler features. Here, we force the stage 0 rustc to consider itself as | |
| // a stable-channel compiler via \`RUSTC_BOOTSTRAP=-1\` to prevent *any* unstable | |
| // library/compiler usages, even if stage 0 rustc is *actually* a nightly rustc. | |
| - .env("RUSTC_BOOTSTRAP", "-1") | |
| .arg("-o") | |
| .arg(&recipe_bin) | |
| // Specify library search paths for \`run_make_support\`. | |
| EOF | |
| echo "[TEST] rustc test suite" | |
| ./x.py test --stage 0 --no-capture --verbose-run-make-subprocess-output=false tests/{codegen-units,run-make,run-make-cargo,ui,incremental} | |
| popd |