rust/tests/codegen
bors 97fff1f2ed Auto merge of #114790 - taiki-e:asm-maybe-uninit, r=Amanieu
Allow MaybeUninit in input and output of inline assembly

**Motivation:**

As part of the work to remove UBs from crossbeam's AtomicCell, I'm writing a library to implement atomic operations on MaybeUnint using inline assembly ([atomic-maybe-uninit](https://github.com/taiki-e/atomic-maybe-uninit), https://github.com/crossbeam-rs/crossbeam/pull/1015).

However, currently, MaybeUnint cannot be used in input&output of inline assembly, so when processing MaybeUninit, values must be [passed through memory](https://github.com/taiki-e/atomic-maybe-uninit/blob/main/src/arch/aarch64.rs#L121-L122). It is inefficient and microbenchmarks have [actually shown significant performance degradation](https://github.com/crossbeam-rs/crossbeam/pull/1015#issuecomment-1676549870).

It would be nice if we could allow MaybeUninit in input and output of inline assembly.

---

This PR changed the type check in rustc_hir_analysis to allow `MaybeUnint<int | float | ptr | fn ptr | simd vector>` in input and output of inline assembly and added a simple test.

To be honest, I'm not sure that this is the correct way to do it, because this is like doing transmute to integers/floats/etc from MaybeUninit on the compiler side. EDIT: [this seems fine](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!/near/384662900)

r? `@Amanieu`
cc `@thomcc` (because you [had previously proposed this](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!))
2023-08-23 13:40:41 +00:00
..
auxiliary Also move the auxiliary file 2023-03-20 10:25:29 +00:00
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 Add more codegen tests 2023-01-17 16:23:22 +01:00
enum tests/codegen/enum-* -> enum/enum-* 2023-07-29 18:34:41 -07:00
instrument-xray Test XRay only for supported targets 2023-02-09 12:29:43 +09:00
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: Add tests for LoongArch64 2023-04-30 00:06:26 +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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
remap_path_prefix Give the cross-crate generic some work to do 2023-04-07 15:46:45 -04:00
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 sanitizer tests depending on filename 2023-07-29 18:09:48 -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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Stabilize abi_efiapi feature 2023-01-11 20:42:13 -05:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
abi-sysv64.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
abi-x86_64_sysv.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
abi-x86-interrupt.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
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 Allow all associated functions and add test 2023-04-16 06:31:08 +00:00
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 Prevent insta-stable no alloc shim support 2023-05-11 14:35:09 +00:00
array-clone.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Add the basic ascii::Char type 2023-05-03 22:09:33 -07:00
asm-clobber_abi.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-clobbers.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-may_unwind.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-options.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-powerpc-clobbers.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-sanitize-llvm.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
asm-target-clobbers.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
async-fn-debug-awaitee-field.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
async-fn-debug-msvc.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
async-fn-debug.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Stop checking for the absense of something that doesn't exist 2023-05-12 21:59:26 -07:00
bool-cmp.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
box-uninit-bytes.rs add regression test for not memcpying padding bytes 2023-08-22 15:10:56 +02:00
bpf-alu32.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
branch-protection.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
call-llvm-intrinsics.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
call-metadata.rs codegen: allow extra attributes to functions when panic=abort 2023-05-23 16:54:30 +02:00
catch-unwind.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
cdylib-external-inline-fns.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cf-protection.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cfguard-checks.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cfguard-disabled.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cfguard-nochecks.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cfguard-non-msvc.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
codemodels.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coercions.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cold-call-declare-and-call.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
debug-alignment.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
debug-column-msvc.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
debug-limited.rs More in-depth documentation for the new debuginfo options 2023-03-31 07:28:39 -04:00
debug-line-directives-only.rs More in-depth documentation for the new debuginfo options 2023-03-31 07:28:39 -04:00
debug-line-tables-only.rs More in-depth documentation for the new debuginfo options 2023-03-31 07:28:39 -04:00
debug-linkage-name.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
debug-vtable.rs Fix test 2023-05-11 14:35:10 +00:00
debuginfo-constant-locals.rs Turn on ConstDebugInfo pass. 2023-04-22 23:41:48 +02:00
debuginfo-generic-closure-env-names.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
debuginfo-inline-callsite-location.rs Use the same DISubprogram for each instance of the same inlined function within the caller 2023-08-11 10:21:52 -07:00
deduced-param-attrs.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
default-requires-uwtable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
dst-vtable-size-range.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
enable-lto-unit-splitting.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
export-no-mangle.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
external-no-mangle-fns.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
fewer-names.rs Always name the return place. 2023-07-08 15:38:40 +02:00
float_math.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
fn-impl-trait-self.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
foo.s Move /src/test to /tests 2023-01-11 09:32:08 +00:00
force-frame-pointers.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
force-no-unwind-tables.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
force-unwind-tables.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
frame-pointer.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-debug-msvc.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-debug.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generic-debug.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 inherit_overflow: adapt pattern to also work with v0 mangling 2023-03-15 14:22:26 -04:00
inline-always-works-always.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
inline-debuginfo.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
inline-function-args-debug-info.rs Preserve argument indexes when inlining MIR 2023-04-11 11:07:48 +10:00
inline-hint.rs Permit MIR inlining without #[inline] 2023-04-07 15:46:43 -04:00
instrument-coverage.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
instrument-mcount.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
integer-cmp.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
integer-overflow.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
internalize-closures.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
intrinsic-no-unnamed-attr.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Permit MIR inlining without #[inline] 2023-04-07 15:46:43 -04:00
lto-removes-invokes.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
mainsubprogram.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
mainsubprogramstart.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
match-optimized.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
match-optimizes-away.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
match-unoptimized.rs Change src/test to tests in source files, fix tidy and tests 2023-01-11 09:32:13 +00:00
mem-replace-big-type.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
mem-replace-simple-type.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
merge-functions.rs Update the minimum external LLVM to 14 2023-02-10 16:06:25 -08:00
method-declaration.rs Add test for method debuginfo declaration. 2023-08-12 21:27:46 +08:00
mir_zst_stores.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
mir-inlined-line-numbers.rs codegen: allow extra attributes to functions when panic=abort 2023-05-23 16:54:30 +02: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
no-dllimport-w-cross-lang-lto.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
no-jump-tables.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
no-plt.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noalias-box-off.rs make noalias-box-off filecheck more precise 2023-05-20 19:41:28 -04:00
noalias-box.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noalias-flag.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noalias-refcell.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noalias-rwlockreadguard.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noalias-unpin.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noreturn-uninhabited.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
noreturnflag.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nounwind.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nrvo.rs Disable nrvo mir opt 2023-05-08 03:55:41 -07:00
optimize-attr-1.rs typos 2023-04-17 09:16:07 +02:00
option-as-slice.rs ci: add a runner for vanilla LLVM 16 2023-04-16 11:50:20 -07:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-in-drop-abort.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-unwind-default-uwtable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
personality_lifetimes.rs CHECK only for opaque ptr 2023-07-27 14:44:13 -07:00
pgo-counter-bias.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pgo-instrumentation.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pic-relocation-model.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
pie-relocation-model.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
set-discriminant-invalid.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
slice-indexing.rs Use nuw when calculating slice lengths from Ranges 2023-03-05 15:15:22 -08:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
slice-ref-equality.rs Bless codegen tests. 2023-08-17 18:28:33 +00:00
slice-reverse.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
slice-windows-no-bounds-check.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
some-abis-do-extend-params-to-32-bits.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
some-global-nonnull.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
sparc-struct-abi.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
split-lto-unit.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sse42-implies-crc32.rs Update the minimum external LLVM to 14 2023-02-10 16:06:25 -08:00
stack-probes-call.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
stack-probes-inline.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Add more codegen tests 2023-01-17 16:23:22 +01:00
staticlib-external-inline-fns.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Use load-store instead of memcpy for short integer arrays 2023-06-04 00:51:49 -07:00
target-cpu-on-functions.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Change src/test to tests in source files, fix tidy and tests 2023-01-11 09:32:13 +00:00
thread-local.rs tests: adapt for LLVM change 5b386b864c7619897c51a1da97d78f1cf6f3eff6 2023-04-17 10:53:18 -04:00
tied-features-strength.rs Create a structure to define the features from to_llvm_features. 2023-05-22 14:46:40 +01:00
to_vec.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
tuple-layout-opt.rs codegen: allow the dso_local attribute 2023-05-23 16:54:33 +02:00
unchecked_shifts.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
unchecked-float-casts.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 llvm 16 finally reconizes some additional vec in-place conversions as noops 2023-04-03 15:29:46 +02:00
vec-iter-collect-len.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
vec-optimizes-away.rs Prevent insta-stable no alloc shim support 2023-05-11 14:35:09 +00:00
vec-shrink-panik.rs use indexed loop instead of ptr bumping 2023-06-14 22:22:41 +02:00
vecdeque_no_panic.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
virtual-function-elimination-32bit.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
virtual-function-elimination.rs Fix a codegen test with some hard-coded hashes 2023-04-05 15:59:29 +00:00
wasm_casts_trapping.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
wasm_exceptions.rs add codegen-test: wasm-exceptions 2023-07-01 20:24:15 +02:00
zip.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
zst-offset.rs Add more codegen tests 2023-01-17 16:23:22 +01:00

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