Tim Keith [Mon, 29 Apr 2019 14:32:59 +0000 (07:32 -0700)]
[flang] Fix source positions during parse tree rewriting
When a StmtFunctionStmt was rewritten as an array element assignment
the subscripts were not getting correct source locations. They need
to be copied from the function args.
Also, the entire array element expression (e.g. `a(i)`) did not have a
source position. This was tricky because there is no source position
in the original parse that matches what we need. So we take the source
position from the beginning of the function name to the end of the last
arg and extend it one more character to include the closing parenthesis.
Change `ActualArgToExpr()` to return `Expr` rather than
`std::optional<Expr>` because callers always call `.value()` on the
result anyway.
Add `WithSource()` utility to update the `source` data member of a
parse tree node.
This bug shows up as incorrect source positions for error messages. For
example, in this program the error (due to real subscript) did not have
a source position:
```
real :: a(10), x, y
a(x) = y
end
```
Original-commit: flang-compiler/f18@
a9bcf68cebe16341e918700ce223baaf66ed441a
Reviewed-on: https://github.com/flang-compiler/f18/pull/433
Tim Keith [Fri, 26 Apr 2019 22:06:58 +0000 (15:06 -0700)]
[flang] Optionally dump all source members of parse tree
In the parse tree dumper, add a compile-time option to dump source
locations for all nodes that have them. This is a useful way to check
if they are correct, especially after parse tree rewrites.
It is enabled by defining `SHOW_ALL_SOURCE_MEMBERS` in `dump-parse-tree.h`.
Original-commit: flang-compiler/f18@
ceae5632e2c5ec4d1083fcac4a9ad39b8ba2c1f3
Reviewed-on: https://github.com/flang-compiler/f18/pull/433
Tree-same-pre-rewrite: false
Tim Keith [Fri, 26 Apr 2019 22:01:09 +0000 (15:01 -0700)]
[flang] Walk source member of Call and Designator
A `source` data member was added to `Call` and `Designator` so
the parse tree visitor needs to visit them.
Original-commit: flang-compiler/f18@
0a620f1a5e008cd41b4ade2fca452a8df68a89f4
Reviewed-on: https://github.com/flang-compiler/f18/pull/433
Tree-same-pre-rewrite: false
Tim Keith [Fri, 26 Apr 2019 16:16:20 +0000 (09:16 -0700)]
[flang] Merge pull request flang-compiler/f18#429 from flang-compiler/tsk1
Continue semantic checking after name resolution error
Original-commit: flang-compiler/f18@
f17c9caf8ea687600c734b0337fda05e5c6ab7aa
Reviewed-on: https://github.com/flang-compiler/f18/pull/429
Tim Keith [Thu, 25 Apr 2019 21:47:39 +0000 (14:47 -0700)]
[flang] Move HasError, SetError to SemanticsContext
Move HasError and SetError into SemanticsContext so that we can do
consistency checks: if a symbol has an error or we want to set the
error flag, check that an error has been reported.
Original-commit: flang-compiler/f18@
4f6e3a04ca4c4d46a55900551ff5f7a0518bdc7c
Reviewed-on: https://github.com/flang-compiler/f18/pull/429
Tim Keith [Thu, 25 Apr 2019 20:18:33 +0000 (13:18 -0700)]
[flang] Continue semantic checking after name resolution error
When an error occurs in name resolution, continue semantic processing
in order to detect other errors. This means we can no longer assume
that every `parser::Name` has a symbol even after name resolution
completes. In `RewriteMutator`, only report internal error for unresolved
symbol if there have been no fatal errors.
Add `Error` flag to `Symbol` to indicate that an error occcurred related
to it. Once we report an error about a symbol we should avoid reporting
any more to prevent cascading errors. Add `HasError()` and `SetError()`
to simplify working with this flag.
Change some places that we assume that a `parser::Name` has a non-null
symbol. There are probably more.
`resolve-names.cc`: Set the `Error` flag when we report a fatal error
related to a symbol. (This requires making some symbols non-const.)
Remove `CheckScalarIntegerType()` as `ExprChecker` will take care of
those constraints if they are expressed in the parse tree. One exception
to that is the name in a `ConcurrentControl`. Explicitly perform that
check using `EvaluateExpr()` and constraint classes so we get consistent
error messages.
In expression analysis, when a constraint is violated (like `Scalar<>`
or `Integer<>`), reset the wrapped expression so that we don't assume it
is valid. A `GenericExprWrapper` holding a std::nullopt indicates error.
Change `EnforceTypeConstraint()` to return false when the constraint
fails to enable this.
check-do-concurrent.cc: Reorganize the Gather*VariableNames functions
into one to simplify the task of filtering out unresolved names. Remove
`CheckNoDuplicates()` and `CheckNoCollisions()` as those checks is
already done in name resolution when the names are added to the scope.
Original-commit: flang-compiler/f18@
bcdb679405906575f36d3314f17da89e3e89d45c
Reviewed-on: https://github.com/flang-compiler/f18/pull/429
Tree-same-pre-rewrite: false
Tim Keith [Fri, 26 Apr 2019 16:04:57 +0000 (09:04 -0700)]
[flang] Merge pull request flang-compiler/f18#430 from flang-compiler/tsk2
Bug fix: resolve ComponentArraySpec
Original-commit: flang-compiler/f18@
612638e4048bc0ad78132a268f74bcf85513cc42
Reviewed-on: https://github.com/flang-compiler/f18/pull/430
Tim Keith [Fri, 26 Apr 2019 15:51:17 +0000 (08:51 -0700)]
[flang] Fix test
Original-commit: flang-compiler/f18@
dfd8cdfdeccb66de92e86194172247b874c60634
Reviewed-on: https://github.com/flang-compiler/f18/pull/430
Tim Keith [Thu, 25 Apr 2019 22:05:41 +0000 (15:05 -0700)]
[flang] Bug fix: resolve ComponentArraySpec
This used to work but broke due to coarray spec changes.
The fix is to extend AnalyzeArraySpec to work on ComponentArraySpec
and to call it when we encounter one.
modfile24.f90 tested this case but had the wrong expected results.
Thanks to Jean for finding this.
Original-commit: flang-compiler/f18@
7ef4c28a6171d95e383bf0b3ad63915ecf9f849a
Reviewed-on: https://github.com/flang-compiler/f18/pull/430
Tree-same-pre-rewrite: false
Eric Schweitz [Wed, 24 Apr 2019 18:41:40 +0000 (11:41 -0700)]
[flang] revert last pushes
Original-commit: flang-compiler/f18@
39335746a99c5291b82932f119bc2d25d251f022
Eric Schweitz [Tue, 9 Apr 2019 18:13:48 +0000 (11:13 -0700)]
[flang] fix merge issues
Original-commit: flang-compiler/f18@
20a6d8a159d03813392b93255a72a334d6cde15b
Eric Schweitz [Tue, 9 Apr 2019 16:35:52 +0000 (09:35 -0700)]
[flang] clang-format
Original-commit: flang-compiler/f18@
faa7ccf90584f0cd18e9e02e009c0734ec16c22b
Eric Schweitz [Mon, 1 Apr 2019 18:09:03 +0000 (11:09 -0700)]
[flang] Some initial bridge code
add QualifiedStmt class
Original-commit: flang-compiler/f18@
b2d89fe696f29cb60a8f0aa211b30eb4f7f442d5
Eric Schweitz [Wed, 27 Mar 2019 23:05:11 +0000 (16:05 -0700)]
[flang] start splitting up afforestation so it isn't monolithic
Original-commit: flang-compiler/f18@
ea42c9df5ae6f6825f46d003d8fd8e445f628ab5
Eric Schweitz [Tue, 23 Apr 2019 21:40:04 +0000 (14:40 -0700)]
[flang] fix interface
Original-commit: flang-compiler/f18@
668fd8338dea9ce214451d21f02051935aa5e889
jeanPerier [Wed, 24 Apr 2019 07:53:49 +0000 (00:53 -0700)]
[flang] First batch of semantic checks for allocate
Merge pull request flang-compiler/f18#418 from flang-compiler/jpr-check-allocate
Original-commit: flang-compiler/f18@
ab7d7c5dc0e9b15e9ef7b6ea2eadbc793b282fdb
Jean Perier [Tue, 23 Apr 2019 13:06:33 +0000 (06:06 -0700)]
[flang] fix comment layout
Original-commit: flang-compiler/f18@
ad874f01523b90a58b7825ed02e6c3bea6cd38c8
Jean Perier [Tue, 23 Apr 2019 12:57:50 +0000 (05:57 -0700)]
[flang] Address review comments
Original-commit: flang-compiler/f18@
0c975ed88caadaf8594eb6f7ef70ad32c81905c2
Tree-same-pre-rewrite: false
Jean Perier [Thu, 18 Apr 2019 16:18:37 +0000 (09:18 -0700)]
[flang] Fix allocate in deallocate01.f90 test
Original-commit: flang-compiler/f18@
681e51f50b2c133e03bf174fac7187c3395fbdb1
Tree-same-pre-rewrite: false
Jean Perier [Thu, 18 Apr 2019 16:17:31 +0000 (09:17 -0700)]
[flang] First batch of semantics checks for allocate
Original-commit: flang-compiler/f18@
1019a84ac8666ab1d04b192c544795f13cb6348c
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 22 Apr 2019 20:58:22 +0000 (13:58 -0700)]
[flang] Merge pull request flang-compiler/f18#423 from flang-compiler/pmk-packs
Use parameter packs to simplify parser combinators. Work around g++ …
Original-commit: flang-compiler/f18@
9e178f252551e416a760998d98593a910c43b68d
Reviewed-on: https://github.com/flang-compiler/f18/pull/423
peter klausler [Fri, 19 Apr 2019 23:59:28 +0000 (16:59 -0700)]
[flang] Use parameter packs to simplify parser combinators. Work around g++ bug better.
Original-commit: flang-compiler/f18@
eaa65cd60a2fb6b23fc8696f0e6efdced52a7d54
Reviewed-on: https://github.com/flang-compiler/f18/pull/423
Tim Keith [Mon, 22 Apr 2019 19:58:20 +0000 (12:58 -0700)]
[flang] Merge pull request flang-compiler/f18#424 from flang-compiler/tsk-expr
Distinguish between unanalyzed and error expressions
Original-commit: flang-compiler/f18@
0978d17010d65560e54f18ed6cf972bc66f58820
Reviewed-on: https://github.com/flang-compiler/f18/pull/424
Tim Keith [Mon, 22 Apr 2019 03:46:15 +0000 (20:46 -0700)]
[flang] Change ExprRef to return reference
ExprRef never returns a null pointer so change it to return a reference.
Add overloading for parser::Variable as they now also hold a typedExpr.
Change some of the functions that the result of ExprRef is passed to so
that they take references instead of pointers.
Original-commit: flang-compiler/f18@
2cdab6b166aa71b273b64b1f6cf520d07637b534
Reviewed-on: https://github.com/flang-compiler/f18/pull/424
Tim Keith [Sat, 20 Apr 2019 00:14:50 +0000 (17:14 -0700)]
[flang] Distinguish between unanalyzed and error expressions
When an Expr or Variable is analyzed, always fill in a GenericExprWrapper
for it. That now holds the result of expression analysis which is
std::nullopt when there is an error.
After the ExprChecker pass has finished, the typedExpr data member of
Variables and top-level Exprs should be filled in. Assert that is the
case when we access them.
Original-commit: flang-compiler/f18@
192a4e08554b105c48fcd65e6f8ed4860e64f544
Reviewed-on: https://github.com/flang-compiler/f18/pull/424
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 22 Apr 2019 17:37:07 +0000 (10:37 -0700)]
[flang] Merge pull request flang-compiler/f18#426 from flang-compiler/pmk-425
Fix flang-compiler/f18#425, build fail with libc++
Original-commit: flang-compiler/f18@
b21b3da80896b40ebd42c1a5eab74cd80943736b
Reviewed-on: https://github.com/flang-compiler/f18/pull/426
peter klausler [Mon, 22 Apr 2019 17:10:09 +0000 (10:10 -0700)]
[flang] Fix flang-compiler/f18#425, build fail with libc++
Original-commit: flang-compiler/f18@
96a553b189ceb535a120b1f4d29ddc8e9d4a841c
Reviewed-on: https://github.com/flang-compiler/f18/pull/426
Peter Klausler [Mon, 22 Apr 2019 17:08:20 +0000 (10:08 -0700)]
[flang] Merge pull request flang-compiler/f18#421 from flang-compiler/pmk3
Add some utility functions to semantics/tools
Original-commit: flang-compiler/f18@
80ef214fb8132584dafea20c763223cd7691a9bc
Reviewed-on: https://github.com/flang-compiler/f18/pull/421
peter klausler [Thu, 18 Apr 2019 22:07:40 +0000 (15:07 -0700)]
[flang] Add some utility functions to semantics/tools
Original-commit: flang-compiler/f18@
59006b3a5ce6dba7f15831e60a83153cee998012
Reviewed-on: https://github.com/flang-compiler/f18/pull/421
Tim Keith [Fri, 19 Apr 2019 21:33:04 +0000 (14:33 -0700)]
[flang] Merge pull request flang-compiler/f18#422 from flang-compiler/tsk-expr
Continue semantics checks after expression errors
Original-commit: flang-compiler/f18@
55cf9ee7aab95588fd7a4fc4423d17c2689c074e
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tim Keith [Fri, 19 Apr 2019 19:55:36 +0000 (12:55 -0700)]
[flang] Share code for analyzing Expr and Variable
Move check for empty CharBlock from here to SetLocation.
(Can an Expr ever have an empty source location?)
Original-commit: flang-compiler/f18@
7fd422f02515e4211170ba18fda04cc1405cf084
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tim Keith [Fri, 19 Apr 2019 16:21:12 +0000 (09:21 -0700)]
[flang] Continue semantics checks after expression error
Change statement semantics to continue with checks after an error
in expression analysis. This allows the compiler to report more
compilation errors. It requires that statement semantics not assume
that every parser::Expr has a valid evaluate::Expr.
For example, the test cases in coarrays02.f90 can now be moved to
coarrays01.f90. Previously the errors like "Must be a scalar value"
from ExprChecker prevented other errors from being detected by
CoarrayChecker.
Change to a stable sort of messages so that they come out in a
deterministic order. Otherwise when there are two errors at the
same location (e.g. line 71 of coarrays01.f90) the test can fail
randomly.
Original-commit: flang-compiler/f18@
f420d219096c0f40c17a07d926122840669debb4
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tree-same-pre-rewrite: false
Tim Keith [Fri, 19 Apr 2019 15:22:28 +0000 (08:22 -0700)]
[flang] Use SomeExpr rather than GenericExprWrapper in checkers
Use GetExpr in checker classes to get analyzed expressions out of parse
tree nodes. Don't assume that they are always present. Change the
utility functions in tools.h to use SomeExpr rather than
GenericExprWrapper.
Original-commit: flang-compiler/f18@
594e30d462b0592804b28146a34c74f1d1e2712a
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tree-same-pre-rewrite: false
Tim Keith [Fri, 19 Apr 2019 14:11:19 +0000 (07:11 -0700)]
[flang] Remove redundant checks enforced in the grammar
Expression analysis enforces constraints implied by the grammar,
for example scalar-expr, scalar-int-expr, etc. These no longer need
to be checked during statement semantics.
Original-commit: flang-compiler/f18@
35330b9a85a448453cb5db5f77697091658ddeec
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tree-same-pre-rewrite: false
Tim Keith [Fri, 19 Apr 2019 00:55:24 +0000 (17:55 -0700)]
[flang] Preserve source location when rewriting parse tree
When a Designator is created from a FunctionReference or
StmtFunctionStmt, copy the source data member too.
Original-commit: flang-compiler/f18@
bf91c0630f80a413a374367f0189b7fd21fbab15
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tree-same-pre-rewrite: false
Tim Keith [Fri, 19 Apr 2019 00:48:55 +0000 (17:48 -0700)]
[flang] Save and fetch analyzed Expr in Variable
Add typedExpr data member to Variable like that in Expr.
When expression analysis analyzed a Variable it stores the
resulting evaluate::Expr there.
Add GetExpr overloads in semantics/tools.h for using in statement
semantics. It gets an evaluate::Expr from an Expr, Variable, or
wrapper around one of those. It returns a const pointer so that
clients cannot modify the cached expression (and copies do not
have to be made).
Change CoarrayChecker to make use of GetExpr. It will eventually
replace all references to typedExpr in statement semantics.
Original-commit: flang-compiler/f18@
b02a41efe12032d67cbc99abe43adfb4abb422bb
Reviewed-on: https://github.com/flang-compiler/f18/pull/422
Tree-same-pre-rewrite: false
Peter Klausler [Thu, 18 Apr 2019 22:09:25 +0000 (15:09 -0700)]
[flang] Merge pull request flang-compiler/f18#420 from flang-compiler/pmk2
Flatten and fold array operations
Original-commit: flang-compiler/f18@
8693c80f33805cc48e6141d600e2898f02885173
Reviewed-on: https://github.com/flang-compiler/f18/pull/420
peter klausler [Thu, 18 Apr 2019 21:11:15 +0000 (14:11 -0700)]
[flang] Fold array operations
Original-commit: flang-compiler/f18@
e6c86ecfd10b77aeac63722c08487ae5de0a0c27
Reviewed-on: https://github.com/flang-compiler/f18/pull/420
Peter Klausler [Thu, 18 Apr 2019 21:32:22 +0000 (14:32 -0700)]
[flang] Merge pull request flang-compiler/f18#419 from flang-compiler/pmk1
More work on classes to represent characteristics of procedures.
Original-commit: flang-compiler/f18@
4db875f1dbfff42bbccc5bf54fc5a188cff14c81
Reviewed-on: https://github.com/flang-compiler/f18/pull/419
peter klausler [Thu, 18 Apr 2019 21:27:59 +0000 (14:27 -0700)]
[flang] Return a missing result
Original-commit: flang-compiler/f18@
04f9fd39b91dff2987c87fbcd6db043b6811be02
Reviewed-on: https://github.com/flang-compiler/f18/pull/419
peter klausler [Thu, 18 Apr 2019 21:25:22 +0000 (14:25 -0700)]
[flang] Use Attr_enumSize rather than an arbitrary 32.
Original-commit: flang-compiler/f18@
b6de9c6e47c9429b4c95a5e4dc2624eb0cfb5b9f
Reviewed-on: https://github.com/flang-compiler/f18/pull/419
Tree-same-pre-rewrite: false
peter klausler [Thu, 18 Apr 2019 20:25:20 +0000 (13:25 -0700)]
[flang] More work on classes to represent characteristics of procedures.
Original-commit: flang-compiler/f18@
abd3922a88b585aad829442be2748c46116b77b7
Reviewed-on: https://github.com/flang-compiler/f18/pull/419
Tree-same-pre-rewrite: false
Steve Scalpone [Wed, 17 Apr 2019 21:13:23 +0000 (14:13 -0700)]
[flang] Merge pull request flang-compiler/f18#367 from pawosm-arm/error-stop
Semantics checker for STOP and ERROR STOP statements.
Original-commit: flang-compiler/f18@
e7aedb84ea4704a17a87e7168b7503bb4190858d
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Paul Osmialowski [Tue, 16 Apr 2019 22:17:22 +0000 (23:17 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - trust in implied check
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
7a98732f72649e65fdb1a286ae976aa3f3a9d4a0
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Paul Osmialowski [Tue, 16 Apr 2019 18:50:52 +0000 (19:50 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - one more batch of post-review tweaks
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
f49ee0df050cce83cc5cdd4c04a3d16465ebeacc
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Tue, 16 Apr 2019 09:32:02 +0000 (10:32 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - remove one more function from tools
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
9937b524fab7408aac9885ce737716047ec3493e
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Tue, 16 Apr 2019 09:30:29 +0000 (10:30 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - fix compilation broken by merge commit
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
1d36ab1f432e9d5de00e072db36e028ac310a8be
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Mon, 15 Apr 2019 19:53:32 +0000 (20:53 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - remove tools function not needed after recent commit
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
1a3dbd97528a0a158cf747c33ab2156c6b48f7a7
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Fri, 12 Apr 2019 10:43:34 +0000 (11:43 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - remove overhead checks and corresponding test cases
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
6ce6234acc5dbed42fbacc111be075810f65c554
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Thu, 11 Apr 2019 20:43:35 +0000 (21:43 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - better variable names
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
8b32caa287149e72834aad3cdc45473678b57605
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Thu, 11 Apr 2019 20:25:45 +0000 (21:25 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - ExprTypeKindIsDefault added to the tools
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
669b05b27d7ad5bee6689507d40199e941838b9a
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Thu, 11 Apr 2019 18:28:47 +0000 (19:28 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - test file rename
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
b89137b6148d5d515757fb6ea9191ba23681f4c4
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Thu, 11 Apr 2019 18:27:50 +0000 (19:27 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - namespaces sorted
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
d608779668e1c4f328ebb02dcc21536b2c0fdf2c
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Thu, 11 Apr 2019 17:42:12 +0000 (18:42 +0100)]
[flang] Semantics checker for STOP and ERROR STOP statements - post review changes
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
08b564832c8a2439f35698d55f1d2a4482e6a54d
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Paul Osmialowski [Mon, 18 Mar 2019 16:19:41 +0000 (16:19 +0000)]
[flang] Semantics checker for STOP and ERROR STOP statements.
This commit introduces a new checker (StopChecker) for STOP
and ERROR STOP Fortran statements along with a test code.
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
c5541745628a8c0c4d252386675c36ea83a68006
Reviewed-on: https://github.com/flang-compiler/f18/pull/367
Tree-same-pre-rewrite: false
Tim Keith [Wed, 17 Apr 2019 17:31:49 +0000 (10:31 -0700)]
[flang] Merge pull request flang-compiler/f18#417 from flang-compiler/tsk6
Fix bug resolving internal and module functions
Original-commit: flang-compiler/f18@
ca5d61028286eb2462f7d8ed3be7fc66fadc0f9d
Reviewed-on: https://github.com/flang-compiler/f18/pull/417
Tim Keith [Wed, 17 Apr 2019 14:44:58 +0000 (07:44 -0700)]
[flang] Dump parse tree even if semantic error occurs
When -fdebug-dump-parse-tree is specified, dump the parse tree even
if semantic errors have occurred. This is necessary to see the parse
tree after it has been transformed.
Original-commit: flang-compiler/f18@
bbdb0717da953c959cb1b6c531684952c239b98b
Reviewed-on: https://github.com/flang-compiler/f18/pull/417
Tim Keith [Wed, 17 Apr 2019 14:42:16 +0000 (07:42 -0700)]
[flang] Fix bug resolving internal and module functions
When analyzing a function call in an expression we weren't properly
recognizing a ProcedureDesignator that was the name of an internal
or module function, i.e. a symbol with SubprogramDetails.
The fix is to add IsProcedure to identify symbols that correspond
to procedures. IsFunction and GetType also need to be extended to
handle this case.
Fixes flang-compiler/f18#391.
Original-commit: flang-compiler/f18@
f165f8d38ce0cefd16e0f35644e8fdcbe92ed6de
Reviewed-on: https://github.com/flang-compiler/f18/pull/417
Tree-same-pre-rewrite: false
Peter Klausler [Wed, 17 Apr 2019 15:42:57 +0000 (08:42 -0700)]
[flang] Merge pull request flang-compiler/f18#416 from flang-compiler/pmk-val-fix
Resolve ambiguous I/O unit parse in favor of CharVariable.
Original-commit: flang-compiler/f18@
cd7e907333ee9a0b1a3dfa00fb45d23e1cd6e49f
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
peter klausler [Tue, 16 Apr 2019 23:14:14 +0000 (16:14 -0700)]
[flang] More clean-up
Original-commit: flang-compiler/f18@
ba2365f5f7e0cc029d7fc2ef2729a1b30a9396c2
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
peter klausler [Tue, 16 Apr 2019 22:59:04 +0000 (15:59 -0700)]
[flang] Generalize tools, clean up common/unwrap.h with new-found knowledge
Original-commit: flang-compiler/f18@
aac16907cd0da6d9b68239f2b1a5c697af58e3f8
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
Tree-same-pre-rewrite: false
peter klausler [Tue, 16 Apr 2019 19:28:18 +0000 (12:28 -0700)]
[flang] Address review comments
Original-commit: flang-compiler/f18@
7bc3c97f1e9d58957049f955ff18aff54a3c1a60
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
Tree-same-pre-rewrite: false
peter klausler [Tue, 16 Apr 2019 17:25:22 +0000 (10:25 -0700)]
[flang] Rewrite I/O units in the parse tree when a variable is not character.
Original-commit: flang-compiler/f18@
46791a73e7f181ab4eb7ba2974c52bec07aafaa8
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
Tree-same-pre-rewrite: false
peter klausler [Tue, 16 Apr 2019 00:09:48 +0000 (17:09 -0700)]
[flang] Resolve ambiguous I/O unit parse in favor of CharVariable.
Original-commit: flang-compiler/f18@
ecabe82825d9a3a6d70ee77a580072a731eb8f86
Reviewed-on: https://github.com/flang-compiler/f18/pull/416
Tree-same-pre-rewrite: false
jeanPerier [Tue, 16 Apr 2019 08:56:08 +0000 (01:56 -0700)]
[flang] Add software subnormal flushing around host library calls for hosts that cannot do it in HW
Merge pull request flang-compiler/f18#403 from flang-compiler/jpr1
Original-commit: flang-compiler/f18@
31125bb081b454f2879c687338a53fecf6d8945c
Jean Perier [Mon, 15 Apr 2019 08:54:35 +0000 (01:54 -0700)]
[flang] Remove user warning messages for lack of subnormal HW flushing
Original-commit: flang-compiler/f18@
4aecc1bceef9c0a7de6d2dfb57c92b0939943b4b
Jean Perier [Fri, 12 Apr 2019 09:34:56 +0000 (02:34 -0700)]
[flang] also fix accessor name
Original-commit: flang-compiler/f18@
6ff8d22a57ea4dee88580a18d7e5648c492634db
Tree-same-pre-rewrite: false
Jean Perier [Fri, 12 Apr 2019 09:31:54 +0000 (02:31 -0700)]
[flang] address comment. Follow style guideline
Original-commit: flang-compiler/f18@
60da44dc7df4bd438e14fc8d8d4eb6db208f18e8
Tree-same-pre-rewrite: false
Jean Perier [Thu, 11 Apr 2019 14:59:12 +0000 (07:59 -0700)]
[flang] removed unused func in tests
Original-commit: flang-compiler/f18@
4c6e6ad4d05867ab1713c5cdcc3cf051ce43aa8e
Tree-same-pre-rewrite: false
Jean Perier [Thu, 11 Apr 2019 14:51:27 +0000 (07:51 -0700)]
[flang] Add software subnormal flusing around host library call for host arch that do not support it
Original-commit: flang-compiler/f18@
04555f535977b9604f2b89f5eaeb0ac0ee52726e
Tree-same-pre-rewrite: false
Jean Perier [Tue, 9 Apr 2019 11:27:27 +0000 (04:27 -0700)]
[flang] make host subnormal flsuhing control test runtime independent
Original-commit: flang-compiler/f18@
96b25596a7d7f1ece41571624e27bd2b4b5f5339
Tree-same-pre-rewrite: false
Jean Perier [Thu, 4 Apr 2019 14:40:03 +0000 (07:40 -0700)]
[flang] Test host subnormal flushing setup when folding on host
Original-commit: flang-compiler/f18@
78381c897d1a3291a7deba17ed5a8412fa3f3a84
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 15 Apr 2019 23:06:26 +0000 (16:06 -0700)]
[flang] Merge pull request flang-compiler/f18#415 from flang-compiler/pmk-source-variables
Capture source locations for Designators and Calls
Original-commit: flang-compiler/f18@
389423c71866205b7a3dc34f95a9de6f9daf4727
Reviewed-on: https://github.com/flang-compiler/f18/pull/415
peter klausler [Mon, 15 Apr 2019 22:53:18 +0000 (15:53 -0700)]
[flang] Fix bug found in testing
Original-commit: flang-compiler/f18@
45a1e6e3dc25132a2376a19c391242906426e3d2
Reviewed-on: https://github.com/flang-compiler/f18/pull/415
peter klausler [Mon, 15 Apr 2019 22:18:07 +0000 (15:18 -0700)]
[flang] Capture source locations for Designators and Calls
Original-commit: flang-compiler/f18@
970333fff79c0ba1574290ffe965febcd6371125
Reviewed-on: https://github.com/flang-compiler/f18/pull/415
Tree-same-pre-rewrite: false
Tim Keith [Mon, 15 Apr 2019 21:07:11 +0000 (14:07 -0700)]
[flang] Merge pull request flang-compiler/f18#414 from flang-compiler/tsk3
More coarray name resolution and semantic checks
Original-commit: flang-compiler/f18@
3008e8638d91b08e614a3a4619c6e5e387c41cec
Reviewed-on: https://github.com/flang-compiler/f18/pull/414
Tim Keith [Mon, 15 Apr 2019 18:35:12 +0000 (11:35 -0700)]
[flang] Address review comments
Original-commit: flang-compiler/f18@
577629f4895fab4f1e471694b0e728def2fe6ef5
Reviewed-on: https://github.com/flang-compiler/f18/pull/414
Tim Keith [Mon, 15 Apr 2019 17:26:20 +0000 (10:26 -0700)]
[flang] More coarray name resolution and semantic checks
Add CoarrayChecker to check for valid team-value in CHANGE TEAM,
SYNC TEAM, and image selector. Check that coarray names and selector
names are distinct in CHANGE TEAM.
Resolve the variable in a coarray-association.
Create a scope for the construct entities of a CHANGE TEAM construct.
Add ResolveSelector to resolve a parser::Selector into an Expr and
optional variable name (and a source location for messages). Make use of
ResolveSelector to handle coarray-association, as well as it's previous
use in associate-stmt.
Improve the check for C1157 in select-type-stmt and add a test.
Add a test for "Associate name must have a type".
Move ResolveName, ResolveDataRef, etc. from ResolveNamesVisitor
to DeclarationVisitor so that they are available in ConstructVisitor
as well. Add ResolveVariable and ResolveDesignator.
In the parse tree, change TeamValue from a type alias to a wrapper
class. We already had a wrapper class anyway, ImageSelectorSpec::Team,
so the new TeamValue can be used instead. This allows the member
of ImageSelectorSpec to be treated like other occurrences of TeamValue.
Original-commit: flang-compiler/f18@
f856744b542a453dea1a9e01ad4e629bf072cff3
Reviewed-on: https://github.com/flang-compiler/f18/pull/414
Tree-same-pre-rewrite: false
Steve Scalpone [Mon, 15 Apr 2019 17:59:12 +0000 (10:59 -0700)]
[flang] Merge branch 'sjs-check-return'
Conflicts:
lib/semantics/semantics.cc
test/semantics/CMakeLists.txt
Original-commit: flang-compiler/f18@
71ae0d091585537738059637144f1985fd4b05f1
Steve Scalpone [Mon, 15 Apr 2019 17:09:40 +0000 (10:09 -0700)]
[flang] FindContainingSubprogram returns a pointer, not a reference.
Original-commit: flang-compiler/f18@
7d221b09bd9b77800d85e9bc2a0084a95237be65
Steve Scalpone [Mon, 15 Apr 2019 16:41:27 +0000 (09:41 -0700)]
[flang] Avoid copying scope. Improve readability.
Original-commit: flang-compiler/f18@
5d2213cd7a68e9d125304e5d2e6e7e7fd8472b99
Tree-same-pre-rewrite: false
Steve Scalpone [Mon, 15 Apr 2019 05:16:09 +0000 (22:16 -0700)]
[flang] Scope is only ever set to the address of a Scope,
so it can never be null. The condition should be
scope->kind() != Scope::Kind::Global.
And clang-format.
Original-commit: flang-compiler/f18@
b686ab548a727561e1d65976432fed48e85b28d6
Tree-same-pre-rewrite: false
Steve Scalpone [Sun, 14 Apr 2019 03:58:25 +0000 (20:58 -0700)]
[flang] Implement semantic checks for return and alt-return.
Original-commit: flang-compiler/f18@
123c23783b55656f7cf221a4daa4d6454a30c0f5
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 15 Apr 2019 17:40:35 +0000 (10:40 -0700)]
[flang] Merge pull request flang-compiler/f18#413 from flang-compiler/pmk-no-scope-copy-constr
Delete the default copy constructor for Scope.
Original-commit: flang-compiler/f18@
d77e93fceca86368beefcf5e953ee6f63136624d
Reviewed-on: https://github.com/flang-compiler/f18/pull/413
peter klausler [Mon, 15 Apr 2019 17:12:26 +0000 (10:12 -0700)]
[flang] Delete the default copy constructor for Scope.
Original-commit: flang-compiler/f18@
e8e3e5fd467e085b7db9c472fa8bba5306089dda
Reviewed-on: https://github.com/flang-compiler/f18/pull/413
Peter Klausler [Mon, 15 Apr 2019 17:29:41 +0000 (10:29 -0700)]
[flang] Merge pull request flang-compiler/f18#406 from flang-compiler/pmk-fix-expr-constraints
Reactivate tree-driven expression constraint checking
Original-commit: flang-compiler/f18@
febcdef3681a0c431282947e308bfdb995698010
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
peter klausler [Mon, 15 Apr 2019 17:09:22 +0000 (10:09 -0700)]
[flang] Fix clang warning that crept into codebase over weekend
Original-commit: flang-compiler/f18@
8c8ad4c0d8db06f5421cfeb5fe2529ed06fe53c9
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
peter klausler [Mon, 15 Apr 2019 16:44:54 +0000 (09:44 -0700)]
[flang] reformatting
Original-commit: flang-compiler/f18@
d9bfa6f48e92ac5d305ee896db4d35ab64c0df7f
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 23:50:58 +0000 (16:50 -0700)]
[flang] pass all tests
Original-commit: flang-compiler/f18@
3cee1993a1c367aac670bbd77ac49a14e509411c
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 18:43:03 +0000 (11:43 -0700)]
[flang] Ensure no failed expression analyses without fatal errors.
Original-commit: flang-compiler/f18@
3ef8b430311653cafb8f830c08ac08d5926bb11b
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 17:49:22 +0000 (10:49 -0700)]
[flang] Capitalize INTEGER in error messages
Original-commit: flang-compiler/f18@
c00527c6812229d0515e1051c5e1c6c8bf07d283
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 17:20:42 +0000 (10:20 -0700)]
[flang] Finish up
Original-commit: flang-compiler/f18@
8c8242e6f441377ec2d209d5c178787d64f6398e
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 00:25:43 +0000 (17:25 -0700)]
[flang] Split doconcurrent04.f90 test into one with expression checks and one for later semantics pass.
Original-commit: flang-compiler/f18@
6b9c25177b606eca0cb9d8d47dd1d5ac1ee7635b
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
peter klausler [Fri, 12 Apr 2019 00:22:16 +0000 (17:22 -0700)]
[flang] Reactivate tree-driven constraint checking on expressions.
Original-commit: flang-compiler/f18@
85c4a6aab601cf2a1647ec27b29f9c6decbe1ed6
Reviewed-on: https://github.com/flang-compiler/f18/pull/406
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 15 Apr 2019 16:39:33 +0000 (09:39 -0700)]
[flang] Merge pull request flang-compiler/f18#409 from flang-compiler/klausler-patch-1
Update FortranForCProgrammers.md
Original-commit: flang-compiler/f18@
ed5d245cc330d9cccec2b62912052745ae9c0bda
Reviewed-on: https://github.com/flang-compiler/f18/pull/409
Peter Klausler [Fri, 12 Apr 2019 18:26:36 +0000 (11:26 -0700)]
[flang] Update FortranForCProgrammers.md
Clean up grammar and fix errata.
Original-commit: flang-compiler/f18@
d88645314890e8d1a546a4514049a83f9ef2ae37
Reviewed-on: https://github.com/flang-compiler/f18/pull/409
Steve Scalpone [Mon, 15 Apr 2019 08:16:29 +0000 (01:16 -0700)]
[flang] Merge pull request flang-compiler/f18#397 from pawosm-arm/ftz-aarch64
AArch64: Set flushing mode for subnormals on glibc and bionic based systems
Original-commit: flang-compiler/f18@
f252855a3aed3a22cfc5f92028967f405021630c
Reviewed-on: https://github.com/flang-compiler/f18/pull/397
Paul Osmialowski [Wed, 10 Apr 2019 11:38:36 +0000 (12:38 +0100)]
[flang] AArch64: Set flushing mode for subnormals on glibc and bionic based systems
Signed-off-by: Paul Osmialowski <pawel.osmialowski@arm.com>
Original-commit: flang-compiler/f18@
4881e3a91c34671a38ef410a771cd8e0e7a62e10
Reviewed-on: https://github.com/flang-compiler/f18/pull/397
Tim Keith [Sat, 13 Apr 2019 18:10:18 +0000 (11:10 -0700)]
[flang] Merge pull request flang-compiler/f18#410 from flang-compiler/tsk6
Remove ObjectName alternative from Designator
Original-commit: flang-compiler/f18@
7c56fc3afbbd6dfa065f0659d7eee2cbb5638a1c
Reviewed-on: https://github.com/flang-compiler/f18/pull/410
Tim Keith [Fri, 12 Apr 2019 23:30:03 +0000 (16:30 -0700)]
[flang] Remove ObjectName alternative from Designator
A simple name in a `Designator` is always parsed as a `DataRef`, not
an `ObjectName`. So remove that alternative.
`StmtFunctionStmt::ConvertToAssignment` was creating a `Designator` with
that alternative: change it to do the same thing as the parser.
Add `GetSimpleName` utility functions to check if an `Expr` or `Variable`
represents a simple name. Many of the places that checked for `ObjectName`
in `Designator` are trying to do that.
Clean up includes and forward declarations in `tools.h`.
Original-commit: flang-compiler/f18@
97d44de7b146aee601caa0bc529f7af8a6be001e
Reviewed-on: https://github.com/flang-compiler/f18/pull/410