This patch implements the lowering of the OpenMP 'requires' directive from Flang parse tree to MLIR attributes attached to the top-level module.
Target-related 'requires' clauses are gathered and combined for each top-level unit during semantics. Lastly, a single module-level omp.requires attribute is attached to the MLIR module with that information at the end of the process.
The atomic_default_mem_order clause is not addressed by this patch, but rather it will come as a separate patch and follow a different approach.
Is this include required here?