5330ebbc4a
* [OpenMP] Canonicalization framework This is mainly designed for loop association work but can be used for others, and `CanonicalizeOmp` must be after `CanonicalizeDo`. At the `Block` level, recognize legal sequence of `OpenMPLoopConstruct`, `DoConstruct`, and `OmpEndLoopDirective`. Move available `DoConstruct` and optional `OmpEndLoopDirective` into `OpenMPLoopConstruct`. Throw error messages if: 1. `DoConstruct` is not following `OpenMPLoopConstruct` 2. `OmpEndLoopDirective` is not following associated do-loop Once this pass this done, Semantics will not proceed if error exists. * Update on reviews 1. extract matching and move part into its own function (once `DoConstruct` is moved, see whether `OpenMPEndLoopDirective` is available) 2. Use a template function to access construct from ExecutionPartConstruct. 3. Move this code into namespace semantics Original-commit: flang-compiler/f18@52979f1e93 Reviewed-on: https://github.com/flang-compiler/f18/pull/599
55 lines
1.3 KiB
CMake
55 lines
1.3 KiB
CMake
# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
add_library(FortranSemantics
|
|
assignment.cc
|
|
attr.cc
|
|
canonicalize-do.cc
|
|
canonicalize-omp.cc
|
|
check-allocate.cc
|
|
check-arithmeticif.cc
|
|
check-coarray.cc
|
|
check-deallocate.cc
|
|
check-do.cc
|
|
check-if-stmt.cc
|
|
check-io.cc
|
|
check-nullify.cc
|
|
check-omp-structure.cc
|
|
check-return.cc
|
|
check-stop.cc
|
|
expression.cc
|
|
mod-file.cc
|
|
program-tree.cc
|
|
resolve-labels.cc
|
|
resolve-names.cc
|
|
resolve-names-utils.cc
|
|
rewrite-parse-tree.cc
|
|
scope.cc
|
|
semantics.cc
|
|
symbol.cc
|
|
tools.cc
|
|
type.cc
|
|
unparse-with-symbols.cc
|
|
)
|
|
|
|
target_link_libraries(FortranSemantics
|
|
FortranCommon
|
|
FortranEvaluate
|
|
)
|
|
|
|
install (TARGETS FortranSemantics
|
|
ARCHIVE DESTINATION lib
|
|
LIBRARY DESTINATION lib
|
|
RUNTIME DESTINATION bin
|
|
)
|