Skip to content

Commit 3dd34de

Browse files
committed
Update expected output
1 parent 056421b commit 3dd34de

25 files changed

Lines changed: 1635 additions & 0 deletions
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
extern crate libcc2rs;
2+
use libcc2rs::*;
3+
use std::cell::RefCell;
4+
use std::collections::BTreeMap;
5+
use std::io::prelude::*;
6+
use std::io::{Read, Seek, Write};
7+
use std::os::fd::AsFd;
8+
use std::rc::{Rc, Weak};
9+
#[derive()]
10+
pub struct shape_a {
11+
pub code: Value<u16>,
12+
pub pad: Value<Box<[u8]>>,
13+
}
14+
impl ByteRepr for shape_a {}
15+
#[derive()]
16+
pub struct shape_b {
17+
pub code: Value<u16>,
18+
pub lo: Value<u16>,
19+
pub mid: Value<u32>,
20+
pub fill: Value<Box<[u8]>>,
21+
pub tail: Value<u32>,
22+
}
23+
impl ByteRepr for shape_b {}
24+
#[derive()]
25+
pub struct Container_anon_0 {
26+
pub a: Value<shape_a>,
27+
pub b: Value<shape_b>,
28+
pub raw_: Value<Box<[u8]>>,
29+
}
30+
impl ByteRepr for Container_anon_0 {}
31+
#[derive(Default)]
32+
pub struct Container {
33+
pub len: Value<u32>,
34+
pub u: Value<Container_anon_0>,
35+
}
36+
impl ByteRepr for Container {}
37+
pub fn main() {
38+
std::process::exit(main_0());
39+
}
40+
fn main_0() -> i32 {
41+
let c: Value<Container> = <Value<Container>>::default();
42+
{
43+
((c.as_pointer()) as Ptr<Container>).to_any().memset(
44+
(0) as u8,
45+
::std::mem::size_of::<Container>() as u64 as usize,
46+
);
47+
((c.as_pointer()) as Ptr<Container>).to_any().clone()
48+
};
49+
(*(*(*(*c.borrow()).u.borrow()).a.borrow()).code.borrow_mut()) = 10_u16;
50+
(*(*c.borrow()).len.borrow_mut()) = (::std::mem::size_of::<shape_b>() as u64 as u32);
51+
(*(*((((*(*c.borrow()).u.borrow()).a.as_pointer())
52+
.to_strong()
53+
.as_pointer() as AnyPtr)
54+
.cast::<shape_b>()
55+
.expect("ub:wrong type"))
56+
.upgrade()
57+
.deref())
58+
.tail
59+
.borrow_mut()) = 3735928559_u32;
60+
assert!(((*(*(*(*c.borrow()).u.borrow()).b.borrow()).tail.borrow()) == 3735928559_u32));
61+
assert!((((*(*(*(*c.borrow()).u.borrow()).b.borrow()).code.borrow()) as i32) == 10));
62+
(*(*(*(*c.borrow()).u.borrow()).b.borrow()).lo.borrow_mut()) = 8080_u16;
63+
assert!(
64+
((((((*(*c.borrow()).u.borrow()).raw_.as_pointer())
65+
.to_strong()
66+
.as_pointer() as Ptr::<u8>)
67+
.offset((2) as isize)
68+
.read()) as i32)
69+
== 144)
70+
);
71+
assert!(
72+
((((((*(*c.borrow()).u.borrow()).raw_.as_pointer())
73+
.to_strong()
74+
.as_pointer() as Ptr::<u8>)
75+
.offset((3) as isize)
76+
.read()) as i32)
77+
== 31)
78+
);
79+
return 0;
80+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
extern crate libcc2rs;
2+
use libcc2rs::*;
3+
use std::cell::RefCell;
4+
use std::collections::BTreeMap;
5+
use std::io::prelude::*;
6+
use std::io::{Read, Seek, Write};
7+
use std::os::fd::AsFd;
8+
use std::rc::{Rc, Weak};
9+
#[derive()]
10+
pub struct node_anon_0 {
11+
pub bytes: Value<Box<[u8]>>,
12+
pub aligner: Value<AnyPtr>,
13+
}
14+
impl ByteRepr for node_anon_0 {}
15+
#[derive(Default)]
16+
pub struct node {
17+
pub next: Value<Ptr<node>>,
18+
pub x: Value<node_anon_0>,
19+
}
20+
impl ByteRepr for node {}
21+
pub fn main() {
22+
std::process::exit(main_0());
23+
}
24+
fn main_0() -> i32 {
25+
let n: Value<node> = <Value<node>>::default();
26+
(*(*n.borrow()).next.borrow_mut()) = Default::default();
27+
(*(*(*n.borrow()).x.borrow()).bytes.borrow_mut())[(0) as usize] = 171_u8;
28+
assert!((((*(*(*n.borrow()).x.borrow()).bytes.borrow())[(0) as usize] as i32) == 171));
29+
return 0;
30+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
extern crate libcc2rs;
2+
use libcc2rs::*;
3+
use std::cell::RefCell;
4+
use std::collections::BTreeMap;
5+
use std::io::prelude::*;
6+
use std::io::{Read, Seek, Write};
7+
use std::os::fd::AsFd;
8+
use std::rc::{Rc, Weak};
9+
#[derive()]
10+
pub struct node_anon_0 {
11+
pub bytes: Value<Box<[u8]>>,
12+
pub aligner: Value<AnyPtr>,
13+
}
14+
impl ByteRepr for node_anon_0 {}
15+
#[derive(Default)]
16+
pub struct node {
17+
pub len: Value<u64>,
18+
pub x: Value<node_anon_0>,
19+
}
20+
impl ByteRepr for node {}
21+
pub fn main() {
22+
std::process::exit(main_0());
23+
}
24+
fn main_0() -> i32 {
25+
let tail_size: Value<u64> = Rc::new(RefCell::new(32_u64));
26+
let n: Value<Ptr<node>> = Rc::new(RefCell::new(
27+
({
28+
let ___size: u64 =
29+
(::std::mem::size_of::<node>() as u64 as u64).wrapping_add((*tail_size.borrow()));
30+
malloc_0(___size)
31+
})
32+
.cast::<node>()
33+
.expect("ub:wrong type"),
34+
));
35+
(*(*(*n.borrow()).upgrade().deref()).len.borrow_mut()) = (*tail_size.borrow());
36+
let i: Value<u64> = Rc::new(RefCell::new(0_u64));
37+
'loop_: while ((*i.borrow()) < (*tail_size.borrow())) {
38+
let __rhs = ((((*i.borrow()) & 255_u64) as u64) as u8);
39+
(*(*(*(*n.borrow()).upgrade().deref()).x.borrow())
40+
.bytes
41+
.borrow_mut())[(*i.borrow()) as usize] = __rhs;
42+
(*i.borrow_mut()).postfix_inc();
43+
}
44+
let i: Value<u64> = Rc::new(RefCell::new(0_u64));
45+
'loop_: while ((*i.borrow()) < (*tail_size.borrow())) {
46+
assert!({
47+
let _lhs = ((*(*(*(*n.borrow()).upgrade().deref()).x.borrow())
48+
.bytes
49+
.borrow())[(*i.borrow()) as usize] as i32);
50+
_lhs == (((((*i.borrow()) & 255_u64) as u64) as u8) as i32)
51+
});
52+
(*i.borrow_mut()).postfix_inc();
53+
}
54+
let p: Value<Ptr<u8>> = Rc::new(RefCell::new(
55+
(((*(*(*n.borrow()).upgrade().deref()).x.borrow())
56+
.bytes
57+
.as_pointer() as Ptr<u8>)
58+
.offset(10 as isize)),
59+
));
60+
assert!(((((*p.borrow()).read()) as i32) == 10));
61+
(*p.borrow()).write(170_u8);
62+
assert!(
63+
(((*(*(*(*n.borrow()).upgrade().deref()).x.borrow())
64+
.bytes
65+
.borrow())[(10) as usize] as i32)
66+
== 170)
67+
);
68+
({
69+
let ___ptr: AnyPtr = ((*n.borrow()).clone() as Ptr<node>).to_any();
70+
free_1(___ptr)
71+
});
72+
return 0;
73+
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
extern crate libcc2rs;
2+
use libcc2rs::*;
3+
use std::cell::RefCell;
4+
use std::collections::BTreeMap;
5+
use std::io::prelude::*;
6+
use std::io::{Read, Seek, Write};
7+
use std::os::fd::AsFd;
8+
use std::rc::{Rc, Weak};
9+
#[derive()]
10+
pub struct shape_a {
11+
pub code: Value<u16>,
12+
pub pad: Value<Box<[u8]>>,
13+
}
14+
impl ByteRepr for shape_a {}
15+
#[derive()]
16+
pub struct shape_b {
17+
pub code: Value<u16>,
18+
pub lo: Value<u16>,
19+
pub hi: Value<u32>,
20+
pub fill: Value<Box<[u8]>>,
21+
}
22+
impl ByteRepr for shape_b {}
23+
#[derive()]
24+
pub struct Container_anon_0 {
25+
pub a: Value<shape_a>,
26+
pub b: Value<shape_b>,
27+
pub raw_: Value<Box<[u8]>>,
28+
}
29+
impl ByteRepr for Container_anon_0 {}
30+
#[derive(Default)]
31+
pub struct Container {
32+
pub view: Value<Container_anon_0>,
33+
}
34+
impl ByteRepr for Container {}
35+
pub fn main() {
36+
std::process::exit(main_0());
37+
}
38+
fn main_0() -> i32 {
39+
let c: Value<Container> = <Value<Container>>::default();
40+
{
41+
((c.as_pointer()) as Ptr<Container>).to_any().memset(
42+
(0) as u8,
43+
::std::mem::size_of::<Container>() as u64 as usize,
44+
);
45+
((c.as_pointer()) as Ptr<Container>).to_any().clone()
46+
};
47+
assert!((((*(*(*(*c.borrow()).view.borrow()).a.borrow()).code.borrow()) as i32) == 0));
48+
assert!((((*(*(*(*c.borrow()).view.borrow()).b.borrow()).lo.borrow()) as i32) == 0));
49+
assert!((((*(*(*c.borrow()).view.borrow()).raw_.borrow())[(0) as usize] as i32) == 0));
50+
assert!((((*(*(*c.borrow()).view.borrow()).raw_.borrow())[(255) as usize] as i32) == 0));
51+
let src: Value<Box<[u8]>> = Rc::new(RefCell::new(Box::new([
52+
0_u8,
53+
<u8>::default(),
54+
<u8>::default(),
55+
<u8>::default(),
56+
<u8>::default(),
57+
<u8>::default(),
58+
<u8>::default(),
59+
<u8>::default(),
60+
<u8>::default(),
61+
<u8>::default(),
62+
<u8>::default(),
63+
<u8>::default(),
64+
<u8>::default(),
65+
<u8>::default(),
66+
<u8>::default(),
67+
<u8>::default(),
68+
])));
69+
(*src.borrow_mut())[(0) as usize] = 2_u8;
70+
(*src.borrow_mut())[(2) as usize] = 80_u8;
71+
(*src.borrow_mut())[(3) as usize] = 0_u8;
72+
(*src.borrow_mut())[(4) as usize] = 127_u8;
73+
(*src.borrow_mut())[(5) as usize] = 0_u8;
74+
(*src.borrow_mut())[(6) as usize] = 0_u8;
75+
(*src.borrow_mut())[(7) as usize] = 1_u8;
76+
let len: Value<u64> = Rc::new(RefCell::new(16_u64));
77+
assert!(((*len.borrow()) <= ::std::mem::size_of::<[u8; 256]>() as u64));
78+
{
79+
(((*(*c.borrow()).view.borrow()).raw_.as_pointer()) as Ptr<u8>)
80+
.to_any()
81+
.memcpy(
82+
&((src.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
83+
(*len.borrow()) as usize,
84+
);
85+
(((*(*c.borrow()).view.borrow()).raw_.as_pointer()) as Ptr<u8>)
86+
.to_any()
87+
.clone()
88+
};
89+
assert!((((*(*(*(*c.borrow()).view.borrow()).b.borrow()).code.borrow()) as i32) == 2));
90+
assert!(
91+
((((((*(*(*c.borrow()).view.borrow()).b.borrow()).lo.as_pointer())
92+
.to_strong()
93+
.as_pointer() as Ptr::<u8>)
94+
.offset((0) as isize)
95+
.read()) as i32)
96+
== 80)
97+
);
98+
{
99+
((c.as_pointer()) as Ptr<Container>).to_any().memset(
100+
(0) as u8,
101+
::std::mem::size_of::<Container>() as u64 as usize,
102+
);
103+
((c.as_pointer()) as Ptr<Container>).to_any().clone()
104+
};
105+
assert!((((*(*(*(*c.borrow()).view.borrow()).b.borrow()).code.borrow()) as i32) == 0));
106+
return 0;
107+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
extern crate libcc2rs;
2+
use libcc2rs::*;
3+
use std::cell::RefCell;
4+
use std::collections::BTreeMap;
5+
use std::io::prelude::*;
6+
use std::io::{Read, Seek, Write};
7+
use std::os::fd::AsFd;
8+
use std::rc::{Rc, Weak};
9+
#[derive()]
10+
pub struct record {
11+
pub code: Value<u16>,
12+
pub pad: Value<Box<[u8]>>,
13+
}
14+
impl ByteRepr for record {}
15+
#[derive()]
16+
pub struct inner_anon_0 {
17+
pub h: Value<record>,
18+
pub raw_: Value<Box<[u8]>>,
19+
}
20+
impl ByteRepr for inner_anon_0 {}
21+
#[derive(Default)]
22+
pub struct inner {
23+
pub view: Value<inner_anon_0>,
24+
}
25+
impl ByteRepr for inner {}
26+
#[derive(Default)]
27+
pub struct Outer_anon_0 {
28+
pub h: Value<record>,
29+
pub nested: Value<inner>,
30+
}
31+
impl ByteRepr for Outer_anon_0 {}
32+
#[derive(Default)]
33+
pub struct Outer {
34+
pub kind: Value<i32>,
35+
pub level: Value<i32>,
36+
pub variant: Value<i32>,
37+
pub len: Value<u32>,
38+
pub body: Value<Outer_anon_0>,
39+
}
40+
impl ByteRepr for Outer {}
41+
pub fn main() {
42+
std::process::exit(main_0());
43+
}
44+
fn main_0() -> i32 {
45+
let ex: Value<Outer> = <Value<Outer>>::default();
46+
{
47+
((ex.as_pointer()) as Ptr<Outer>)
48+
.to_any()
49+
.memset((0) as u8, ::std::mem::size_of::<Outer>() as u64 as usize);
50+
((ex.as_pointer()) as Ptr<Outer>).to_any().clone()
51+
};
52+
(*(*ex.borrow()).kind.borrow_mut()) = 2;
53+
(*(*ex.borrow()).level.borrow_mut()) = 1;
54+
(*(*ex.borrow()).variant.borrow_mut()) = 6;
55+
(*(*ex.borrow()).len.borrow_mut()) = (::std::mem::size_of::<record>() as u64 as u32);
56+
(*(*(*(*ex.borrow()).body.borrow()).h.borrow())
57+
.code
58+
.borrow_mut()) = 2_u16;
59+
(*(*(*(*ex.borrow()).body.borrow()).h.borrow())
60+
.pad
61+
.borrow_mut())[(0) as usize] = (('X' as i32) as u8);
62+
assert!((((*(*(*(*ex.borrow()).body.borrow()).h.borrow()).code.borrow()) as i32) == 2));
63+
assert!(
64+
(((*(*(*(*ex.borrow()).body.borrow()).h.borrow()).pad.borrow())[(0) as usize] as i32)
65+
== ('X' as i32))
66+
);
67+
assert!(
68+
(((*(*(*(*(*(*ex.borrow()).body.borrow()).nested.borrow())
69+
.view
70+
.borrow())
71+
.h
72+
.borrow())
73+
.code
74+
.borrow()) as i32)
75+
== 2)
76+
);
77+
return 0;
78+
}

0 commit comments

Comments
 (0)