File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -41,6 +41,23 @@ unsafe fn main_0() -> i32 {
4141 assert ! ( ( ( u. i) == ( 42 ) ) ) ;
4242 u. f = 3.140000105E+0 ;
4343 assert ! ( ( ( u. f) == ( 3.140000105E+0 ) ) ) ;
44+ let mut buf: [ u8 ; 4 ] = [ 0_u8 ; 4 ] ;
45+ {
46+ let byte_0 = ( buf. as_mut_ptr ( ) as * mut :: libc:: c_void ) as * mut u8 ;
47+ for offset in 0 ..:: std:: mem:: size_of :: < [ u8 ; 4 ] > ( ) {
48+ * byte_0. offset ( offset as isize ) = 0 as u8 ;
49+ }
50+ ( buf. as_mut_ptr ( ) as * mut :: libc:: c_void )
51+ } ;
52+ let mut ru: * mut basic = ( buf. as_mut_ptr ( ) as * mut basic ) ;
53+ let mut pi: * mut i32 = ( & mut ( * ru) . i as * mut i32 ) ;
54+ let mut pf: * mut f32 = ( & mut ( * ru) . f as * mut f32 ) ;
55+ ( * ru) . i = 7 ;
56+ assert ! ( ( ( * pi) == ( 7 ) ) ) ;
57+ ( * pi) = 1065353216 ;
58+ assert ! ( ( ( ( * ru) . i) == ( 1065353216 ) ) ) ;
59+ assert ! ( ( ( * pf) == ( 1.0E+0 ) ) ) ;
60+ assert ! ( ( ( buf[ ( 3 ) as usize ] as i32 ) == ( 63 ) ) ) ;
4461 return 0 ;
4562}
4663pub unsafe fn __cpp2rust_init_globals ( ) { }
Original file line number Diff line number Diff line change 11#include < assert.h>
2+ #include < string.h>
23
34union basic {
45 int i;
@@ -18,5 +19,19 @@ int main(void) {
1819 u.f = 3 .14f ;
1920 assert (u.f == 3 .14f );
2021
22+ unsigned char buf[sizeof (union basic)];
23+ memset (buf, 0 , sizeof (buf));
24+ union basic *ru = reinterpret_cast <union basic *>(buf);
25+ int *pi = &ru->i ;
26+ float *pf = &ru->f ;
27+
28+ ru->i = 7 ;
29+ assert (*pi == 7 );
30+
31+ *pi = 0x3F800000 ;
32+ assert (ru->i == 0x3F800000 );
33+ assert (*pf == 1 .0f );
34+ assert (buf[3 ] == 0x3F );
35+
2136 return 0 ;
2237}
You can’t perform that action at this time.
0 commit comments