cgen: key the tagged-widen struct copy on natural size, not slot size
cgwidentaggedstorebp's struct-ident arms (local and module-global) counted copy bytes from structinfo.totsize, the round-8 slot width, so a struct whose natural size is not a multiple of 8 took the MOVQ word loop and copied the source slot's dirty pad bytes over the zero-fill the arm itself just established; the width-true tail emitter beneath was dead code. cstage keys the same copy on su->size. Route both arms through copysrcnatsize (the stamped-tinfo natural size, #71). Graduates r71_tagged_return_scratch_mixed.
This commit is contained in:
3
Makefile
3
Makefile
@@ -583,8 +583,7 @@ DATABYTEID_EXPECTED_MIN = 911
|
||||
# When a compiler fix lands the entry fails demanding graduation out of
|
||||
# this list rather than silently widening coverage. Tracked with the #59
|
||||
# divergence family.
|
||||
DATABYTEID_DIVERGED = r71_tagged_return_scratch_mixed \
|
||||
r76_typeeq_fn_diff_arity r76_typeeq_fn_diff_param_type \
|
||||
DATABYTEID_DIVERGED = r76_typeeq_fn_diff_arity r76_typeeq_fn_diff_param_type \
|
||||
r76_typeeq_fn_io_vtable_shape r76_typeeq_fn_variadic_vs_fixed \
|
||||
r940_str_forrange_arg
|
||||
$(if $(DATABYTEID_FILES),,$(error test-byteid: empty data corpus))
|
||||
|
||||
Reference in New Issue
Block a user