File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2235,7 +2235,7 @@ void Converter::ConvertBinaryOperator(clang::BinaryOperator *expr) {
22352235 auto op = opcode_as_string;
22362236 op.remove_suffix (1 ); // remove '=' from operator
22372237 StrCat (op);
2238- Convert (rhs);
2238+ Convert (rhs, computation_result_type );
22392239 }
22402240 if (lhs_type->isBooleanType ()) {
22412241 StrCat (token::kDiff , token::kZero );
Original file line number Diff line number Diff line change @@ -211,5 +211,14 @@ fn main_0() -> i32 {
211211 ( ( ( * sz. borrow ( ) ) as isize ) - ( ( * ul. borrow ( ) ) as isize ) ) ,
212212 ) ) ;
213213 assert ! ( ( ( * delta. borrow( ) ) == 11_isize ) ) ;
214+ let a64: Value < i64 > = Rc :: new ( RefCell :: new ( 100_i64 ) ) ;
215+ let b: Value < isize > = Rc :: new ( RefCell :: new ( 30_isize ) ) ;
216+ ( * a64. borrow_mut ( ) ) -= ( ( * b. borrow ( ) ) as i64 ) ;
217+ assert ! ( ( ( * a64. borrow( ) ) == 70_i64 ) ) ;
218+ ( * a64. borrow_mut ( ) ) += ( ( * b. borrow ( ) ) as i64 ) ;
219+ assert ! ( ( ( * a64. borrow( ) ) == 100_i64 ) ) ;
220+ let c: Value < isize > = Rc :: new ( RefCell :: new ( ( -20_i32 as isize ) ) ) ;
221+ ( * a64. borrow_mut ( ) ) -= ( ( * c. borrow ( ) ) as i64 ) ;
222+ assert ! ( ( ( * a64. borrow( ) ) == 120_i64 ) ) ;
214223 return ( ( ( * n. borrow ( ) ) . wrapping_rem ( 7_usize ) ) as i32 ) ;
215224}
Original file line number Diff line number Diff line change @@ -156,5 +156,14 @@ unsafe fn main_0() -> i32 {
156156 assert ! ( ( ( smax) == ( 15_isize ) ) ) ;
157157 let mut delta: isize = ( ( sz as isize ) - ( ul as isize ) ) ;
158158 assert ! ( ( ( delta) == ( 11_isize ) ) ) ;
159+ let mut a64: i64 = 100_i64 ;
160+ let mut b: isize = 30_isize ;
161+ a64 -= ( b as i64 ) ;
162+ assert ! ( ( ( a64) == ( 70_i64 ) ) ) ;
163+ a64 += ( b as i64 ) ;
164+ assert ! ( ( ( a64) == ( 100_i64 ) ) ) ;
165+ let mut c: isize = ( -20_i32 as isize ) ;
166+ a64 -= ( c as i64 ) ;
167+ assert ! ( ( ( a64) == ( 120_i64 ) ) ) ;
159168 return ( ( ( n) . wrapping_rem ( 7_usize ) ) as i32 ) ;
160169}
Original file line number Diff line number Diff line change @@ -85,5 +85,16 @@ int main() {
8585 ssize_t delta = (ssize_t )sz - (ssize_t )ul;
8686 assert (delta == 11 );
8787
88+ typedef long long ll_t ;
89+ ll_t a64 = 100 ;
90+ ssize_t b = 30 ;
91+ a64 -= b;
92+ assert (a64 == 70 );
93+ a64 += b;
94+ assert (a64 == 100 );
95+ ssize_t c = -20 ;
96+ a64 -= c;
97+ assert (a64 == 120 );
98+
8899 return (int )(n % 7 );
89100}
You can’t perform that action at this time.
0 commit comments