OpenMP emits these for some reason, so handle them. Assume these use
4096 bytes by default, with a flag to override this. Also change the
related stack assumption for calls to have a flag.
Details
Diff Detail
Event Timeline
I wasn't sure what to report for the size, so this just misses it entirely. The old code object has is_dynamic_callstack = 1, which I'm not sure actually did anything. I guess we could just pick a big number here like is already done for the external call case? I guess I could pick a smaller, large number?
Probably yes. We need to allocate it somehow. A large number does not seem unreasonable unless until we have something better.
Added execution test here: https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/296
Johannes: here is a reduce source test case, let me know what else you might need?
#include <stdio.h>
int main (void)
{
int ng =12; int nxyz = 5000; #pragma omp target teams distribute for (int gid = 0; gid < nxyz; gid++) { #pragma omp parallel for for (unsigned int g = 0; g < ng; g++) { int a = 0; } } return 0;
}
@ronlieb Thx. This is a "bug" in OpenMPOpt we need to address there. I'll put it on my (mental) to do list.
I think so, plus I also just actually fixed the actual codegen in ec8c172d01eb14eba890f36205da0613dda7f742