Skip to content

Commit 7737842

Browse files
committed
transpile: Correct uses of used in operators.rs
1 parent d548c5c commit 7737842

3 files changed

Lines changed: 36 additions & 37 deletions

File tree

c2rust-transpile/src/translator/operators.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ impl<'c> Translation<'c> {
212212
)))
213213
} else {
214214
let lhs = self.convert_cast(
215-
ctx,
215+
ctx.used(),
216216
initial_lhs_type_id,
217217
compute_lhs_type_id,
218218
WithStmts::new_val(read.clone()),
@@ -234,8 +234,15 @@ impl<'c> Translation<'c> {
234234
)
235235
})?;
236236

237-
let val =
238-
self.convert_cast(ctx, compute_res_type_id, lhs_type_id, val, None, None, None)?;
237+
let val = self.convert_cast(
238+
ctx.used(),
239+
compute_res_type_id,
240+
lhs_type_id,
241+
val,
242+
None,
243+
None,
244+
None,
245+
)?;
239246

240247
Ok(val.map(|val| mk().assign_expr(write.clone(), val)))
241248
}
@@ -424,7 +431,7 @@ impl<'c> Translation<'c> {
424431
.expect("Cannot convert non-assignment operator");
425432

426433
let lhs = self.convert_cast(
427-
ctx,
434+
ctx.used(),
428435
initial_lhs_type_id,
429436
expr_or_comp_type_id,
430437
WithStmts::new_val(read.clone()),
@@ -447,7 +454,7 @@ impl<'c> Translation<'c> {
447454
)?;
448455

449456
let val = self.convert_cast(
450-
ctx,
457+
ctx.used(),
451458
result_type_id,
452459
expr_type_id,
453460
val,
@@ -650,7 +657,7 @@ impl<'c> Translation<'c> {
650657
};
651658

652659
self.convert_assignment_operator_with_rhs(
653-
ctx.used(),
660+
ctx,
654661
op,
655662
ty,
656663
arg,
@@ -789,7 +796,7 @@ impl<'c> Translation<'c> {
789796
.map(|a| mk().unary_expr(UnOp::Not(Default::default()), a))),
790797

791798
CUnOp::Not => {
792-
let val = self.convert_condition(ctx, false, arg)?;
799+
let val = self.convert_condition(ctx.used(), false, arg)?;
793800
Ok(val.map(|x| mk().cast_expr(x, mk().abs_path_ty(vec!["core", "ffi", "c_int"]))))
794801
}
795802
CUnOp::Extension => {

c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2021.clang15.snap

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,27 +75,23 @@ pub unsafe extern "C" fn inc_decl_with_rvalue_side_effect() {
7575
}
7676
#[no_mangle]
7777
pub unsafe extern "C" fn inc_decl_with_lvalue_side_effect() {
78+
*lvalue_side_effect() += 1;
79+
*lvalue_side_effect() -= 1;
80+
*lvalue_side_effect() += 1;
81+
*lvalue_side_effect() -= 1;
7882
let ref mut c2rust_side_effects = *lvalue_side_effect();
7983
*c2rust_side_effects += 1;
84+
let mut pre_inc: ::core::ffi::c_int = *c2rust_side_effects;
8085
let ref mut c2rust_side_effects_0 = *lvalue_side_effect();
8186
*c2rust_side_effects_0 -= 1;
87+
let mut pre_dec: ::core::ffi::c_int = *c2rust_side_effects_0;
8288
let ref mut c2rust_side_effects_1 = *lvalue_side_effect();
83-
*c2rust_side_effects_1 += 1;
84-
let ref mut c2rust_side_effects_2 = *lvalue_side_effect();
85-
*c2rust_side_effects_2 -= 1;
86-
let ref mut c2rust_side_effects_3 = *lvalue_side_effect();
87-
*c2rust_side_effects_3 += 1;
88-
let mut pre_inc: ::core::ffi::c_int = *c2rust_side_effects_3;
89-
let ref mut c2rust_side_effects_4 = *lvalue_side_effect();
90-
*c2rust_side_effects_4 -= 1;
91-
let mut pre_dec: ::core::ffi::c_int = *c2rust_side_effects_4;
92-
let ref mut c2rust_side_effects_5 = *lvalue_side_effect();
93-
let c2rust_fresh2 = *c2rust_side_effects_5;
94-
*c2rust_side_effects_5 = *c2rust_side_effects_5 + 1;
89+
let c2rust_fresh2 = *c2rust_side_effects_1;
90+
*c2rust_side_effects_1 = *c2rust_side_effects_1 + 1;
9591
let mut post_inc: ::core::ffi::c_int = c2rust_fresh2;
96-
let ref mut c2rust_side_effects_6 = *lvalue_side_effect();
97-
let c2rust_fresh3 = *c2rust_side_effects_6;
98-
*c2rust_side_effects_6 = *c2rust_side_effects_6 - 1;
92+
let ref mut c2rust_side_effects_2 = *lvalue_side_effect();
93+
let c2rust_fresh3 = *c2rust_side_effects_2;
94+
*c2rust_side_effects_2 = *c2rust_side_effects_2 - 1;
9995
let mut post_dec: ::core::ffi::c_int = c2rust_fresh3;
10096
}
10197
#[no_mangle]

c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.clang15.snap

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,27 +75,23 @@ pub unsafe extern "C" fn inc_decl_with_rvalue_side_effect() {
7575
}
7676
#[unsafe(no_mangle)]
7777
pub unsafe extern "C" fn inc_decl_with_lvalue_side_effect() {
78+
*lvalue_side_effect() += 1;
79+
*lvalue_side_effect() -= 1;
80+
*lvalue_side_effect() += 1;
81+
*lvalue_side_effect() -= 1;
7882
let ref mut c2rust_side_effects = *lvalue_side_effect();
7983
*c2rust_side_effects += 1;
84+
let mut pre_inc: ::core::ffi::c_int = *c2rust_side_effects;
8085
let ref mut c2rust_side_effects_0 = *lvalue_side_effect();
8186
*c2rust_side_effects_0 -= 1;
87+
let mut pre_dec: ::core::ffi::c_int = *c2rust_side_effects_0;
8288
let ref mut c2rust_side_effects_1 = *lvalue_side_effect();
83-
*c2rust_side_effects_1 += 1;
84-
let ref mut c2rust_side_effects_2 = *lvalue_side_effect();
85-
*c2rust_side_effects_2 -= 1;
86-
let ref mut c2rust_side_effects_3 = *lvalue_side_effect();
87-
*c2rust_side_effects_3 += 1;
88-
let mut pre_inc: ::core::ffi::c_int = *c2rust_side_effects_3;
89-
let ref mut c2rust_side_effects_4 = *lvalue_side_effect();
90-
*c2rust_side_effects_4 -= 1;
91-
let mut pre_dec: ::core::ffi::c_int = *c2rust_side_effects_4;
92-
let ref mut c2rust_side_effects_5 = *lvalue_side_effect();
93-
let c2rust_fresh2 = *c2rust_side_effects_5;
94-
*c2rust_side_effects_5 = *c2rust_side_effects_5 + 1;
89+
let c2rust_fresh2 = *c2rust_side_effects_1;
90+
*c2rust_side_effects_1 = *c2rust_side_effects_1 + 1;
9591
let mut post_inc: ::core::ffi::c_int = c2rust_fresh2;
96-
let ref mut c2rust_side_effects_6 = *lvalue_side_effect();
97-
let c2rust_fresh3 = *c2rust_side_effects_6;
98-
*c2rust_side_effects_6 = *c2rust_side_effects_6 - 1;
92+
let ref mut c2rust_side_effects_2 = *lvalue_side_effect();
93+
let c2rust_fresh3 = *c2rust_side_effects_2;
94+
*c2rust_side_effects_2 = *c2rust_side_effects_2 - 1;
9995
let mut post_dec: ::core::ffi::c_int = c2rust_fresh3;
10096
}
10197
#[unsafe(no_mangle)]

0 commit comments

Comments
 (0)