6acddc3a82fdc1d8fb4cf29d20a209e37b83dab5
len() special-cased only a plain N_IDENT slice operand (load .len at BP+off+8) and an array operand (fold $alen); every other shape fell back to a bare cgexpr(operand), which for a slice leaves AX=.ptr. A tuple- element read (t.N) loads only AX=.ptr, so len(t.N) on a slice/str tuple element returned the slice's .ptr word AS its length — a silent miscompile, gate-blind because the bootstrap never does len() on a slice-typed tuple element (sibling of the #234/#237 tuple-sret cluster). Both stages: detect a slice/str tuple-element len() operand and load the element's .len word directly at BP + element_off + 8, mirroring the N_IDENT slice arm and the tuple-field-offset walk (element_off sums preceding element sizes through the type table). Byte-identical asm (rule 10). The separate tuple-element-read full-header gap is #238; a leading-scalar mixed-tuple has its own pre-existing sret-layout cs/ww divergence, filed apart from #235. Test 903_tuple_elem_slice_len_run: 4 slice/str-only tuple rows (two/ three slices, str+slice, slice+str; distinct lengths), build+run both drivers + cs==ww byte-id. 12/12 ok.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%