llvm-project/flang/lib/Semantics
PeixinQiao dd8c8d4b7c This patch supports the following checks for THREADPRIVATE Directive:
```
[5.1] 2.21.2 THREADPRIVATE Directive
A variable that appears in a threadprivate directive must be declared in
the scope of a module or have the SAVE attribute, either explicitly or
implicitly.
A variable that appears in a threadprivate directive must not be an
element of a common block or appear in an EQUIVALENCE statement.
```

This patch supports the following checks for DECLARE TARGET Directive:
```
[5.1] 2.14.7 Declare Target Directive
A variable that is part of another variable (as an array, structure
element or type parameter inquiry) cannot appear in a declare
target directive.
A variable that appears in a declare target directive must be declared
in the scope of a module or have the SAVE attribute, either explicitly
or implicitly.
A variable that appears in a declare target directive must not be an
element of a common block or appear in an EQUIVALENCE statement.
```

As Fortran 2018 standard [8.5.16] states, a variable, common block, or
procedure pointer declared in the scoping unit of a main program,
module, or submodule implicitly has the SAVE attribute, which may be
confirmed by explicit specification.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D109864
2021-10-17 22:08:02 +08:00
..
CMakeLists.txt [flang] Save binding labels as strings 2021-03-24 11:25:23 -07:00
assignment.cpp [flang][nfc] Fix comments, remove needless API, tweak script 2021-01-22 10:55:53 -08:00
assignment.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
attr.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
canonicalize-acc.cpp [flang] Add clang-tidy check for braces around if 2021-06-16 09:13:53 +00:00
canonicalize-acc.h [flang][openacc] Semantic checks for OpenACC 3.0 clauses validity 2020-07-14 20:44:35 -04:00
canonicalize-do.cpp [flang][NFC] Get formatting in sync with latest clang-format 2020-07-01 16:51:46 -07:00
canonicalize-do.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
canonicalize-omp.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
canonicalize-omp.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-acc-structure.cpp [flang] Add clang-tidy check for braces around if 2021-06-16 09:13:53 +00:00
check-acc-structure.h [flang][directive] Enforce basic semantic check for all clauses 2021-02-01 13:33:30 -05:00
check-allocate.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-allocate.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-arithmeticif.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-arithmeticif.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-call.cpp [flang] More checking of NULL pointer actual arguments 2021-09-17 15:35:29 -07:00
check-call.h [flang] Document and use intrinsic subroutine argument intents 2020-10-20 14:09:46 +02:00
check-case.cpp [flang] Fix integer CASE constant typing 2020-09-01 10:59:35 -07:00
check-case.h [flang] Semantics for SELECT CASE 2020-03-27 12:02:11 -07:00
check-coarray.cpp [flang] Support for image selectors 2020-07-08 07:31:54 -07:00
check-coarray.h [flang] Support for image selectors 2020-07-08 07:31:54 -07:00
check-data.cpp [flang] Catch error: base of DATA statement object can't be a pointer 2021-09-22 14:41:48 -07:00
check-data.h [flang] Handle DATA initialization of EQUIVALENCE'd objects 2020-08-07 16:39:23 -07:00
check-deallocate.cpp [flang] Save AllocateObject and PointerObject analyzed expression 2021-03-16 10:27:45 +01:00
check-deallocate.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-declarations.cpp [flang] Admit NULL() in generic procedure resolution cases 2021-10-14 16:02:17 -07:00
check-declarations.h [flang] Improve initializer semantics, esp. for component default values 2020-12-07 14:40:41 -08:00
check-directive-structure.h [flang][OpenMP] Added OpenMP 5.0 specification based semantic checks for sections construct and test case for simd construct 2021-10-02 08:40:53 +05:30
check-do-forall.cpp [flang] Refine symbol sorting 2021-03-18 11:18:14 -07:00
check-do-forall.h [flang] Fix crash on erroneous expressions 2020-06-05 08:46:43 -07:00
check-if-stmt.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-if-stmt.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-io.cpp [flang] Disallow BOZ literal constants as output list items 2021-07-27 13:01:26 -07:00
check-io.h [flang] Fold LGE/LGT/LLE/LLT intrinsic functions 2021-10-14 15:24:03 -07:00
check-namelist.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-namelist.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-nullify.cpp [flang] Save AllocateObject and PointerObject analyzed expression 2021-03-16 10:27:45 +01:00
check-nullify.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-omp-structure.cpp This patch supports the following checks for THREADPRIVATE Directive: 2021-10-17 22:08:02 +08:00
check-omp-structure.h This patch supports the following checks for THREADPRIVATE Directive: 2021-10-17 22:08:02 +08:00
check-purity.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-purity.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-return.cpp [flang][NFC] Add GetTopLevelUnitContaining functions 2020-12-02 10:28:49 -08:00
check-return.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-select-rank.cpp [flang] Validate SIZE(x,DIM=n) dimension for assumed-size array x 2021-09-17 10:14:18 -07:00
check-select-rank.h [flang]Semantics for SELECT RANK. 2020-05-08 08:52:31 +05:30
check-select-type.cpp [FLANG] Fix issues in SELECT TYPE construct when intrinsic type specification is specified in TYPE GUARD statement. 2020-08-03 09:24:42 +05:30
check-select-type.h [flang] Semantics for SELECT TYPE 2020-06-12 00:12:24 +05:30
check-stop.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
check-stop.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
compute-offsets.cpp [flang] Fix common block size extension mistake in D109156 2021-09-09 09:12:12 +02:00
compute-offsets.h [flang] Implement STORAGE_SIZE(), SIZEOF(), C_SIZEOF() 2020-12-15 17:26:20 -08:00
data-to-inits.cpp [flang] Fold LGE/LGT/LLE/LLT intrinsic functions 2021-10-14 15:24:03 -07:00
data-to-inits.h [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
expression.cpp [flang] Admit NULL() in generic procedure resolution cases 2021-10-14 16:02:17 -07:00
mod-file.cpp [flang] Make builtin types more easily accessible; use them 2021-09-29 13:06:01 -07:00
mod-file.h [flang] Make builtin types more easily accessible; use them 2021-09-29 13:06:01 -07:00
pointer-assignment.cpp [flang] More checking of NULL pointer actual arguments 2021-09-17 15:35:29 -07:00
pointer-assignment.h [flang] DATA stmt processing (part 3/4): Remaining prep work 2020-06-19 09:09:05 -07:00
program-tree.cpp [flang] Parse global compiler directives 2020-08-25 11:41:11 -07:00
program-tree.h [flang] Parse global compiler directives 2020-08-25 11:41:11 -07:00
resolve-directives.cpp Added OpenMP 5.0 specification based semantic checks for CRITICAL construct name resolution 2021-10-12 22:18:24 +05:30
resolve-directives.h [flang][NFC] Extract name resolution for OpenACC & OpenMP into new file 2020-07-28 16:38:36 -07:00
resolve-labels.cpp [flang] Catch branching into FORALL/WHERE constructs 2021-09-27 10:51:44 -07:00
resolve-labels.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
resolve-names-utils.cpp [flang] Fix creation of deferred shape arrays by POINTER statement 2021-01-20 13:08:11 -08:00
resolve-names-utils.h [flang] Revamp C1502 checking of END INTERFACE [generic-spec] 2021-09-17 08:13:10 -07:00
resolve-names.cpp [flang] Fold LGE/LGT/LLE/LLT intrinsic functions 2021-10-14 15:24:03 -07:00
resolve-names.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
rewrite-parse-tree.cpp [flang] Clean up TODO comments and fix one (DATA constant ambiguity) 2020-12-15 13:36:07 -08:00
rewrite-parse-tree.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
runtime-type-info.cpp [flang] Fold LGE/LGT/LLE/LLT intrinsic functions 2021-10-14 15:24:03 -07:00
scope.cpp [flang] Support known constant lengths in DynamicType 2021-06-03 14:25:22 -07:00
semantics.cpp [flang] Make builtin types more easily accessible; use them 2021-09-29 13:06:01 -07:00
symbol.cpp [flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol 2021-09-30 23:26:46 +02:00
tools.cpp [flang] Make builtin types more easily accessible; use them 2021-09-29 13:06:01 -07:00
type.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
unparse-with-symbols.cpp [flang][openacc] Basic name resolution infrastructure for OpenACC construct 2020-07-26 20:01:35 -04:00