xref: /llvm-project/flang/lib/Semantics/pointer-assignment.h (revision f82ee15554bfa9e8f2a26678caa25dbabb5fa220)
164ab3302SCarolineConcatto //===-- lib/Semantics/pointer-assignment.h --------------------------------===//
264ab3302SCarolineConcatto //
364ab3302SCarolineConcatto // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
464ab3302SCarolineConcatto // See https://llvm.org/LICENSE.txt for license information.
564ab3302SCarolineConcatto // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
664ab3302SCarolineConcatto //
764ab3302SCarolineConcatto //===----------------------------------------------------------------------===//
864ab3302SCarolineConcatto 
964ab3302SCarolineConcatto #ifndef FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_
1064ab3302SCarolineConcatto #define FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_
1164ab3302SCarolineConcatto 
1264ab3302SCarolineConcatto #include "flang/Evaluate/expression.h"
1364ab3302SCarolineConcatto #include "flang/Parser/char-block.h"
1464ab3302SCarolineConcatto #include "flang/Semantics/type.h"
1564ab3302SCarolineConcatto #include <string>
1664ab3302SCarolineConcatto 
1764ab3302SCarolineConcatto namespace Fortran::evaluate::characteristics {
1864ab3302SCarolineConcatto struct DummyDataObject;
1964ab3302SCarolineConcatto }
2064ab3302SCarolineConcatto 
2164ab3302SCarolineConcatto namespace Fortran::semantics {
2264ab3302SCarolineConcatto 
23191d4872SPeter Klausler class SemanticsContext;
2464ab3302SCarolineConcatto class Symbol;
2564ab3302SCarolineConcatto 
264171f80dSpeter klausler bool CheckPointerAssignment(
27191d4872SPeter Klausler     SemanticsContext &, const evaluate::Assignment &, const Scope &);
28191d4872SPeter Klausler bool CheckPointerAssignment(SemanticsContext &, const SomeExpr &lhs,
29*f82ee155SPeter Klausler     const SomeExpr &rhs, const Scope &, bool isBoundsRemapping,
30*f82ee155SPeter Klausler     bool isAssumedRank);
31191d4872SPeter Klausler bool CheckPointerAssignment(SemanticsContext &, parser::CharBlock source,
32191d4872SPeter Klausler     const std::string &description,
33573fc618SPeter Klausler     const evaluate::characteristics::DummyDataObject &, const SomeExpr &rhs,
34*f82ee155SPeter Klausler     const Scope &, bool isAssumedRank);
3564ab3302SCarolineConcatto 
360c0b2ea9SPeter Klausler bool CheckStructConstructorPointerComponent(
370c0b2ea9SPeter Klausler     SemanticsContext &, const Symbol &lhs, const SomeExpr &rhs, const Scope &);
380c0b2ea9SPeter Klausler 
394171f80dSpeter klausler // Checks whether an expression is a valid static initializer for a
404171f80dSpeter klausler // particular pointer designator.
410c0b2ea9SPeter Klausler bool CheckInitialDataPointerTarget(SemanticsContext &, const SomeExpr &pointer,
42573fc618SPeter Klausler     const SomeExpr &init, const Scope &);
434171f80dSpeter klausler 
441f879005STim Keith } // namespace Fortran::semantics
4564ab3302SCarolineConcatto 
4664ab3302SCarolineConcatto #endif // FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_
47