rust/tests/codegen
bors c6727fc9b5 Auto merge of #123351 - beetrees:x86-ret-snan-rust, r=nikic,workingjubilee
Ensure floats are returned losslessly by the Rust ABI on 32-bit x86

Solves #115567 for the (default) `"Rust"` ABI. When compiling for 32-bit x86, this PR changes the `"Rust"` ABI to return floats indirectly instead of in x87 registers (with the exception of single `f32`s, which this PR returns in general purpose registers as they are small enough to fit in one). No change is made to the `"C"` ABI as that ABI requires x87 register usage and therefore will need a different solution.
2024-07-12 20:36:43 +00:00
..
auxiliary Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
avr Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
cffi Use the aligned size for alloca at args when the pass mode is cast. 2024-07-02 06:33:35 +08:00
cross-crate-inlining
debug-accessibility
dllimports Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
enum Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
float Adjust tests for x86 "Rust" ABI changes 2024-07-12 10:47:56 +01:00
instrument-coverage Use -Zno-profiler-runtime instead of //@ needs-profiler-support 2024-06-14 13:31:46 +10:00
instrument-xray
intrinsics Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
issues Auto merge of #123351 - beetrees:x86-ret-snan-rust, r=nikic,workingjubilee 2024-07-12 20:36:43 +00:00
lib-optimizations Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
loongarch-abi Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
macos Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
meta-filecheck
naked-fn Use -Zno-profiler-runtime instead of //@ needs-profiler-support 2024-06-14 13:31:46 +10:00
non-terminate Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
patchable-function-entry Updated code for changes to RFC, added additional error handling, added 2024-06-25 19:00:02 +02:00
remap_path_prefix
repr Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
riscv-abi Fix non-x86 tests 2024-06-19 13:54:56 +01:00
sanitizer Require any function with a tait in its signature to actually constrain a hidden type 2024-06-12 08:53:59 +00:00
simd simd packed types: update outdated check, extend codegen test 2024-06-08 21:38:32 +02:00
simd-intrinsic
src-hash-algorithm
unwind-abis Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
aarch64-struct-align-128.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-efiapi.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-main-signature-16bit-c-int.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-main-signature-32bit-c-int.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-repr-ext.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-sysv64.rs
abi-x86_64_sysv.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
abi-x86-interrupt.rs
addr-of-mutate.rs
adjustments.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
align-byval-alignment-mismatch.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
align-byval-vector.rs
align-byval.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
align-enum.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
align-fn.rs
align-offset.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
align-struct.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
alloc-optimisation.rs
array-clone.rs
array-cmp.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
array-codegen.rs
array-equality.rs
array-map.rs
array-optimized.rs
array-repeat.rs update codegen test for array::repeat 2024-06-19 17:48:05 +02:00
ascii-char.rs
asm-clobber_abi.rs
asm-clobbers.rs
asm-goto.rs
asm-may_unwind.rs
asm-maybe-uninit.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
asm-multiple-options.rs
asm-options.rs
asm-powerpc-clobbers.rs
asm-sanitize-llvm.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
asm-target-clobbers.rs
async-closure-debug.rs
async-fn-debug-awaitee-field.rs
async-fn-debug-msvc.rs
async-fn-debug.rs
atomic-operations.rs
atomicptr.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
autovectorize-f32x4.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
binary-search-index-no-bound-check.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
bool-cmp.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
box-uninit-bytes.rs
bpf-alu32.rs
branch-protection.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
call-llvm-intrinsics.rs
call-metadata.rs
cast-target-abi.rs Use the aligned size for alloca at ret when the pass mode is cast. 2024-07-02 06:33:40 +08:00
catch-unwind.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
cdylib-external-inline-fns.rs
cf-protection.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
cfguard-checks.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
cfguard-disabled.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
cfguard-nochecks.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
cfguard-non-msvc.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
char-ascii-branchless.rs
checked_ilog.rs
checked_math.rs Also get add nuw from uN::checked_add 2024-06-23 13:29:06 -07:00
codemodels.rs
coercions.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
cold-call-declare-and-call.rs
common_prim_int_ptr.rs
comparison-operators-2-tuple.rs
comparison-operators-newtype.rs
const_scalar_pair.rs
constant-branch.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
consts.rs Use FileCheck to parameterize codegen tests over hashes 2024-06-04 01:30:51 -07:00
coroutine-debug-msvc.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
coroutine-debug.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
dealloc-no-unwind.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
debug-alignment.rs
debug-column-msvc.rs
debug-column.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
debug-compile-unit-path.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
debug-fndef-size.rs Adjust dbg.value/dbg.declare checks for LLVM update 2024-05-06 23:15:48 +00:00
debug-limited.rs
debug-line-directives-only.rs
debug-line-tables-only.rs
debug-linkage-name.rs
debug-vtable.rs
debuginfo-constant-locals.rs Adjust dbg.value/dbg.declare checks for LLVM update 2024-05-06 23:15:48 +00:00
debuginfo-generic-closure-env-names.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
debuginfo-inline-callsite-location.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
deduced-param-attrs.rs
default-hidden-visibility.rs
default-requires-uwtable.rs
direct-access-external-data.rs
dont_codegen_private_const_fn_only_used_in_const_eval.rs Also support generic constants 2024-06-05 15:40:11 +00:00
drop-in-place-noalias.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
drop.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
dst-offset.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
dst-vtable-align-nonzero.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
dst-vtable-size-range.rs
ehcontguard_disabled.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
ehcontguard_enabled.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
emcripten-catch-unwind.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
enable-lto-unit-splitting.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
error-provide.rs Apply suggestion. 2024-06-16 17:19:25 +08:00
export-no-mangle.rs
external-no-mangle-fns.rs
external-no-mangle-statics.rs
fastcall-inreg.rs
fatptr.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
fewer-names.rs
fixed-x18.rs Add -Zfixed-x18 2024-05-03 14:32:08 +02:00
float_math.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
fn-impl-trait-self.rs
foo.s
force-frame-pointers.rs test: ignore force-frame-pointers test on some targets 2024-06-23 00:40:43 -07:00
force-no-unwind-tables.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
force-unwind-tables.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
frame-pointer.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
function-arguments-noopt.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
function-arguments.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
function-return.rs
gdb_debug_script_load.rs Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
generic-debug.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
global_asm_include.rs
global_asm_x2.rs
global_asm.rs
i128-x86-align.rs
infallible-unwrap-in-opt-z.rs
inherit_overflow.rs
inline-always-works-always.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
inline-debuginfo.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
inline-function-args-debug-info.rs
inline-hint.rs
instrument-mcount.rs
integer-cmp.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
integer-overflow.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
internalize-closures.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
intrinsic-no-unnamed-attr.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
is_val_statically_known.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
issue-97217.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
iter-repeat-n-trivial-drop.rs
layout-size-checks.rs
lifetime_start_end.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
link_section.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
link-dead-code.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
llvm_module_flags.rs
llvm-ident.rs
loads.rs
local-generics-in-exe-internalized.rs
lto-removes-invokes.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
mainsubprogram.rs Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
mainsubprogramstart.rs Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
match-optimized.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
match-optimizes-away.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
match-unoptimized.rs
maybeuninit-rvo.rs
mem-replace-big-type.rs
mem-replace-simple-type.rs
merge-functions.rs
method-declaration.rs
mir_zst_stores.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
mir-aggregate-no-alloca.rs Unify Rvalue::Aggregate paths in cg_ssa 2024-05-11 21:22:51 -07:00
mir-inlined-line-numbers.rs
move-before-nocapture-ref-arg.rs
move-operands.rs
no_builtins-at-crate.rs
no-assumes-on-casts.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
no-dllimport-w-cross-lang-lto.rs
no-jump-tables.rs
no-plt.rs
no-redundant-item-monomorphization.rs
noalias-box-off.rs
noalias-box.rs
noalias-flag.rs
noalias-freeze.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
noalias-refcell.rs
noalias-rwlockreadguard.rs
noalias-unpin.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
noreturn-uninhabited.rs
noreturnflag.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
nounwind.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
nrvo.rs
optimize-attr-1.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
option-as-slice.rs
option-niche-eq.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
overaligned-constant.rs
packed.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
panic-abort-windows.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
panic-in-drop-abort.rs
panic-unwind-default-uwtable.rs
pattern_type_symbols.rs Use FileCheck to parameterize codegen tests over hashes 2024-06-04 01:30:51 -07:00
personality_lifetimes.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
pgo-counter-bias.rs Use -Zno-profiler-runtime instead of //@ needs-profiler-support 2024-06-14 13:31:46 +10:00
pgo-instrumentation.rs Use -Zno-profiler-runtime instead of //@ needs-profiler-support 2024-06-14 13:31:46 +10:00
pic-relocation-model.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
pie-relocation-model.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
powerpc64le-struct-align-128.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
precondition-checks.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
ptr-arithmetic.rs
ptr-read-metadata.rs
README.md
refs.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
repeat-trusted-len.rs
riscv-target-abi.rs
scalar-pair-bool.rs
set-discriminant-invalid.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
skip-mono-inside-if-false.rs
slice_as_from_ptr_range.rs
slice-as_chunks.rs
slice-indexing.rs
slice-init.rs
slice-iter-fold.rs
slice-iter-len-eq-zero.rs
slice-iter-nonnull.rs
slice-pointer-nonnull-unwrap.rs Fix tests for 32 bits targets 2024-06-11 07:45:16 +00:00
slice-position-bounds-check.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
slice-ref-equality.rs
slice-reverse.rs
slice-windows-no-bounds-check.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
some-abis-do-extend-params-to-32-bits.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
some-global-nonnull.rs
sparc-struct-abi.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
split-lto-unit.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
sroa-fragment-debuginfo.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
sse42-implies-crc32.rs
stack-probes-inline.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
stack-protector.rs
static-relocation-model-msvc.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
staticlib-external-inline-fns.rs
step_by-overflow-checks.rs
stores.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
swap-large-types.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
swap-small-types.rs
target-cpu-on-functions.rs
target-feature-inline-closure.rs Add inline comments why we're forcing the target cpu 2024-05-01 16:54:20 -07:00
target-feature-overrides.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
thin-lto.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
thread-local.rs
tied-features-strength.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
to_vec.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
trailing_zeros.rs
transmute-optimized.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
transmute-scalar.rs
try_identity.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
try_question_mark_nop.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
tune-cpu-on-functions.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
tuple-layout-opt.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
ub-checks.rs
unchecked_shifts.rs
unchecked-float-casts.rs
uninit-consts.rs
union-abi.rs Adjust tests for x86 "Rust" ABI changes 2024-07-12 10:47:56 +01:00
unwind-and-panic-abort.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
unwind-extern-exports.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
unwind-extern-imports.rs Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
unwind-landingpad-cold.rs
unwind-landingpad-inline.rs
used_with_arg.rs
var-names.rs
vec_pop_push_noop.rs
vec-as-ptr.rs
vec-calloc.rs
vec-in-place.rs add codegen test for issue 120493 2024-05-20 09:21:09 -05:00
vec-iter-collect-len.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
vec-iter.rs
vec-len-invariant.rs
vec-optimizes-away.rs
vec-reserve-extend.rs
vec-shrink-panik.rs
vec-with-capacity.rs
vecdeque_no_panic.rs
vecdeque_pop_push.rs
vecdeque-drain.rs
vecdeque-nonempty-get-no-panic.rs
virtual-function-elimination-32bit.rs
virtual-function-elimination.rs Use FileCheck to parameterize codegen tests over hashes 2024-06-04 01:30:51 -07:00
vtable-loads.rs Omit non-needs_drop drop_in_place in vtables 2024-05-27 16:26:56 -04:00
vtable-upcast.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
wasm_casts_trapping.rs
wasm_exceptions.rs Fix wasm_exceptions test 2024-06-19 21:26:48 +01:00
zip.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10:00
zst-offset.rs Run rustfmt on tests/codegen/. 2024-05-31 15:56:43 +10: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