I don't know, but if you look at the 3.2.x assembler, it effectively seems to create a TBytes temp, and this is indeed not very nice:
leal -4(%ebp),%eax
movl $RTTI_$P$PROJECT1_$$_TBYTES,%edx
call fpc_dynarray_clear
movl $16,-8(%ebp)
leal -8(%ebp),%eax
pushl %eax
movl $RTTI_$P$PROJECT1_$$_TBYTES,%edx
movl $1,%ecx
leal -4(%ebp),%eax
call fpc_dynarray_setlength
movl -4(%ebp),%edi
movl $U_$P$PROJECT1_$$_X,%esi
movl $4,%ecx
rep
movsl
movl -4(%ebp),%eax
call P$PROJECT1_$$_BAR$TBYTES