cgen: minor optimization of fixed array copy (#9554)
parent
d8efe249ce
commit
c11356be21
|
@ -2427,17 +2427,13 @@ fn (mut g Gen) gen_assign_stmt(assign_stmt ast.AssignStmt) {
|
|||
g.is_shared = var_type.has_flag(.shared_f)
|
||||
if !cloned {
|
||||
if is_fixed_array_copy {
|
||||
i_var := g.new_tmp_var()
|
||||
fixed_array := right_sym.info as ast.ArrayFixed
|
||||
g.write('for (int $i_var=0; $i_var<$fixed_array.size; $i_var++) {')
|
||||
typ_str := g.typ(val_type).trim('*')
|
||||
ref_str := if val_type.is_ptr() { '' } else { '&' }
|
||||
g.write('memcpy(($typ_str*)')
|
||||
g.expr(left)
|
||||
g.write('[$i_var] = ')
|
||||
if val.is_auto_deref_var() {
|
||||
g.write('*')
|
||||
}
|
||||
g.write(', (byte*)$ref_str')
|
||||
g.expr(val)
|
||||
g.write('[$i_var];')
|
||||
g.writeln('}')
|
||||
g.write(', sizeof($typ_str))')
|
||||
} else if is_decl {
|
||||
if is_fixed_array_init && !has_val {
|
||||
if val is ast.ArrayInit {
|
||||
|
|
Loading…
Reference in New Issue