For example, without this fix, when the host is x86_64, long double is
sometimes rejected when offloading to x86_64:
$ cat test.c int main() { long double in = 0; #pragma omp target in *= 2; return 0; } $ clang -fopenmp test.c; echo $? 0 $ clang -fopenmp -fopenmp-targets=x86_64 test.c test.c:4:5: error: 'long double' is not supported on this target in *= 2; ^~ 1 error generated.
Hmm, this look strange, at least. Seems to me, in this case the size of the long double is 128 bit (copied from the host), but device reports that it does not support 128 bit double. Seems to me, it is a problem with the device configuration. Why does the host translate long double to 128 bit fp, while the device translates it to 64 bit FP?