by over-allocating and emitting alignTo code to adjust the frame start address.
Motivation: on a lot of machines, malloc returns >=std::max_align_t (usually just 16) aligned heap regardless of the coro frame's preferred alignment (usually specified using alignas() on the promise or some local variables). For non-coroutine-related context, this is handled by calling overloaded operator new where an alignment could be specified. For coroutine, spec here https://eel.is/c++draft/dcl.fct.def.coroutine#9.1 suggested that the alignment argument is not considered during name lookup.
Mathias Stearn and @lewissbaker suggested this is the proper workaround before the issue is addressed by the spec.
One example showing the issue: https://gcc.godbolt.org/z/rGzaco