Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cpp2rust/converter/converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1635,7 +1635,7 @@ Converter::CallInfo Converter::CollectCallInfo(clang::CallExpr *expr) {
: proto->getParamType(i),
.expr = arg,
.has_default = function && function->getParamDecl(i)->hasDefaultArg(),
.kind = Kind::Hoisted,
.kind = IsLiteral(arg) ? Kind::Inline : Kind::Hoisted,
};
bool is_materialize = clang::isa<clang::MaterializeTemporaryExpr>(arg);
if (is_materialize && ca.param_type->isLValueReferenceType()) {
Expand Down
8 changes: 8 additions & 0 deletions cpp2rust/converter/converter_lib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,14 @@ bool IsAsciiStringLiteral(const clang::StringLiteral *str) {
return true;
}

bool IsLiteral(const clang::Expr *expr) {
expr = expr->IgnoreParenImpCasts();
return clang::isa<clang::IntegerLiteral, clang::FloatingLiteral,
clang::StringLiteral, clang::CharacterLiteral,
clang::CXXBoolLiteralExpr, clang::FixedPointLiteral,
clang::ImaginaryLiteral>(expr);
}

bool IsInitExprOfStringLiteral(const clang::InitListExpr *expr) {
auto type = expr->getType();
return expr->getNumInits() == 1 && type->isArrayType() &&
Expand Down
2 changes: 2 additions & 0 deletions cpp2rust/converter/converter_lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ bool IsAsciiStringLiteral(const clang::StringLiteral *str);

bool IsInitExprOfStringLiteral(const clang::InitListExpr *expr);

bool IsLiteral(const clang::Expr *expr);

std::vector<clang::CXXConstructorDecl *>
GetTemplateInstantiatedCtors(clang::CXXRecordDecl *decl);

Expand Down
3 changes: 1 addition & 2 deletions tests/benchmarks/out/refcount/bfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,7 @@ fn main_0() -> i32 {
let pred: Value<Ptr<u32>> = Rc::new(RefCell::new(
({
let _graph: Ptr<Graph> = graph.as_pointer();
let _start_vertex: u32 = 0_u32;
BFS_0(_graph, _start_vertex)
BFS_0(_graph, 0_u32)
}),
));
let i: Value<u32> = Rc::new(RefCell::new(0_u32));
Expand Down
5 changes: 1 addition & 4 deletions tests/benchmarks/out/refcount/fibonacci.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,5 @@ pub fn main() {
std::process::exit(main_0());
}
fn main_0() -> i32 {
return (({
let _n: u64 = 46_u64;
fib_0(_n)
}) as i32);
return (({ fib_0(46_u64) }) as i32);
}
3 changes: 1 addition & 2 deletions tests/benchmarks/out/unsafe/bfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,7 @@ unsafe fn main_0() -> i32 {
}
let mut pred: *mut u32 = (unsafe {
let _graph: *const Graph = &graph as *const Graph;
let _start_vertex: u32 = 0_u32;
BFS_0(_graph, _start_vertex)
BFS_0(_graph, 0_u32)
});
let mut i: u32 = 0_u32;
'loop_: while ((i as u64) < (V)) {
Expand Down
5 changes: 1 addition & 4 deletions tests/benchmarks/out/unsafe/fibonacci.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,5 @@ pub fn main() {
}
}
unsafe fn main_0() -> i32 {
return ((unsafe {
let _n: u64 = 46_u64;
fib_0(_n)
}) as i32);
return ((unsafe { fib_0(46_u64) }) as i32);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@ pub fn main() {
std::process::exit(main_0());
}
fn main_0() -> i32 {
assert!(
(((({
let _x: i32 = 42;
helper_0(_x)
}) == 43) as i32)
!= 0)
);
assert!((((({ helper_0(42,) }) == 43) as i32) != 0));
return 0;
}
pub fn unrelated1_1() -> i32 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ pub fn main() {
}
}
unsafe fn main_0() -> i32 {
assert!(
((((unsafe {
let _x: i32 = 42;
helper_0(_x)
}) == (43)) as i32)
!= 0)
);
assert!(((((unsafe { helper_0(42,) }) == (43)) as i32) != 0));
return 0;
}
pub unsafe fn unrelated1_1() -> i32 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@ pub fn main() {
std::process::exit(main_0());
}
fn main_0() -> i32 {
assert!(
(((({
let _x: i32 = 42;
helper_0(_x)
}) == 43) as i32)
!= 0)
);
assert!((((({ helper_0(42,) }) == 43) as i32) != 0));
return 0;
}
pub fn unrelated1_1() -> i32 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ pub fn main() {
}
}
unsafe fn main_0() -> i32 {
assert!(
((((unsafe {
let _x: i32 = 42;
helper_0(_x)
}) == (43)) as i32)
!= 0)
);
assert!(((((unsafe { helper_0(42,) }) == (43)) as i32) != 0));
return 0;
}
pub unsafe fn unrelated1_1() -> i32 {
Expand Down
3 changes: 1 addition & 2 deletions tests/unit/out/refcount/alloc_array.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ fn main_0() -> i32 {
({
let _arr: Ptr<Option<Value<Box<[i32]>>>> = arr.as_pointer();
let _N: i32 = (*N.borrow());
let _element: i32 = 1;
All_0(_arr, _N, _element)
All_0(_arr, _N, 1)
});
return ({
let _arr: Option<Value<Box<[i32]>>> = (*arr.borrow_mut()).take();
Expand Down
14 changes: 2 additions & 12 deletions tests/unit/out/refcount/bool_condition_logical.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,21 +67,11 @@ fn main_0() -> i32 {
assert!(true);
}
(*side_effect_0.with(Value::clone).borrow_mut()) = 0;
if ((*zero.borrow()) != 0)
&& (({
let _v: i32 = 1;
observe_1(_v)
}) != 0)
{
if ((*zero.borrow()) != 0) && (({ observe_1(1) }) != 0) {
assert!(false);
}
assert!(((*side_effect_0.with(Value::clone).borrow()) == 0));
if ((*n.borrow()) != 0)
|| (({
let _v: i32 = 1;
observe_1(_v)
}) != 0)
{
if ((*n.borrow()) != 0) || (({ observe_1(1) }) != 0) {
assert!(true);
}
assert!(((*side_effect_0.with(Value::clone).borrow()) == 0));
Expand Down
16 changes: 2 additions & 14 deletions tests/unit/out/refcount/bool_condition_logical_c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,23 +71,11 @@ fn main_0() -> i32 {
assert!((1 != 0));
}
(*side_effect_0.with(Value::clone).borrow_mut()) = 0;
if (((((*zero.borrow()) != 0)
&& (({
let _v: i32 = 1;
observe_1(_v)
}) != 0)) as i32)
!= 0)
{
if (((((*zero.borrow()) != 0) && (({ observe_1(1) }) != 0)) as i32) != 0) {
assert!((0 != 0));
}
assert!(((((*side_effect_0.with(Value::clone).borrow()) == 0) as i32) != 0));
if (((((*n.borrow()) != 0)
|| (({
let _v: i32 = 1;
observe_1(_v)
}) != 0)) as i32)
!= 0)
{
if (((((*n.borrow()) != 0) || (({ observe_1(1) }) != 0)) as i32) != 0) {
assert!((1 != 0));
}
assert!(((((*side_effect_0.with(Value::clone).borrow()) == 0) as i32) != 0));
Expand Down
5 changes: 1 addition & 4 deletions tests/unit/out/refcount/break.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,5 @@ pub fn main() {
std::process::exit(main_0());
}
fn main_0() -> i32 {
return ({
let _n: i32 = 200;
for_test_0(_n)
});
return ({ for_test_0(200) });
}
18 changes: 6 additions & 12 deletions tests/unit/out/refcount/bst.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,7 @@ fn main_0() -> i32 {
(*ptr1.borrow_mut()) = __rhs;
return ((((((((*(*({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 0;
find_0(_node, _value)
find_0(_node, 0)
})
.upgrade()
.deref())
Expand All @@ -156,8 +155,7 @@ fn main_0() -> i32 {
== 0)
&& ((*(*({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 1;
find_0(_node, _value)
find_0(_node, 1)
})
.upgrade()
.deref())
Expand All @@ -166,8 +164,7 @@ fn main_0() -> i32 {
== 1))
&& ((*(*({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 2;
find_0(_node, _value)
find_0(_node, 2)
})
.upgrade()
.deref())
Expand All @@ -176,8 +173,7 @@ fn main_0() -> i32 {
== 2))
&& ((*(*({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 3;
find_0(_node, _value)
find_0(_node, 3)
})
.upgrade()
.deref())
Expand All @@ -186,8 +182,7 @@ fn main_0() -> i32 {
== 3))
&& ((*(*({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 4;
find_0(_node, _value)
find_0(_node, 4)
})
.upgrade()
.deref())
Expand All @@ -196,8 +191,7 @@ fn main_0() -> i32 {
== 4))
&& (({
let _node: Ptr<node_t> = (*ptr1.borrow()).clone();
let _value: i32 = 5;
find_0(_node, _value)
find_0(_node, 5)
})
.is_null())) as i32);
}
10 changes: 2 additions & 8 deletions tests/unit/out/refcount/class.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,7 @@ impl ByteRepr for Route {}
pub fn RandomRoute_0(route: Ptr<Route>) -> i32 {
if (((*(*(*route.upgrade().deref()).path.borrow()).first.borrow()) % 2) != 0) {
return ({
let _new_first: i32 = ({
let _new_second: i32 = 10;
(*(*route.upgrade().deref()).path.borrow()).SetSecond(_new_second)
});
let _new_first: i32 = ({ (*(*route.upgrade().deref()).path.borrow()).SetSecond(10) });
(*(*route.upgrade().deref()).path.borrow()).SetFirst(_new_first)
});
} else {
Expand Down Expand Up @@ -130,10 +127,7 @@ fn main_0() -> i32 {
}));
let old_cost: Value<f64> = Rc::new(RefCell::new(
({
let _new_cost: f64 = ({
let _new_cost: f64 = 15_f64;
(*route2.borrow()).SetCost(_new_cost)
});
let _new_cost: f64 = ({ (*route2.borrow()).SetCost(15_f64) });
(*route1.borrow()).SetCost(_new_cost)
}),
));
Expand Down
Loading
Loading