rust/tests/codegen
2023-09-06 20:04:03 +00:00
..
auxiliary
avr
cffi
dllimports
enum
instrument-xray
intrinsics
issues Cherry-pick test for issue #114312 2023-08-15 11:33:45 +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
naked-fn
non-terminate
remap_path_prefix
repr
riscv-abi
sanitizer Preserve ___asan_globals_registered symbol during LTO. 2023-08-29 19:02:33 +00:00
simd
simd-intrinsic
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
abi-main-signature-32bit-c-int.rs
abi-repr-ext.rs
abi-sysv64.rs
abi-x86_64_sysv.rs
abi-x86-interrupt.rs
addr-of-mutate.rs
adjustments.rs
align-byval-vector.rs
align-byval.rs
align-enum.rs
align-fn.rs
align-offset.rs
align-struct.rs
alloc-optimisation.rs
array-clone.rs
array-codegen.rs
array-equality.rs
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
async-fn-debug-msvc.rs
async-fn-debug.rs
atomic-operations.rs
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
deduced-param-attrs.rs
default-requires-uwtable.rs
drop-in-place-noalias.rs
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
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
function-arguments.rs
gdb_debug_script_load.rs
generator-debug-msvc.rs
generator-debug.rs
generic-debug.rs
global_asm_include.rs
global_asm_x2.rs
global_asm.rs
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
link_section.rs
link-dead-code.rs
llvm-ident.rs
loads.rs
local-generics-in-exe-internalized.rs
lto-removes-invokes.rs
mainsubprogram.rs
mainsubprogramstart.rs
match-optimized.rs
match-optimizes-away.rs
match-unoptimized.rs
mem-replace-big-type.rs
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
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
packed.rs
panic-abort-windows.rs
panic-in-drop-abort.rs
panic-unwind-default-uwtable.rs
personality_lifetimes.rs
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
repeat-trusted-len.rs
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
slice-iter-fold.rs
slice-iter-len-eq-zero.rs
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
swap-large-types.rs
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
unwind-and-panic-abort.rs
unwind-extern-exports.rs
unwind-extern-imports.rs
used_with_arg.rs
var-names.rs
vec-as-ptr.rs
vec-calloc.rs
vec-in-place.rs
vec-iter-collect-len.rs
vec-optimizes-away.rs
vec-shrink-panik.rs
vecdeque_no_panic.rs
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