@@ -7,10 +7,21 @@ use std::io::{Read, Seek, Write};
77use std:: os:: fd:: { AsFd , FromRawFd , IntoRawFd } ;
88use std:: rc:: Rc ;
99pub unsafe fn unused_param_0 ( mut x : i32 ) {
10- x;
10+ & ( x) ;
11+ }
12+ #[ repr( C ) ]
13+ #[ derive( Clone , Default ) ]
14+ pub struct NonTrivial {
15+ pub data : Vec < i32 > ,
16+ }
17+ pub unsafe fn unused_ref_param_1 ( x : * const NonTrivial ) {
18+ & ( * x) ;
19+ }
20+ pub unsafe fn unused_ptr_param_2 ( mut p : * const NonTrivial ) {
21+ & ( * p) ;
1122}
1223pub static mut side_effect_counter: i32 = unsafe { 0 } ;
13- pub unsafe fn bump_and_return_1 ( ) -> i32 {
24+ pub unsafe fn bump_and_return_3 ( ) -> i32 {
1425 side_effect_counter. prefix_inc ( ) ;
1526 return side_effect_counter;
1627}
@@ -30,59 +41,68 @@ unsafe fn main_0() -> i32 {
3041 unused_param_0 ( _x)
3142 } ) ;
3243 let mut y: i32 = 5 ;
33- y ;
44+ & ( y ) ;
3445 let mut z: i32 = {
35- y ;
46+ & ( y ) ;
3647 7
3748 } ;
3849 assert ! ( ( ( z) == ( 7 ) ) ) ;
3950 let mut counter: i32 = 0 ;
4051 let mut w: i32 = {
41- counter;
52+ & ( counter) ;
4253 counter = 3 ;
4354 counter
4455 } ;
4556 assert ! ( ( ( w) == ( 3 ) ) ) ;
4657 assert ! ( ( ( counter) == ( 3 ) ) ) ;
47- ( unsafe { bump_and_return_1 ( ) } ) ;
58+ & ( unsafe { bump_and_return_3 ( ) } ) ;
4859 assert ! ( ( ( side_effect_counter) == ( 1 ) ) ) ;
4960 let mut v: i32 = {
50- ( unsafe { bump_and_return_1 ( ) } ) ;
61+ & ( unsafe { bump_and_return_3 ( ) } ) ;
5162 99
5263 } ;
5364 assert ! ( ( ( side_effect_counter) == ( 2 ) ) ) ;
5465 assert ! ( ( ( v) == ( 99 ) ) ) ;
55- 0 ;
56- ( 0 ) ;
57- ( y) ;
58- ( 0 ) ;
59- ( y ) ;
66+ & ( 0 ) ;
67+ & ( 0 ) ;
68+ & ( y) ;
69+ ( & ( 0 ) ) ;
70+ ( & ( y ) ) ;
6071 let mut err: i32 = 0 ;
61- ( err = 42 ) ;
72+ ( & ( err = 42 ) ) ;
6273 assert ! ( ( ( err) == ( 42 ) ) ) ;
6374 let mut chosen: i32 = {
64- ( err = 7 ) ;
75+ & ( err = 7 ) ;
6576 123
6677 } ;
6778 assert ! ( ( ( err) == ( 7 ) ) ) ;
6879 assert ! ( ( ( chosen) == ( 123 ) ) ) ;
69- bump_and_return_1 ;
80+ & ( bump_and_return_3 ) ;
7081 assert ! ( ( ( side_effect_counter) == ( 2 ) ) ) ;
71- ( Some ( bump_and_return_1 ) ) ;
82+ & ( Some ( bump_and_return_3 ) ) ;
7283 assert ! ( ( ( side_effect_counter) == ( 2 ) ) ) ;
73- ( std:: mem:: transmute :: < Option < unsafe fn ( ) -> i32 > , Option < unsafe fn ( ) -> i32 > > (
74- ( Some ( bump_and_return_1 ) ) ,
84+ & ( std:: mem:: transmute :: < Option < unsafe fn ( ) -> i32 > , Option < unsafe fn ( ) -> i32 > > (
85+ ( Some ( bump_and_return_3 ) ) ,
7586 ) ) ;
7687 assert ! ( ( ( side_effect_counter) == ( 2 ) ) ) ;
7788 let mut storage: i32 = 11 ;
7889 let mut p: * mut i32 = ( & mut storage as * mut i32 ) ;
79- ( * p) ;
80- ( p) ;
90+ & ( * p) ;
91+ & ( p) ;
8192 let mut arr: [ i32 ; 3 ] = [ 1 , 2 , 3 ] ;
82- ( arr[ ( 1 ) as usize ] ) ;
93+ & ( arr[ ( 1 ) as usize ] ) ;
8394 let mut h: Holder = Holder { field : 17 } ;
84- ( h. field ) ;
95+ & ( h. field ) ;
8596 let mut hp: * mut Holder = ( & mut h as * mut Holder ) ;
86- ( ( * hp) . field ) ;
97+ & ( ( * hp) . field ) ;
98+ let mut nt: NonTrivial = <NonTrivial >:: default ( ) ;
99+ ( unsafe {
100+ let _x: * const NonTrivial = & nt as * const NonTrivial ;
101+ unused_ref_param_1 ( _x)
102+ } ) ;
103+ ( unsafe {
104+ let _p: * const NonTrivial = ( & mut nt as * mut NonTrivial ) . cast_const ( ) ;
105+ unused_ptr_param_2 ( _p)
106+ } ) ;
87107 return 0 ;
88108}
0 commit comments