- Notifications
You must be signed in to change notification settings - Fork 15.3k
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontendflang:irflang:openmp
Description
When using a custom mapper outside of the module it was defined, it is not found and crashes the compilation. Below is a short reproducer for the issue:
MODULE field_mod IMPLICIT NONE TYPE :: field_t REAL, ALLOCATABLE :: buf(:) END TYPE field_t !$omp declare mapper(custom: field_t :: t) map(t%buf) END MODULE field_mod PROGRAM reproducer USE field_mod IMPLICIT NONE REAL :: validation(5) TYPE(field_t) :: f_t ALLOCATE(f_t%buf(5)) f_t%buf = 42.0 !$omp target map(mapper(custom), tofrom: f_t) map(from: validation) validation(:) = f_t%buf(:) !$omp end target PRINT*, "Expected: 42. 42. 42. 42. 42." PRINT*, "Actual:", validation DEALLOCATE(f_t%buf) END PROGRAM reproducerCompiling this code (with cuda in my case) crashes...
flang -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp-version=52 main.F90 -O3 ...with the error message:
error: loc("f_t"("/home/jfuchs/reproducer/main.F90":18:22)): invalid mapper id error: verification of lowering to FIR failed We can cross check the correct behavior by moving the !$omp declare mapper... line below into the PROGRAM directly. Then compilation succeeds and the values are as expected after the target region.
I am using flang version 22.0.0git (git@github.com:llvm/llvm-project.git a8057ff12956b7dd6dec44f9610c446c828c4af8).
Metadata
Metadata
Assignees
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontendflang:irflang:openmp