rust/tests/codegen
bors 3603a84a3d Auto merge of #111517 - lukas-code:addr-of-mutate, r=tmiasko
allow mutating function args through `&raw const`

Fixes https://github.com/rust-lang/rust/issues/111502 by "turning off the sketchy optimization while we figure out if this is ok", like `@JakobDegen` said.

The first commit in this PR removes some suspicious looking logic from the same method, but should have no functional changes, since it doesn't modify the `context` outside of the method. Best reviewed commit by commit.

r? opsem
2023-05-14 10:45:39 +00:00
..
auxiliary Also move the auxiliary file 2023-03-20 10:25:29 +00:00
avr abi: add AddressSpace field to Primitive::Pointer 2023-01-22 23:41:39 -05:00
dllimports Add more codegen tests 2023-01-17 16:23:22 +01:00
instrument-xray Test XRay only for supported targets 2023-02-09 12:29:43 +09:00
intrinsics Also use mir::Offset for pointer add 2023-04-27 22:44:42 -07:00
issues fix codegen test 2023-04-28 23:08:54 +02:00
loongarch-abi tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
non-terminate
remap_path_prefix Give the cross-crate generic some work to do 2023-04-07 15:46:45 -04:00
riscv-abi Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
simd-intrinsic Allow transmutes to produce OperandValues instead of always using allocas 2023-04-04 18:44:29 -07:00
src-hash-algorithm
unwind-abis
abi-efiapi.rs Stabilize abi_efiapi feature 2023-01-11 20:42:13 -05:00
abi-main-signature-16bit-c-int.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
abi-main-signature-32bit-c-int.rs
abi-repr-ext.rs
abi-sysv64.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
abi-x86_64_sysv.rs
abi-x86-interrupt.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
addr-of-mutate.rs allow mutating function args through &raw const 2023-05-13 00:00:51 +02:00
adjustments.rs Use poison instead of undef 2023-03-16 15:07:04 +01:00
align-enum.rs
align-fn.rs Allow all associated functions and add test 2023-04-16 06:31:08 +00:00
align-offset.rs assume the runtime range of align_offset 2023-05-05 04:22:51 -07:00
align-struct.rs
alloc-optimisation.rs
array-clone.rs
array-equality.rs Merge two different equality specialization traits in core 2023-03-01 14:42:06 -08:00
array-map.rs Permit MIR inlining without #[inline] 2023-04-07 15:46:43 -04:00
ascii-char.rs Add the basic ascii::Char type 2023-05-03 22:09:33 -07:00
asm-clobber_abi.rs
asm-clobbers.rs
asm-may_unwind.rs
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 Add another autovectorization codegen test using array zip-map 2023-02-04 16:44:53 -08:00
binary-search-index-no-bound-check.rs
bool-cmp.rs
box-maybe-uninit-llvm14.rs Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
box-maybe-uninit.rs Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
bpf-alu32.rs
branch-protection.rs
c-variadic-copy.rs
c-variadic-opt.rs
c-variadic.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
call-llvm-intrinsics.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
call-metadata.rs
catch-unwind.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
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 Use partial_cmp to implement tuple lt/le/ge/gt 2023-02-16 23:59:13 -08:00
comparison-operators-newtype.rs Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
consts.rs Fix codegen tests with hard-coded hashes 2023-04-05 15:59:29 +00:00
dealloc-no-unwind.rs
debug-alignment.rs
debug-column-msvc.rs
debug-column.rs
debug-compile-unit-path.rs
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
debug-vtable.rs Don't merge vtables when full debuginfo is enabled. 2023-01-27 15:29:04 +00:00
debuginfo-constant-locals.rs Turn on ConstDebugInfo pass. 2023-04-22 23:41:48 +02:00
debuginfo-generic-closure-env-names.rs
deduced-param-attrs.rs
default-requires-uwtable.rs
drop.rs
dst-vtable-align-nonzero.rs
dst-vtable-size-range.rs
enable-lto-unit-splitting.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
enum-bounds-check-derived-idx.rs
enum-bounds-check-issue-13926.rs
enum-bounds-check-issue-82871.rs
enum-bounds-check.rs
enum-debug-clike.rs
enum-debug-niche-2.rs
enum-debug-niche.rs
enum-debug-tagged.rs
enum-discriminant-value.rs
enum-match.rs Update codegen test. 2023-04-14 16:26:11 +00:00
export-no-mangle.rs
external-no-mangle-fns.rs
external-no-mangle-statics.rs
fastcall-inreg.rs Put noundef on all scalars that don't allow uninit 2023-01-17 08:14:35 +01:00
fatptr.rs
fewer-names.rs Disable nrvo mir opt 2023-05-08 03:55:41 -07:00
ffi-const.rs
ffi-out-of-bounds-loads.rs
ffi-pure.rs
ffi-returns-twice.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 Add more codegen tests 2023-01-17 16:23:22 +01:00
function-arguments-noopt.rs make PointerKind directly reflect pointer types 2023-02-06 11:46:32 +01:00
function-arguments.rs Make dyn* have the same scalar pair ABI as corresponding fat pointer 2023-02-18 19:47:34 +00:00
gdb_debug_script_load.rs
generator-debug-msvc.rs
generator-debug.rs
generic-debug.rs
global_asm_include.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
global_asm_x2.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
global_asm.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
i686-macosx-deployment-target.rs
i686-no-macosx-deployment-target.rs
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
inline-debuginfo.rs
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
instrument-mcount.rs
integer-cmp.rs
integer-overflow.rs
internalize-closures.rs
intrinsic-no-unnamed-attr.rs
iter-repeat-n-trivial-drop.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
layout-size-checks.rs
lifetime_start_end.rs
link_section.rs
link-dead-code.rs
loads.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
local-generics-in-exe-internalized.rs Permit MIR inlining without #[inline] 2023-04-07 15:46:43 -04:00
lto-removes-invokes.rs
mainsubprogram.rs
mainsubprogramstart.rs
match-optimized.rs
match-optimizes-away.rs
match-unoptimized.rs
mem-replace-big-type.rs Disable nrvo mir opt 2023-05-08 03:55:41 -07:00
mem-replace-simple-type.rs Codegen fewer instructions in mem::replace 2023-04-30 22:33:04 -07:00
merge-functions.rs Update the minimum external LLVM to 14 2023-02-10 16:06:25 -08:00
mir_zst_stores.rs
mir-inlined-line-numbers.rs
move-operands.rs Fix codegen tests 2023-02-14 19:21:58 -05:00
naked-functions.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
naked-nocoverage.rs
naked-noinline.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 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 Implement SpecOptionPartialEq for cmp::Ordering 2023-01-18 19:19:28 -08:00
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 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-read-metadata.rs Improved implementation and comments after code review feedback 2023-03-14 22:24:28 -07:00
README.md
refs.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
repeat-trusted-len.rs
repr-transparent-aggregates-1.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
repr-transparent-aggregates-2.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
repr-transparent-aggregates-3.rs
repr-transparent-sysv64.rs
repr-transparent.rs tests: Add tests for LoongArch64 2023-04-30 00:06:26 +08:00
sanitizer_memtag_attr_check.rs
sanitizer_scs_attr_check.rs
sanitizer-cfi-add-canonical-jump-tables-flag.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-add-enable-split-lto-unit-flag.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-checks-attr-no-sanitize.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-checks.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-attr-cfi-encoding.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-id-itanium-cxx-abi.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-itanium-cxx-abi-generalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-itanium-cxx-abi-normalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-itanium-cxx-abi.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-emit-type-metadata-trait-objects.rs CFI: Fix SIGILL reached via trait objects 2023-05-09 20:04:19 +00:00
sanitizer-cfi-generalize-pointers.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-cfi-normalize-integers.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kasan-emits-instrumentation.rs Add kernel-address sanitizer support for freestanding targets 2023-02-14 20:54:25 -05:00
sanitizer-kcfi-add-kcfi-flag.rs
sanitizer-kcfi-emit-kcfi-operand-bundle-attr-no-sanitize.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-kcfi-operand-bundle-itanium-cxx-abi.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-kcfi-operand-bundle.rs Add cross-language LLVM CFI support to the Rust compiler 2023-05-03 22:41:29 +00:00
sanitizer-kcfi-emit-type-metadata-trait-objects.rs CFI: Fix SIGILL reached via trait objects 2023-05-09 20:04:19 +00:00
sanitizer-memory-track-orgins.rs
sanitizer-no-sanitize-inlining.rs
sanitizer-no-sanitize.rs
sanitizer-recover.rs Add more codegen tests 2023-01-17 16:23:22 +01: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
simd_arith_offset.rs Fix codegen tests 2023-02-14 19:21:58 -05:00
simd-wide-sum.rs simd-wide-sum test: adapt for LLVM 17 codegen change 2023-03-13 15:07:16 +00:00
slice_as_from_ptr_range.rs
slice-as_chunks.rs
slice-indexing.rs Use nuw when calculating slice lengths from Ranges 2023-03-05 15:15:22 -08:00
slice-init.rs
slice-iter-len-eq-zero.rs
slice-iter-nonnull.rs Remove useless assumes from slice::iter(_mut) 2023-05-12 17:34:55 -07:00
slice-position-bounds-check.rs
slice-ref-equality.rs Merge two different equality specialization traits in core 2023-03-01 14:42:06 -08:00
slice-reverse.rs
slice-windows-no-bounds-check.rs
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
sparc-struct-abi.rs
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
stack-probes-inline.rs
stack-protector.rs
static-relocation-model-msvc.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
staticlib-external-inline-fns.rs
stores.rs
swap-large-types.rs
swap-simd-types.rs
swap-small-types.rs
target-cpu-on-functions.rs
target-feature-overrides.rs
thread-local.rs tests: adapt for LLVM change 5b386b864c7619897c51a1da97d78f1cf6f3eff6 2023-04-17 10:53:18 -04:00
to_vec.rs
transmute-optimized.rs Add transmute optimization tests and some extra comments 2023-04-19 23:17:35 -07:00
transmute-scalar.rs assume value ranges in transmute 2023-04-13 00:12:39 -07:00
try_identity.rs
try_question_mark_nop.rs
tune-cpu-on-functions.rs
tuple-layout-opt.rs Add more codegen tests 2023-01-17 16:23:22 +01:00
unchecked_shifts.rs
unchecked-float-casts.rs
uninit-consts.rs Update the minimum external LLVM to 14 2023-02-10 16:06:25 -08:00
union-abi.rs
unpadded-simd.rs
unwind-and-panic-abort.rs
unwind-extern-exports.rs
unwind-extern-imports.rs
used_with_arg.rs
var-names.rs Disable nrvo mir opt 2023-05-08 03:55:41 -07:00
vec-as-ptr.rs Remove the assume(!is_null) from Vec::as_ptr 2023-02-19 14:30:21 -05:00
vec-calloc-llvm14.rs
vec-calloc.rs Auto merge of #106989 - clubby789:is-zero-num, r=scottmcm 2023-01-19 08:04:26 +00: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
vec-optimizes-away.rs
vec-shrink-panik.rs vec-shrink-panik: update expectations to work on LLVM 17 2023-05-10 09:31:33 -04:00
vecdeque_no_panic.rs
virtual-function-elimination-32bit.rs
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
x86_64-macosx-deployment-target.rs
x86_64-no-macosx-deployment-target.rs
zip.rs
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