[OpenMP] Add Fortran support for omp_* functions needing adapters Taking omp_get_uid_from_device and omp_get_device_from_uid as examples. OpenMP 6.0 defines these functions as follows: ``` const char *omp_get_uid_from_device(int device_num); character(:) function omp_get_uid_from_device(device_num) pointer :: omp_get_uid_from_device integer, intent(in) :: device_num ``` and ``` int omp_get_device_from_uid(const char *uid); integer function omp_get_device_from_uid(uid) character(len=*), intent(in) :: uid ``` As a result, we cannot directly map the Fortran API declarations to the C API declarations. We need some adapter code to do the conversion. However, this means that we cannot just define the two functions as omp_* in kmp_ftn_entry.h without clashing with the adapter code. The current situation is less than ideal, as demonstrated by this draft PR, which shall serve as a base for discussing different solution approaches.
Welcome to the LLVM project!
This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.
The LLVM project has multiple components. The core of the project is itself called “LLVM”. This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.
C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.
Other components include: the libc++ C++ standard library, the LLD linker, and more.
Consult the Getting Started with LLVM page for information on building and running LLVM.
For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.
Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups.
The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.