llvm/flang/lib/semantics/CMakeLists.txt
Jinxin (Brian) Yang 5330ebbc4a [flang] [OpenMP] Canonicalization framework (flang-compiler/f18#599)
* [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
2019-08-22 10:34:15 -07:00

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
)