rust/tests/codegen
bors 13e6f24b9a Auto merge of #107421 - cjgillot:drop-tracking-mir, r=oli-obk
Enable -Zdrop-tracking-mir by default

This PR enables the `drop-tracking-mir` flag by default. This flag was initially implemented in https://github.com/rust-lang/rust/pull/101692.

This flag computes auto-traits on generators based on their analysis MIR, instead of trying to compute on the HIR body. This removes the need for HIR-based drop-tracking, as we can now reuse the same code to compute generator witness types and to compute generator interior fields.
2023-09-23 18:28:00 +00:00
..
auxiliary
avr CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
cffi tests/codegen/c-variadic* -> cffi/c-variadic* 2023-07-29 18:34:41 -07:00
dllimports
enum tests/codegen/enum-* -> enum/enum-* 2023-07-29 18:34:41 -07:00
instrument-xray
intrinsics Add a new compare_bytes intrinsic instead of calling memcmp directly 2023-08-06 15:47:40 -07:00
issues adjust how closure/generator types and rvalues are printed 2023-09-21 22:20:58 +02:00
lib-optimizations restrict test to x86-64 2023-09-02 13:42:58 +02:00
loongarch-abi tests: Fix tests for LoongArch64 2023-08-18 14:56:53 +08:00
macos tests/codegen/*-macos-* -> macos/* 2023-07-29 18:34:41 -07:00
naked-fn tests/codegen/naked-* -> naked-fn/naked-* 2023-07-29 18:34:41 -07:00
non-terminate
remap_path_prefix
repr add support for rustc_abi(assert_eq) and use it to test some repr(transparent) cases 2023-09-07 09:14:29 +02:00
riscv-abi CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
sanitizer Fix test on targets with crt-static default 2023-09-22 18:13:00 +02:00
simd tests/codegen/*simd*.rs -> simd/*simd* 2023-07-29 18:34:41 -07:00
simd-intrinsic cg_llvm: simplify llvm.masked.gather/scatter naming with opaque pointers 2023-07-29 16:56:27 -04:00
src-hash-algorithm
unwind-abis stabilize abi_thiscall 2023-08-07 14:11:03 +02:00
aarch64-struct-align-128.rs
abi-efiapi.rs
abi-main-signature-16bit-c-int.rs Replace ignore-everything with only-arch 2023-07-29 15:49:07 -07:00
abi-main-signature-32bit-c-int.rs Ignore an AVR-inapplicable test 2023-07-29 15:21:49 -07:00
abi-repr-ext.rs
abi-sysv64.rs
abi-x86_64_sysv.rs
abi-x86-interrupt.rs
addr-of-mutate.rs
adjustments.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
align-byval-vector.rs
align-byval.rs
align-enum.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
align-fn.rs
align-offset.rs
align-struct.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
alloc-optimisation.rs
array-clone.rs
array-codegen.rs
array-equality.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
array-map.rs
ascii-char.rs
asm-clobber_abi.rs
asm-clobbers.rs
asm-may_unwind.rs
asm-maybe-uninit.rs Allow MaybeUninit in input and output of inline assembly 2023-08-23 21:57:18 +09:00
asm-multiple-options.rs
asm-options.rs
asm-powerpc-clobbers.rs
asm-sanitize-llvm.rs
asm-target-clobbers.rs
async-fn-debug-awaitee-field.rs Make test more robust to opts. 2023-09-23 13:47:30 +00:00
async-fn-debug-msvc.rs
async-fn-debug.rs
atomic-operations.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
autovectorize-f32x4.rs
binary-search-index-no-bound-check.rs
bool-cmp.rs
box-uninit-bytes.rs add regression test for not memcpying padding bytes 2023-08-22 15:10:56 +02:00
bpf-alu32.rs
branch-protection.rs
call-llvm-intrinsics.rs
call-metadata.rs
catch-unwind.rs
cdylib-external-inline-fns.rs
cf-protection.rs
cfguard-checks.rs
cfguard-disabled.rs
cfguard-nochecks.rs
cfguard-non-msvc.rs
codemodels.rs
coercions.rs
cold-call-declare-and-call.rs Use preserve_mostcc for extern "rust-cold" 2023-08-26 17:42:59 -07:00
comparison-operators-2-tuple.rs
comparison-operators-newtype.rs
const_scalar_pair.rs
consts.rs
dealloc-no-unwind.rs
debug-alignment.rs
debug-column-msvc.rs
debug-column.rs
debug-compile-unit-path.rs
debug-limited.rs
debug-line-directives-only.rs
debug-line-tables-only.rs
debug-linkage-name.rs
debug-vtable.rs
debuginfo-constant-locals.rs
debuginfo-generic-closure-env-names.rs
debuginfo-inline-callsite-location.rs Deduplicate inlined function debug info, but create a new lexical scope to child subsequent scopes and variables from colliding 2023-09-01 14:27:21 -07:00
deduced-param-attrs.rs
default-requires-uwtable.rs
drop-in-place-noalias.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
drop.rs
dst-vtable-align-nonzero.rs
dst-vtable-size-range.rs
enable-lto-unit-splitting.rs
export-no-mangle.rs
external-no-mangle-fns.rs
external-no-mangle-statics.rs
fastcall-inreg.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
fatptr.rs
fewer-names.rs
float_math.rs
fn-impl-trait-self.rs
foo.s
force-frame-pointers.rs
force-no-unwind-tables.rs
force-unwind-tables.rs
frame-pointer.rs
function-arguments-noopt.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
function-arguments.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
gdb_debug_script_load.rs
generator-debug-msvc.rs
generator-debug.rs
generic-debug.rs
global_asm_include.rs Replace ignore-everything with only-arch 2023-07-29 15:49:07 -07:00
global_asm_x2.rs Replace ignore-everything with only-arch 2023-07-29 15:49:07 -07:00
global_asm.rs Replace ignore-everything with only-arch 2023-07-29 15:49:07 -07:00
inherit_overflow.rs
inline-always-works-always.rs
inline-debuginfo.rs
inline-function-args-debug-info.rs
inline-hint.rs
instrument-coverage.rs
instrument-mcount.rs
integer-cmp.rs
integer-overflow.rs
internalize-closures.rs
intrinsic-no-unnamed-attr.rs
iter-repeat-n-trivial-drop.rs
layout-size-checks.rs
lifetime_start_end.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
link_section.rs
link-dead-code.rs
llvm-ident.rs
loads.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
local-generics-in-exe-internalized.rs
lto-removes-invokes.rs
mainsubprogram.rs
mainsubprogramstart.rs
match-optimized.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
match-optimizes-away.rs
match-unoptimized.rs
mem-replace-big-type.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
mem-replace-simple-type.rs Stop emitting non-power-of-two vectors in basic LLVM codegen 2023-08-25 20:06:57 -07:00
merge-functions.rs
method-declaration.rs Add test for method debuginfo declaration. 2023-08-12 21:27:46 +08:00
mir_zst_stores.rs
mir-inlined-line-numbers.rs
move-before-nocapture-ref-arg.rs add codegen test for #107436 2023-08-26 18:14:47 +09:00
move-operands.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
no_builtins-at-crate.rs
no-assumes-on-casts.rs
no-dllimport-w-cross-lang-lto.rs
no-jump-tables.rs
no-plt.rs
noalias-box-off.rs
noalias-box.rs
noalias-flag.rs
noalias-refcell.rs
noalias-rwlockreadguard.rs
noalias-unpin.rs
noreturn-uninhabited.rs
noreturnflag.rs
nounwind.rs
nrvo.rs
optimize-attr-1.rs
option-as-slice.rs
option-nonzero-eq.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
packed.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
panic-abort-windows.rs
panic-in-drop-abort.rs
panic-unwind-default-uwtable.rs
personality_lifetimes.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
pgo-counter-bias.rs
pgo-instrumentation.rs
pic-relocation-model.rs
pie-relocation-model.rs
ptr-arithmetic.rs Tell LLVM that the negation in <*const T>::sub cannot overflow 2023-08-10 23:00:39 -07:00
ptr-read-metadata.rs
README.md
refs.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
repeat-trusted-len.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
scalar-pair-bool.rs
set-discriminant-invalid.rs
slice_as_from_ptr_range.rs
slice-as_chunks.rs update tests that are ignored by debug 2023-09-01 04:01:54 +08:00
slice-indexing.rs
slice-init.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
slice-iter-fold.rs
slice-iter-len-eq-zero.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
slice-iter-nonnull.rs update tests that are ignored by debug 2023-09-01 04:01:54 +08:00
slice-position-bounds-check.rs
slice-ref-equality.rs Bless codegen tests. 2023-08-17 18:28:33 +00:00
slice-reverse.rs
slice-windows-no-bounds-check.rs
some-abis-do-extend-params-to-32-bits.rs
some-global-nonnull.rs
sparc-struct-abi.rs
split-lto-unit.rs
sroa-fragment-debuginfo.rs Restrict test to x86_64. 2023-08-26 22:55:52 +00:00
sse42-implies-crc32.rs
stack-probes-call.rs
stack-probes-inline.rs
stack-protector.rs
static-relocation-model-msvc.rs
staticlib-external-inline-fns.rs
stores.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
swap-large-types.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
swap-small-types.rs Stop emitting non-power-of-two vectors in basic LLVM codegen 2023-08-25 20:06:57 -07:00
target-cpu-on-functions.rs
target-feature-inline-closure.rs
target-feature-overrides.rs
thread-local.rs
tied-features-strength.rs
to_vec.rs
trailing_zeros.rs add codegen test for issue 107554 2023-08-16 14:04:05 +09:00
transmute-optimized.rs
transmute-scalar.rs
try_identity.rs
try_question_mark_nop.rs
tune-cpu-on-functions.rs
tuple-layout-opt.rs Remove some wasm/emscripten ignores 2023-08-25 19:48:20 -04:00
unchecked_shifts.rs
unchecked-float-casts.rs
uninit-consts.rs
union-abi.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
unwind-and-panic-abort.rs
unwind-extern-exports.rs
unwind-extern-imports.rs
used_with_arg.rs
var-names.rs
vec-as-ptr.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
vec-calloc.rs
vec-in-place.rs
vec-iter-collect-len.rs
vec-optimizes-away.rs
vec-shrink-panik.rs
vecdeque_no_panic.rs
vecdeque-nonempty-get-no-panic.rs Add test to guard against VecDeque optimization regression 2023-09-21 20:42:21 -07:00
virtual-function-elimination-32bit.rs
virtual-function-elimination.rs
wasm_casts_trapping.rs
wasm_exceptions.rs
zip.rs
zst-offset.rs

The files here use the LLVM FileCheck framework, documented at https://llvm.org/docs/CommandGuide/FileCheck.html.

One extension worth noting is the use of revisions as custom prefixes for FileCheck. If your codegen test has different behavior based on the chosen target or different compiler flags that you want to exercise, you can use a revisions annotation, like so:

// revisions: aaa bbb
// [bbb] compile-flags: --flags-for-bbb

After specifying those variations, you can write different expected, or explicitly unexpected output by using <prefix>-SAME: and <prefix>-NOT:, like so:

// CHECK: expected code
// aaa-SAME: emitted-only-for-aaa
// aaa-NOT:                        emitted-only-for-bbb
// bbb-NOT:  emitted-only-for-aaa
// bbb-SAME:                       emitted-only-for-bbb