@@ -29,8 +29,8 @@ impl<'c> Translation<'c> {
2929 rotate_method_name : & ' static str ,
3030 ) -> TranslationResult < WithStmts < Box < Expr > > > {
3131 // Emit `arg0.{method_name}(arg1)`
32- let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
33- let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
32+ let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
33+ let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
3434 arg0. and_then ( |arg0| {
3535 arg1. and_then ( |arg1| {
3636 let arg1 = mk ( ) . cast_expr ( arg1, mk ( ) . path_ty ( vec ! [ "u32" ] ) ) ;
@@ -105,7 +105,7 @@ impl<'c> Translation<'c> {
105105 } ) ;
106106 }
107107
108- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
108+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
109109
110110 Ok ( val. map ( |v| {
111111 let val = mk ( ) . method_call_expr ( v, "is_sign_negative" , vec ! [ ] ) ;
@@ -114,7 +114,7 @@ impl<'c> Translation<'c> {
114114 } ) )
115115 }
116116 "__builtin_ffs" | "__builtin_ffsl" | "__builtin_ffsll" => {
117- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
117+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
118118
119119 Ok ( val. map ( |x| {
120120 let add = BinOp :: Add ( Default :: default ( ) ) ;
@@ -131,29 +131,29 @@ impl<'c> Translation<'c> {
131131 } ) )
132132 }
133133 "__builtin_clz" | "__builtin_clzl" | "__builtin_clzll" => {
134- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
134+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
135135 Ok ( val. map ( |x| {
136136 let zeros = mk ( ) . method_call_expr ( x, "leading_zeros" , vec ! [ ] ) ;
137137 mk ( ) . cast_expr ( zeros, mk ( ) . path_ty ( vec ! [ "i32" ] ) )
138138 } ) )
139139 }
140140 "__builtin_ctz" | "__builtin_ctzl" | "__builtin_ctzll" => {
141- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
141+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
142142 Ok ( val. map ( |x| {
143143 let zeros = mk ( ) . method_call_expr ( x, "trailing_zeros" , vec ! [ ] ) ;
144144 mk ( ) . cast_expr ( zeros, mk ( ) . path_ty ( vec ! [ "i32" ] ) )
145145 } ) )
146146 }
147147 "__builtin_bswap16" | "__builtin_bswap32" | "__builtin_bswap64" => {
148- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
148+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
149149 Ok ( val. map ( |x| mk ( ) . method_call_expr ( x, "swap_bytes" , vec ! [ ] ) ) )
150150 }
151151 "__builtin_fabs" | "__builtin_fabsf" | "__builtin_fabsl" => {
152- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
152+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
153153 Ok ( val. map ( |x| mk ( ) . method_call_expr ( x, "abs" , vec ! [ ] ) ) )
154154 }
155155 "__builtin_isfinite" | "__builtin_isnan" => {
156- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
156+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
157157
158158 let seg = match builtin_name {
159159 "__builtin_isfinite" => "is_finite" ,
@@ -167,7 +167,7 @@ impl<'c> Translation<'c> {
167167 }
168168 "__builtin_isinf_sign" => {
169169 // isinf_sign(x) -> fabs(x) == infinity ? (signbit(x) ? -1 : 1) : 0
170- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
170+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
171171 Ok ( val. map ( |x| {
172172 let inner_cond = mk ( ) . method_call_expr ( x. clone ( ) , "is_sign_positive" , vec ! [ ] ) ;
173173 let one = mk ( ) . lit_expr ( mk ( ) . int_lit ( 1 , "" ) ) ;
@@ -189,18 +189,18 @@ impl<'c> Translation<'c> {
189189 // https://github.com/llvm-mirror/llvm/blob/master/lib/CodeGen/IntrinsicLowering.cpp#L470
190190 Ok ( WithStmts :: new_val ( mk ( ) . lit_expr ( mk ( ) . int_lit ( 1 , "i32" ) ) ) )
191191 }
192- "__builtin_expect" => self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ,
192+ "__builtin_expect" => self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ,
193193
194194 "__builtin_popcount" | "__builtin_popcountl" | "__builtin_popcountll" => {
195- let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
195+ let val = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
196196 Ok ( val. map ( |x| {
197197 let zeros = mk ( ) . method_call_expr ( x, "count_ones" , vec ! [ ] ) ;
198198 mk ( ) . cast_expr ( zeros, mk ( ) . path_ty ( vec ! [ "i32" ] ) )
199199 } ) )
200200 }
201201 "__builtin_bzero" => {
202- let ptr_stmts = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
203- let n_stmts = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
202+ let ptr_stmts = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
203+ let n_stmts = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
204204 let write_bytes = mk ( ) . abs_path_expr ( vec ! [ "core" , "ptr" , "write_bytes" ] ) ;
205205 let zero = mk ( ) . lit_expr ( mk ( ) . int_lit ( 0 , "u8" ) ) ;
206206 ptr_stmts. and_then ( |ptr| {
@@ -211,7 +211,7 @@ impl<'c> Translation<'c> {
211211 // If the target does not support data prefetch, the address expression is evaluated if
212212 // it includes side effects but no other code is generated and GCC does not issue a warning.
213213 // void __builtin_prefetch (const void *addr, ...);
214- "__builtin_prefetch" => self . convert_expr ( ctx. unused ( ) , args[ 0 ] , None ) ,
214+ "__builtin_prefetch" => self . convert_expr ( ctx. unused ( ) , args[ 0 ] ) ,
215215
216216 "__builtin_memcpy" | "__builtin_memcmp" | "__builtin_memmove" | "__builtin_strncmp"
217217 | "__builtin_strncpy" | "__builtin_strncat" => self . convert_libc_fns (
@@ -289,8 +289,8 @@ impl<'c> Translation<'c> {
289289 // We can't convert this to Rust, but it should be safe to always return -1/0
290290 // (depending on the value of `type`), so we emit the following:
291291 // `(if (type & 2) == 0 { -1isize } else { 0isize }) as libc::size_t`
292- let ptr_arg = self . convert_expr ( ctx. unused ( ) , args[ 0 ] , None ) ?;
293- let type_arg = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
292+ let ptr_arg = self . convert_expr ( ctx. unused ( ) , args[ 0 ] ) ?;
293+ let type_arg = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
294294 ptr_arg. and_then ( |_| {
295295 Ok ( type_arg. map ( |type_arg| {
296296 let type_and_2 = mk ( ) . binary_expr (
@@ -323,7 +323,7 @@ impl<'c> Translation<'c> {
323323 if ctx. is_unused ( ) && args. len ( ) == 2 {
324324 if let Some ( va_id) = self . match_vastart ( args[ 0 ] ) {
325325 if self . ast_context . get_decl ( & va_id) . is_some ( ) {
326- let dst = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
326+ let dst = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
327327 let fn_ctx = self . function_context . borrow ( ) ;
328328 let src = fn_ctx. get_va_list_arg_name ( ) ;
329329
@@ -344,8 +344,8 @@ impl<'c> Translation<'c> {
344344 "__builtin_va_copy" => {
345345 if ctx. is_unused ( ) && args. len ( ) == 2 {
346346 if let Some ( ( _dst_va_id, _src_va_id) ) = self . match_vacopy ( args[ 0 ] , args[ 1 ] ) {
347- let dst = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
348- let src = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
347+ let dst = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
348+ let src = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
349349
350350 let call_expr = mk ( ) . method_call_expr ( src. to_expr ( ) , "clone" , vec ! [ ] ) ;
351351 let assign_expr = mk ( ) . assign_expr ( dst. to_expr ( ) , call_expr) ;
@@ -370,7 +370,7 @@ impl<'c> Translation<'c> {
370370 }
371371
372372 "__builtin_alloca" => {
373- let count = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
373+ let count = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
374374 count. and_then ( |count| {
375375 // Get `alloca` allocation storage.
376376 let mut fn_ctx = self . function_context . borrow_mut ( ) ;
@@ -536,9 +536,9 @@ impl<'c> Translation<'c> {
536536 | "__sync_bool_compare_and_swap_4"
537537 | "__sync_bool_compare_and_swap_8"
538538 | "__sync_bool_compare_and_swap_16" => {
539- let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
540- let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
541- let arg2 = self . convert_expr ( ctx. used ( ) , args[ 2 ] , None ) ?;
539+ let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
540+ let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
541+ let arg2 = self . convert_expr ( ctx. used ( ) , args[ 2 ] ) ?;
542542 arg0. and_then ( |arg0| {
543543 arg1. and_then ( |arg1| {
544544 arg2. and_then ( |arg2| {
@@ -632,8 +632,8 @@ impl<'c> Translation<'c> {
632632 "and"
633633 } ;
634634
635- let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
636- let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
635+ let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
636+ let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
637637 let fetch_first = builtin_name. starts_with ( "__sync_fetch" ) ;
638638 arg0. and_then ( |arg0| {
639639 arg1. and_then ( |arg1| {
@@ -659,8 +659,8 @@ impl<'c> Translation<'c> {
659659 | "__sync_lock_test_and_set_16" => {
660660 // Emit `atomic_xchg_acquire(arg0, arg1)`
661661 let atomic_func = self . atomic_intrinsic_expr ( "xchg" , & [ Acquire ] ) ;
662- let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
663- let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] , None ) ?;
662+ let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
663+ let arg1 = self . convert_expr ( ctx. used ( ) , args[ 1 ] ) ?;
664664 arg0. and_then ( |arg0| {
665665 arg1. and_then ( |arg1| {
666666 let call_expr = mk ( ) . call_expr ( atomic_func, vec ! [ arg0, arg1] ) ;
@@ -680,7 +680,7 @@ impl<'c> Translation<'c> {
680680 | "__sync_lock_release_16" => {
681681 // Emit `atomic_store_release(arg0, 0)`
682682 let atomic_func = self . atomic_intrinsic_expr ( "store" , & [ Release ] ) ;
683- let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?;
683+ let arg0 = self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?;
684684 arg0. and_then ( |arg0| {
685685 let zero = mk ( ) . lit_expr ( mk ( ) . int_lit ( 0 , "" ) ) ;
686686 let call_expr = mk ( ) . call_expr ( atomic_func, vec ! [ arg0, zero] ) ;
@@ -693,7 +693,7 @@ impl<'c> Translation<'c> {
693693 }
694694 // There's currently no way to replicate this functionality in Rust, so we just
695695 // pass the ptr input param in its place.
696- "__builtin_assume_aligned" => Ok ( self . convert_expr ( ctx. used ( ) , args[ 0 ] , None ) ?) ,
696+ "__builtin_assume_aligned" => Ok ( self . convert_expr ( ctx. used ( ) , args[ 0 ] ) ?) ,
697697 // Skip over, there's no way to implement it in Rust
698698 "__builtin_unwind_init" => Ok ( WithStmts :: new_val ( self . panic_or_err ( "no value" ) ) ) ,
699699 "__builtin_unreachable" => Ok ( WithStmts :: new (
@@ -731,7 +731,7 @@ impl<'c> Translation<'c> {
731731 method_name : & str ,
732732 args : & [ CExprId ] ,
733733 ) -> TranslationResult < WithStmts < Box < Expr > > > {
734- let args = self . convert_exprs ( ctx. used ( ) , args, None ) ?;
734+ let args = self . convert_exprs ( ctx. used ( ) , args) ?;
735735 args. and_then ( |args| {
736736 let [ a, b, c] : [ _ ; 3 ] = args
737737 . try_into ( )
@@ -771,7 +771,7 @@ impl<'c> Translation<'c> {
771771 let name = & builtin_name[ 10 ..] ;
772772 self . use_crate ( ExternCrate :: Libc ) ;
773773 let mem = mk ( ) . abs_path_expr ( vec ! [ "libc" , name] ) ;
774- let args = self . convert_exprs ( ctx. used ( ) , args, None ) ?;
774+ let args = self . convert_exprs ( ctx. used ( ) , args) ?;
775775 args. and_then ( |args| {
776776 if args. len ( ) != arg_types. len ( ) {
777777 // This should not generally happen, as the C frontend checks these first
0 commit comments