[OpenMP] Support up to 32 arguments in the generic microtask dispatcher (#211071)

Extend the generic `__kmp_invoke_microtask` implementation to support up
to 32 microtask arguments.

The generic dispatcher currently handles at most 15 arguments. OpenMP
regions with more captured variables terminate at runtime.

This affects WebAssembly because call_indirect requires the callee type
to exactly match the call-site type. Unlike assembly dispatchers on
platforms such as x86_64, the generic C++ implementation cannot
construct an arbitrary-arity call dynamically and must provide each
supported signature explicitly.
Real-world OpenMP regions can exceed the existing limit; the motivating
cases require between 16 and 21 arguments.

A longer-term alternative would be to change the compiler/runtime
convention for generic-dispatch targets so captured-variable pointers
are passed through a single packed context argument. That would remove
the fixed upper bound, but it would require coordinated Clang and OpenMP
runtime changes and consideration of compatibility with objects produced
using the existing variadic microtask ABI. This change keeps the
existing ABI and provides a focused runtime-only fix.

GitOrigin-RevId: 9076414489edb1db74ec6f7bc22a715d1cd66f0c
3 files changed