Files
rust/tests/ui
bors 2d5a628a1d Auto merge of #128165 - saethlin:optimize-clone-shims, r=compiler-errors
Let InstCombine remove Clone shims inside Clone shims

The Clone shims that we generate tend to recurse into other Clone shims, which gets very silly very quickly. Here's our current state: https://godbolt.org/z/E69YeY8eq

So I've added InstSimplify to the shims optimization passes, and improved `is_trivially_pure_clone_copy` so that it can delete those calls inside the shim. This makes the shim way smaller because most of its size is the required ceremony for unwinding.

This change also completely breaks the UI test added for https://github.com/rust-lang/rust/issues/104870. With this PR, that program ICEs in MIR type checking because `is_trivially_pure_clone_copy` and the trait solver disagree on whether `*mut u8` is `Copy`. And adding the requisite `Copy` impl to make them agree makes the test not generate any diagnostics. Considering that I spent most of my time on this PR fixing `#![no_core]` tests, I would prefer to just delete this one. The maintenance burden of `#![no_core]` is uniquely high because when they break they tend to break in very confusing ways.

try-job: x86_64-mingw
2024-07-26 13:13:04 +00:00
..
2024-07-12 11:52:04 -04:00
2024-05-02 19:42:31 -04:00
2024-07-18 00:00:04 +00:00
2024-07-14 13:50:09 +09:00
2024-07-18 14:32:10 +02:00
2024-07-19 23:27:42 +03:00
2024-04-21 15:43:43 -03:00
2024-07-06 14:24:20 +02:00
2024-07-02 02:30:38 +01:00
2024-04-12 20:57:07 +00:00
2024-07-24 21:03:27 +00:00
2024-06-01 09:40:46 +08:00
2024-06-21 19:00:18 -04:00
2024-07-24 21:03:27 +00:00
2024-07-12 03:22:32 +00:00
2024-04-29 14:53:38 +02:00
2024-05-20 11:13:10 -04:00
2024-07-21 21:42:10 +08:00
2024-04-07 17:38:07 -03:00
2024-05-28 12:31:12 +02:00
2024-07-24 08:46:52 +02:00
2024-04-11 17:53:27 -04:00
2024-07-24 21:03:27 +00:00
2024-07-22 22:51:53 +00:00
2024-07-24 21:03:27 +00:00
2024-05-21 20:16:39 +00:00
2024-06-25 18:06:22 +02:00

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and intepret a test.

As part of an on-going effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as an legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.