Add contracts for all functions in Alignment by tautschnig · Pull Request #136578 · rust-lang/rust (original) (raw)

#19 exporting to docker image format
#19 sending tarball 19.9s done
#19 DONE 26.1s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-19]
[CI_JOB_NAME=x86_64-gnu-llvm-19]
debug: `DISABLE_CI_RUSTC_IF_INCOMPATIBLE` configured.
---
sccache: Listening on address 127.0.0.1:4226
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-19', '--enable-llvm-link-shared', '--set', 'rust.randomize-layout=true', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'build.print-step-timings', '--enable-verbose-tests', '--set', 'build.metrics', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--set', 'rust.lld=false', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: build.build          := x86_64-unknown-linux-gnu
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-19/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.randomize-layout := True
configure: rust.thin-lto-import-instr-limit := 10
---
  Number of decisions:   4447
  longest path:          1159 (code:    152)
  longest backtrack:       66 (code:    428)
Shared 86733 out of 152951 states by creating 14756 new states, saving 71977
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/expmed.cc: In function ‘rtx_def* extract_bit_field_1(rtx, poly_uint64, poly_uint64, int, rtx, machine_mode, machine_mode, bool, bool, rtx_def**)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/expmed.cc:1864:45: warning: ‘*(unsigned int*)((char*)&imode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
 1864 |       rtx sub = extract_bit_field_as_subreg (mode1, op0, imode,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
 1865 |                                              bitsize, bitnum);
      |                                              ~~~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/expmed.cc:1824:19: note: ‘*(unsigned int*)((char*)&imode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
 1824 |   scalar_int_mode imode;
      |                   ^~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/gimple-range-gori.cc: In member function ‘void range_def_chain::dump(FILE*, basic_block, const char*)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/gimple-range-gori.cc:319:19: warning: format not a string literal and no format arguments [-Wformat-security]
  319 |           fprintf (f, prefix);
      |           ~~~~~~~~^~~~~~~~~~~
---
                 from /checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/region-model.h:33,
                 from /checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/access-diagram.cc:39:
In constructor ‘ana::byte_range::byte_range(ana::byte_offset_t, ana::byte_size_t)’,
    inlined from ‘virtual text_art::table ana::string_literal_spatial_item::make_table(const ana::bit_to_table_map&, text_art::style_manager&) const’ at /checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/access-diagram.cc:1812:18:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/store.h:312:5: warning: ‘size_in_bytes.generic_wide_int<fixed_wide_int_storage<128> >::fixed_wide_int_storage<128>.fixed_wide_int_storage<128>::val[1]’ may be used uninitialized [-Wmaybe-uninitialized]
  312 |     m_size_in_bytes (size_in_bytes)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/access-diagram.cc: In member function ‘virtual text_art::table ana::string_literal_spatial_item::make_table(const ana::bit_to_table_map&, text_art::style_manager&) const’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/analyzer/access-diagram.cc:1808:28: note: ‘size_in_bytes.generic_wide_int<fixed_wide_int_storage<128> >::fixed_wide_int_storage<128>.fixed_wide_int_storage<128>::val[1]’ was declared here
 1808 |                byte_size_t size_in_bytes
      |                            ^~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/diagnostic.cc: In function ‘void fancy_abort(const char*, int, const char*)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/diagnostic.cc:1677:15: warning: format not a string literal and no format arguments [-Wformat-security]
 1677 |       fnotice (stderr, diagnostic_kind_text[DK_ICE]);
---
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/gcc.cc:7930:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 7930 |   write (fd, "\n\n", 2);
      |   ~~~~~~^~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/gcc.cc: In member function ‘void driver::final_actions() const’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/gcc.cc:9307:13: warning: ignoring return value of ‘int truncate(const char*, __off_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 9307 |     truncate(totruncate_file, 0);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto-wrapper.cc: In function ‘bool find_and_merge_options(int, off_t, const char*, vec<cl_decoded_option>, bool, vec<cl_decoded_option>*, const char*)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto-wrapper.cc:1165:8: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 1165 |   read (fd, data, length);
      |   ~~~~~^~~~~~~~~~~~~~~~~~
---
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto/lto-common.cc: In function ‘void lto_resolution_read(splay_tree, FILE*, lto_file*)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto/lto-common.cc:2091:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 2091 |   fscanf (resolution, " ");   /* Read white space.  */
      |   ~~~~~~~^~~~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto/lto-common.cc:2093:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 2093 |   fread (obj_name, sizeof (char), name_len, resolution);
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/lto/lto-common.cc:2113:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 2113 |   fscanf (resolution, "%u", &num_symbols);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/gcc/jit/jit-recording.cc:32:
---
Applying io_quotes_use            to linux/blkzoned.h
Applying io_quotes_use            to linux/ipmi.h
Applying io_quotes_use            to linux/psp-dbc.h
Applying io_quotes_use            to linux/bt-bmc.h
Applying io_quotes_use            to linux/tps6594_pfsm.h
Applying io_quotes_use            to linux/cxl_mem.h
Applying io_quotes_use            to linux/wmi.h
Applying io_quotes_use            to linux/auto_fs.h
Applying io_quotes_use            to linux/mmtimer.h
Applying io_quotes_use            to linux/f2fs.h
Applying io_quotes_use            to linux/vhost.h
---
Applying io_quotes_use            to sound/asound.h
Applying io_quotes_use            to sound/compress_offload.h
Applying hpux8_bogus_inlines      to math.h
Applying pthread_incomplete_struct_argument to pthread.h
Fixed:  pthread.h
Applying io_quotes_use            to misc/mrvl_cn10k_dpi.h
Applying io_quotes_use            to misc/ocxl.h
Applying io_quotes_use            to misc/cxl.h
Applying io_quotes_use            to misc/xilinx_sdfec.h
Applying io_quotes_def            to unicode/platform.h
Applying sun_malloc               to malloc.h
Applying io_quotes_use            to scsi/cxlflash_ioctl.h
---
Applying machine_name             to x86_64-linux-gnu/bits/unistd_ext.h
Applying io_quotes_use            to x86_64-linux-gnu/asm/mtrr.h
Applying io_quotes_use            to x86_64-linux-gnu/asm/amd_hsmp.h
Applying machine_name             to openssl/e_os2.h
Applying io_quotes_use            to drm/xe_drm.h
Applying io_quotes_use            to drm/radeon_drm.h
Applying io_quotes_use            to drm/panfrost_drm.h
Applying io_quotes_use            to drm/etnaviv_drm.h
Applying io_quotes_use            to drm/lima_drm.h
Applying io_quotes_use            to drm/qaic_accel.h
Applying io_quotes_use            to drm/vc4_drm.h
Applying io_quotes_use            to drm/i915_drm.h
Applying io_quotes_use            to drm/omap_drm.h
Applying io_quotes_use            to drm/pvr_drm.h
Applying io_quotes_use            to drm/amdgpu_drm.h
Applying io_quotes_use            to drm/vgem_drm.h
Applying io_quotes_use            to drm/msm_drm.h
Applying io_quotes_use            to drm/v3d_drm.h
Applying io_quotes_use            to drm/exynos_drm.h
Applying io_quotes_use            to drm/nouveau_drm.h
Applying io_quotes_use            to drm/drm.h
Applying io_quotes_use            to drm/habanalabs_accel.h
Applying io_quotes_use            to drm/tegra_drm.h
Applying io_quotes_use            to rdma/rdma_user_ioctl.h
cc1: note: self-tests are not enabled in this build
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/c++tools/server.cc: In function ‘void server(bool, int, module_resolver*)’:
/checkout/obj/build/x86_64-unknown-linux-gnu/gcc/src/c++tools/server.cc:620:10: warning: ignoring return value of ‘int pipe(int*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
---
test [mir-opt] tests/mir-opt/inline/polymorphic_recursion.rs ... ok

failures:

---- [mir-opt] tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs stdout ----
16           scope 4 (inlined Unique::<[bool; 0]>::dangling) {
17               let mut _5: std::ptr::NonNull<[bool; 0]>;
18               scope 5 (inlined NonNull::<[bool; 0]>::dangling) {
-                   let mut _6: std::num::NonZero<usize>;
+                   let _6: std::ptr::Alignment;
+                   let mut _7: std::num::NonZero<usize>;
20                   scope 6 {
-                       scope 8 (inlined std::ptr::Alignment::as_nonzero) {
+                       scope 10 (inlined std::ptr::Alignment::as_nonzero) {
+                           let mut _8: {closure@std::ptr::Alignment::as_nonzero::{closure#0}};
+                           let mut _9: std::num::NonZero<usize>;
+                           scope 11 {
+                           }
+                           scope 12 (inlined core::contracts::build_check_ensures::<NonZero<usize>, {closure@std::ptr::Alignment::as_nonzero::{closure#0}}>) {
+                           }
22                       }
-                       scope 9 (inlined NonNull::<[bool; 0]>::without_provenance) {
-                           let _7: *const [bool; 0];
-                           scope 10 {
+                       scope 13 (inlined NonNull::<[bool; 0]>::without_provenance) {
+                           let _10: *const [bool; 0];
+                           scope 14 {
26                           }
-                           scope 11 (inlined NonZero::<usize>::get) {
+                           scope 15 (inlined NonZero::<usize>::get) {
28                           }
-                           scope 12 (inlined std::ptr::without_provenance::<[bool; 0]>) {
-                               scope 13 (inlined without_provenance_mut::<[bool; 0]>) {
+                           scope 16 (inlined std::ptr::without_provenance::<[bool; 0]>) {
+                               scope 17 (inlined without_provenance_mut::<[bool; 0]>) {
31                               }
32                           }
33                       }

34                   }
35                   scope 7 (inlined std::ptr::Alignment::of::<[bool; 0]>) {
+                       scope 8 {
+                       }
+                       scope 9 (inlined core::contracts::build_check_ensures::<std::ptr::Alignment, {closure@std::ptr::Alignment::of<[bool; 0]>::{closure#0}}>) {
+                       }
36                   }
37               }
38           }

45           StorageLive(_4);
46           StorageLive(_5);
47           StorageLive(_6);
- -         _6 = const std::ptr::Alignment::of::<[bool; 0]>::{constant#0} as std::num::NonZero<usize> (Transmute);
- +         _6 = const NonZero::<usize>(core::num::niche_types::NonZeroUsizeInner(1_usize));
-           StorageLive(_7);
- -         _7 = copy _6 as *const [bool; 0] (Transmute);
- -         _5 = NonNull::<[bool; 0]> { pointer: copy _7 };
- +         _7 = const {0x1 as *const [bool; 0]};
- +         _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }};
-           StorageDead(_7);
-           StorageDead(_6);
- -         _4 = Unique::<[bool; 0]> { pointer: move _5, _marker: const PhantomData::<[bool; 0]> };
- +         _4 = const Unique::<[bool; 0]> {{ pointer: NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }}, _marker: PhantomData::<[bool; 0]> }};
-           StorageDead(_5);
- -         _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize, Implicit));
- +         _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }};
-           StorageDead(_4);
- -         _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
- +         _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global);
-           StorageDead(_3);
- -         _1 = A { foo: move _2 };
- +         _1 = const A {{ foo: Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC2, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global) }};
-           StorageDead(_2);
-           _0 = const ();
-           drop(_1) -> [return: bb1, unwind: bb2];
+           _6 = contract_check_ensures::<{closure@std::ptr::Alignment::of<[bool; 0]>::{closure#0}}, std::ptr::Alignment>(const ZeroSized: {closure@std::ptr::Alignment::of<[bool; 0]>::{closure#0}}, const std::ptr::Alignment::of::<[bool; 0]>::{constant#0}) -> [return: bb3, unwind continue];
71       }
72   
73       bb1: {

78       bb2 (cleanup): {
79           resume;
80       }
+   
+       bb3: {
+           StorageLive(_7);
+           StorageLive(_8);
+           _8 = {closure@$SRC_DIR/core/src/ptr/alignment.rs:LL:COL} { 0: copy _6 };
+           StorageLive(_9);
+           _9 = copy _6 as std::num::NonZero<usize> (Transmute);
+           _7 = contract_check_ensures::<{closure@std::ptr::Alignment::as_nonzero::{closure#0}}, NonZero<usize>>(move _8, move _9) -> [return: bb4, unwind continue];
+       }
+   
+       bb4: {
+           StorageDead(_9);
+           StorageDead(_8);
+           StorageLive(_10);
+           _10 = copy _7 as *const [bool; 0] (Transmute);
+           _5 = NonNull::<[bool; 0]> { pointer: copy _10 };
+           StorageDead(_10);
+           StorageDead(_7);
+           StorageDead(_6);
+           _4 = Unique::<[bool; 0]> { pointer: move _5, _marker: const PhantomData::<[bool; 0]> };
+           StorageDead(_5);
+           _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize, Implicit));
+           StorageDead(_4);
+           _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
+           StorageDead(_3);
+           _1 = A { foo: move _2 };
+           StorageDead(_2);
+           _0 = const ();
+           drop(_1) -> [return: bb1, unwind: bb2];
+       }
81   }
- + 
- + ALLOC2 (size: 16, align: 8) { .. }
- + 
- + ALLOC1 (size: 16, align: 8) { .. }
- + 
- + ALLOC0 (size: 16, align: 8) { .. }
88   
89 


thread '[mir-opt] tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- [mir-opt] tests/mir-opt/gvn_ptr_eq_with_constant.rs stdout ----
6       let _1: bool;
7       let mut _2: *mut u8;
8       scope 1 (inlined dangling_mut::<u8>) {
+           let mut _3: std::ptr::NonNull<u8>;
9           scope 2 (inlined NonNull::<u8>::dangling) {
-               let mut _3: std::num::NonZero<usize>;
+               let _4: std::ptr::Alignment;
+               let mut _5: std::num::NonZero<usize>;
11               scope 3 {
-                   scope 5 (inlined std::ptr::Alignment::as_nonzero) {
+                   scope 7 (inlined std::ptr::Alignment::as_nonzero) {
+                       let mut _6: {closure@std::ptr::Alignment::as_nonzero::{closure#0}};
+                       let mut _7: std::num::NonZero<usize>;
+                       scope 8 {
+                       }
+                       scope 9 (inlined core::contracts::build_check_ensures::<NonZero<usize>, {closure@std::ptr::Alignment::as_nonzero::{closure#0}}>) {
+                       }
13                   }
-                   scope 6 (inlined NonNull::<u8>::without_provenance) {
-                       scope 7 {
+                   scope 10 (inlined NonNull::<u8>::without_provenance) {
+                       let _8: *const u8;
+                       scope 11 {
16                       }
-                       scope 8 (inlined NonZero::<usize>::get) {
+                       scope 12 (inlined NonZero::<usize>::get) {
18                       }
-                       scope 9 (inlined std::ptr::without_provenance::<u8>) {
-                           scope 10 (inlined without_provenance_mut::<u8>) {
+                       scope 13 (inlined std::ptr::without_provenance::<u8>) {
+                           scope 14 (inlined without_provenance_mut::<u8>) {
21                           }
22                       }
23                   }

24               }
25               scope 4 (inlined std::ptr::Alignment::of::<u8>) {
+                   scope 5 {
+                   }
+                   scope 6 (inlined core::contracts::build_check_ensures::<std::ptr::Alignment, {closure@std::ptr::Alignment::of<u8>::{closure#0}}>) {
+                   }
26               }
27           }
-           scope 11 (inlined NonNull::<u8>::as_ptr) {
+           scope 15 (inlined NonNull::<u8>::as_ptr) {
29           }
30       }
-       scope 12 (inlined Foo::<u8>::cmp_ptr) {
-           let mut _4: *const u8;
-           let mut _5: *mut u8;
-           let mut _6: *const u8;
-           scope 13 (inlined std::ptr::eq::<u8>) {
+       scope 16 (inlined Foo::<u8>::cmp_ptr) {
+           let mut _9: *const u8;
+           let mut _10: *mut u8;
+           let mut _11: *const u8;
+           scope 17 (inlined std::ptr::eq::<u8>) {
36           }
37       }
38   

39       bb0: {
40           StorageLive(_1);
41           StorageLive(_2);
+ -         StorageLive(_5);
+ +         nop;
42           StorageLive(_3);
- -         _3 = const std::ptr::Alignment::of::<u8>::{constant#0} as std::num::NonZero<usize> (Transmute);
- -         _2 = copy _3 as *mut u8 (Transmute);
- +         _3 = const NonZero::<usize>(core::num::niche_types::NonZeroUsizeInner(1_usize));
- +         _2 = const {0x1 as *mut u8};
-           StorageDead(_3);
48           StorageLive(_4);
-           StorageLive(_5);
- -         _5 = copy _2;
- -         _4 = copy _2 as *const u8 (PtrToPtr);
- +         _5 = const {0x1 as *mut u8};
- +         _4 = const {0x1 as *const u8};
-           StorageDead(_5);
+           _4 = contract_check_ensures::<{closure@std::ptr::Alignment::of<u8>::{closure#0}}, std::ptr::Alignment>(const ZeroSized: {closure@std::ptr::Alignment::of<u8>::{closure#0}}, const std::ptr::Alignment::of::<u8>::{constant#0}) -> [return: bb1, unwind continue];
+       }
+   
+       bb1: {
55           StorageLive(_6);
- -         _6 = const Foo::<u8>::SENTINEL as *const u8 (PtrToPtr);
- -         _1 = Eq(copy _4, copy _6);
- +         _6 = const {0x1 as *const u8};
- +         _1 = const true;
+           _6 = {closure@$SRC_DIR/core/src/ptr/alignment.rs:LL:COL} { 0: copy _4 };
+           StorageLive(_7);
+           _7 = copy _4 as std::num::NonZero<usize> (Transmute);
+           _5 = contract_check_ensures::<{closure@std::ptr::Alignment::as_nonzero::{closure#0}}, NonZero<usize>>(move _6, move _7) -> [return: bb2, unwind continue];
+       }
+   
+       bb2: {
+           StorageDead(_7);
60           StorageDead(_6);
+ -         StorageLive(_8);
+ +         nop;
+           _8 = copy _5 as *const u8 (Transmute);
+           _3 = NonNull::<u8> { pointer: copy _8 };
+ -         StorageDead(_8);
+ +         nop;
61           StorageDead(_4);
+           _2 = copy _5 as *mut u8 (Transmute);
+           StorageDead(_3);
+ -         StorageDead(_5);
+ +         nop;
+           StorageLive(_9);
+           StorageLive(_10);
+           _10 = copy _2;
+ -         _9 = copy _2 as *const u8 (PtrToPtr);
+ +         _9 = copy _8;
+           StorageDead(_10);
+           StorageLive(_11);
+ -         _11 = const Foo::<u8>::SENTINEL as *const u8 (PtrToPtr);
+ -         _1 = Eq(copy _9, copy _11);
+ +         _11 = const {0x1 as *const u8};
+ +         _1 = Eq(copy _8, const {0x1 as *const u8});
+           StorageDead(_11);
+           StorageDead(_9);
62           StorageDead(_2);
63           StorageDead(_1);
64           _0 = const ();


thread '[mir-opt] tests/mir-opt/gvn_ptr_eq_with_constant.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff


failures:
    [mir-opt] tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs
    [mir-opt] tests/mir-opt/gvn_ptr_eq_with_constant.rs