llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.84k stars 11.47k forks source link

[Flang][OpenMP] Passing uniform in declare SIMD returns error "Internal: no symbol found" #94997

Open aadler opened 3 months ago

aadler commented 3 months ago

I apologize in advance if this is not the proper venue for this question, and, if so, would appreciate being directed. I develop and maintain a few packages for R. I don't use clang when I develop but I do test compilation on c/flang by using rhub. To the best of my knowledge, clang has fully implemented OpenMP 4.5, which includes the uniform keyword when declaring a function for SIMD usage. I thought the same for flang as well; see 2.82 here. However, when I use the clang testbeds on rhub to test adding SIMD constructs to the Delaporte package, versions 17, 18, and 19 all return "Internal: no symbol found" and stop compilation upon seeing that clause. Could this be a problem with how rhub has set up its testbeds? Is OpenMP 4.5 not fully implemented in flang? Or have I made an error. The package compiles with gcc and intel, so I believe the code is correct. Thank you.

aadler commented 2 months ago

As the logs will be deleted soon, here is the text of the error:

using Fortran compiler: ‘Ubuntu flang-new version 19.0.0 (++20240609042219+715a5d8d93a8-1~exp1~20240609042339.1734)’
flang-new-19 -fopenmp  -fpic  -g -O2  -c  utils.f90 -o utils.o
error: Semantic errors in utils.f90
./utils.f90:138:53: error: Internal: no symbol found for 'k'
      !$omp declare simd(imk) linear(uval(i)) uniform(k) notinbranch

The function in question (imk) begins on line 137 of utils.f90.