rust/tests/codegen
bors 9f48a85447 Auto merge of #115050 - khei4:khei4/codegen-move-before-nocapture, r=nikic
add codegen test for the move before passing to nocapture, by shared-ref arg

This PR adds codegen test for https://github.com/rust-lang/rust/issues/107436#issuecomment-1685792517 (It seems like this works from llvm-16?)

Fixes #107436
2023-08-28 15:30:28 +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 Cherry-pick test for issue #114312 2023-08-15 11:33:45 +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 Replace ignore-everything with only-arch 2023-07-29 15:49:07 -07:00
riscv-abi CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
sanitizer Fix CFI: f32 and f64 are encoded incorrectly for c 2023-08-24 21:02:06 -07: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 aarch64-linux: properly handle 128bit aligned aggregates 2023-07-10 19:19:40 -04:00
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 Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
adjustments.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
align-byval-vector.rs implement vector-containing aggregate alignment for x86 darwin 2023-07-10 19:19:36 -04:00
align-byval.rs i686-windows: make requested alignment > 4 special case apply transitively 2023-07-14 17:48:13 -04:00
align-enum.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
align-fn.rs
align-offset.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
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 Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
array-equality.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
array-map.rs update array-map test for removed alloca 2023-07-10 19:19:35 -04:00
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
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 Test from_fn autovectorizes 2023-05-30 20:45:40 -07:00
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 codegen: allow extra attributes to functions when panic=abort 2023-05-23 16:54:30 +02:00
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
comparison-operators-2-tuple.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
comparison-operators-newtype.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
const_scalar_pair.rs Explain the reason for why a test exists 2023-05-31 14:07:16 +00:00
consts.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
dealloc-no-unwind.rs
debug-alignment.rs
debug-column-msvc.rs
debug-column.rs codegen: allow extra attributes to functions when panic=abort 2023-05-23 16:54:30 +02:00
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
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 codegen: add needs-unwind to tests that require it 2023-05-23 16:54:35 +02:00
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 codegen: allow the dso_local attribute 2023-05-23 16:54:33 +02:00
fastcall-inreg.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
fatptr.rs
fewer-names.rs Always name the return place. 2023-07-08 15:38:40 +02:00
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 Get !nonnull metadata consistently in slice iterators, without needing assumes 2023-07-20 11:33:49 -07:00
layout-size-checks.rs
lifetime_start_end.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
link_section.rs codegen: allow the dso_local attribute 2023-05-23 16:54:33 +02:00
link-dead-code.rs
llvm-ident.rs Support .comment section like GCC/Clang (!llvm.ident) 2023-07-21 22:01:50 +02:00
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 codegen: allow extra attributes to functions when panic=abort 2023-05-23 16:54:30 +02:00
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 Add the no-builtins attribute to functions when no_builtins is applied at the crate level. 2023-07-18 22:15:47 +08:00
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 codegen: allow the dso_local attribute 2023-05-23 16:54:33 +02:00
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 Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
slice-as_chunks.rs
slice-indexing.rs
slice-init.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
slice-iter-fold.rs add codegen test for slice::Iter::fold 2023-06-12 23:47:08 +02:00
slice-iter-len-eq-zero.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
slice-iter-nonnull.rs Get !nonnull metadata consistently in slice iterators, without needing assumes 2023-07-20 11:33:49 -07: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 tests: be even more permissive on attributes in one test 2023-06-23 09:48:00 -04:00
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 Add codegen test ensuring always-inline closures don't bypass target features 2023-07-16 21:26:08 -04:00
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 Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
transmute-scalar.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
try_identity.rs
try_question_mark_nop.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
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 Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
unchecked-float-casts.rs
uninit-consts.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
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 codegen: add needs-unwind to tests that require it 2023-05-23 16:54:35 +02:00
unwind-extern-imports.rs codegen: add needs-unwind to tests that require it 2023-05-23 16:54:35 +02:00
used_with_arg.rs
var-names.rs Always name the return place. 2023-07-08 15:38:40 +02:00
vec-as-ptr.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
vec-calloc.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
vec-in-place.rs
vec-iter-collect-len.rs
vec-optimizes-away.rs
vec-shrink-panik.rs use indexed loop instead of ptr bumping 2023-06-14 22:22:41 +02:00
vecdeque_no_panic.rs
virtual-function-elimination-32bit.rs
virtual-function-elimination.rs
wasm_casts_trapping.rs
wasm_exceptions.rs add codegen-test: wasm-exceptions 2023-07-01 20:24:15 +02:00
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