diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-07-20 16:17:20 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-20 16:17:20 +0530 |
| commit | fffc6504bcfa416f09f7d441f57f71e7aec28a00 (patch) | |
| tree | 8d653b61b7e25a6efef8281880f0a23439a7761e /src/test | |
| parent | eecfdfb8a12367cb292a85b6a30981eb35a56379 (diff) | |
| parent | 7c900c9b457b232e0c189dba0871a50fd2daabf9 (diff) | |
| download | rust-fffc6504bcfa416f09f7d441f57f71e7aec28a00.tar.gz rust-fffc6504bcfa416f09f7d441f57f71e7aec28a00.zip | |
Rollup merge of #99436 - Nilstrieb:toggle-box-noalias, r=fee1-dead
Add flag to configure `noalias` on `Box<T>` The aliasing rules of `Box<T>` are still not decided, but currently, `Box<T>` is unique and gets `noalias`. To aid making an informed decision about the future of `Box<T>`, this PR adds a flag `-Zbox-noalias` to configure `noalias` for `Box<T>` (for example, for benchmarking). The same flag already exists for `&mut T` `noalias`, where it was added because it was the problem of various miscompilations in LLVM. For more information, see rust-lang/unsafe-code-guidelines#326
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/codegen/noalias-box-off.rs | 8 | ||||
| -rw-r--r-- | src/test/codegen/noalias-box.rs | 8 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/z-help.stdout | 1 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/test/codegen/noalias-box-off.rs b/src/test/codegen/noalias-box-off.rs new file mode 100644 index 00000000000..afd17c7c160 --- /dev/null +++ b/src/test/codegen/noalias-box-off.rs @@ -0,0 +1,8 @@ +// compile-flags: -O -Z box-noalias=no + +#![crate_type = "lib"] + +// CHECK-LABEL: @box_should_not_have_noalias_if_disabled( +// CHECK-NOT: noalias +#[no_mangle] +pub fn box_should_not_have_noalias_if_disabled(_b: Box<u8>) {} diff --git a/src/test/codegen/noalias-box.rs b/src/test/codegen/noalias-box.rs new file mode 100644 index 00000000000..a3d1f093d8b --- /dev/null +++ b/src/test/codegen/noalias-box.rs @@ -0,0 +1,8 @@ +// compile-flags: -O + +#![crate_type = "lib"] + +// CHECK-LABEL: @box_should_have_noalias_by_default( +// CHECK: noalias +#[no_mangle] +pub fn box_should_have_noalias_by_default(_b: Box<u8>) {} diff --git a/src/test/rustdoc-ui/z-help.stdout b/src/test/rustdoc-ui/z-help.stdout index 7296b35788a..6f5248f5b18 100644 --- a/src/test/rustdoc-ui/z-help.stdout +++ b/src/test/rustdoc-ui/z-help.stdout @@ -4,6 +4,7 @@ -Z asm-comments=val -- generate comments into the assembly (may change behavior) (default: no) -Z assert-incr-state=val -- assert that the incremental cache is in given state: either `loaded` or `not-loaded`. -Z binary-dep-depinfo=val -- include artifacts (sysroot, crate dependencies) used during compilation in dep-info (default: no) + -Z box-noalias=val -- emit noalias metadata for box (default: yes) -Z branch-protection=val -- set options for branch target identification and pointer authentication on AArch64 -Z cf-protection=val -- instrument control-flow architecture protection -Z cgu-partitioning-strategy=val -- the codegen unit partitioning strategy to use |
