Accomodate Clang's CFI sanitizer
Accomodate Clang's CFI sanitizer

It was complaining that the `TrMulTask* tasks` pointer was temporarily pointing to garbage as we first set it to point to the allocated buffer, then perform the actual TrMulTask object constructions using placement-new. Rewritten so that the pointer is kept a `char*` pointer during this allocation and placement-new business, and only assigned to a TrMulTasks* pointer at the end.

Note: this is *not* a strict-aliasing issue. The CFI diagnostic here is unaffected by `-f[no-]strict-aliasing` and the reason why this isn't a strict-aliasing violation is that the C++ spec makes an exception for `char` and a couple of other byte types, allowing to make byte buffers alias objects of other types. So CFI is going beyond the C++ spec here --- this isn't an undefined-behavior report. This is apparently trying to enforce that if pointers are set at all then they must be set to point to a valid object of their element type. At least for types that have a vtable.
PiperOrigin-RevId: 423326986

google/ruy,google/ruy,google/ruy,google/ruy