Tim Keith [Fri, 7 Dec 2018 01:52:43 +0000 (17:52 -0800)]
[flang] Preserve order of type parameters
Type parameters were sorted by the order of the type-param-def-stmts.
But we need to preserve the order of the type-param-name-list.
The is the order of positional parameters in a derived-type-spec.
So add `paramNames` to `DerivedTypeDetails` to preserve the original
order. Using this allows us to write module files with both the
type-param-name-list and type-param-def-stmts in the original order.
Also fix a bug where a duplicate type-param-def caused a spurious
extra error. If `MakeTypeSymbol()` reports an error we should not
call `SetType()` because it will just report another error.
Original-commit: flang-compiler/f18@
3ca55b63333db3d779fe263583e3cb9fe7f4b2b1
Reviewed-on: https://github.com/flang-compiler/f18/pull/239
Tim Keith [Fri, 7 Dec 2018 18:09:51 +0000 (10:09 -0800)]
[flang] Merge pull request flang-compiler/f18#240 from flang-compiler/tsk10
Fix bug converting actual argument to Fortran
Original-commit: flang-compiler/f18@
b529f20ca3b9df397af814f6e2ad646a9e7b2f80
Reviewed-on: https://github.com/flang-compiler/f18/pull/240
Tim Keith [Fri, 7 Dec 2018 15:41:49 +0000 (07:41 -0800)]
[flang] Fix bug converting actual argument to Fortran
This fixes a problem with converting the ubound call in the example
below back to Fortran (in this case, for writing to the .mod file).
One of the ActualArguments encountered in ProcedureRef::AsFortran is
a `std::nullopt`, so we need to handle that case.
```
module m
real :: x(10)
real :: y(ubound(x, dim=1))
end module
```
Original-commit: flang-compiler/f18@
c5ace6b8241cd1ef86f0649941bf38386d99bdc4
Reviewed-on: https://github.com/flang-compiler/f18/pull/240
Tim Keith [Thu, 6 Dec 2018 22:37:32 +0000 (14:37 -0800)]
[flang] Merge pull request flang-compiler/f18#238 from flang-compiler/tsk11
Rework expression evaluation in symbol table
Original-commit: flang-compiler/f18@
0e91bd34729d4d718887b70a09a40f7a97aecc50
Reviewed-on: https://github.com/flang-compiler/f18/pull/238
Tim Keith [Thu, 6 Dec 2018 14:59:37 +0000 (06:59 -0800)]
[flang] Rework when symbol table expressions are evaluated
It's not good enough to evaluate expressions in the symbol table after
name resolution has completed. This is because we need the values of
constant expressions for types, for example, we need to evaluate `k` in
`integer(k) :: x` to know the type of `x`.
So, eliminate `LazyExpr` and call `EvaluateExpr()` on expressions that
we need in the symbol table. The latter evaluates and folds an
expression in the current context. This is now possible because symbols
are added to `parser::Name` as soon as possible rather than in a pass
after name resolution. Along with `LazyExpr` we can eliminate the whole
`ResolveSymbolExprs` pass that used to resolve them.
In resolve-names.cc, many `Pre` functions are changed to `Post` so that
names are resolved before doing the associated processing. For example,
with intrinsic type specs, names in the kind expression must be resolved
before attempting to evaluate that expression.
In `GetSymbolType()` in type.cc, handle both `ObjectEntityDetails` and
`EntityDetails` by using `Symbol::GetType()`.
Add explicit declarations in label01.F90 because we can't handle
implicitly typed array bounds yet.
Original-commit: flang-compiler/f18@
d67716640baeedca150205f9f3845ceb5d2f6402
Reviewed-on: https://github.com/flang-compiler/f18/pull/238
Tim Keith [Wed, 5 Dec 2018 21:11:55 +0000 (13:11 -0800)]
[flang] Fix error is Negation on integer
The minus sign was missing.
Original-commit: flang-compiler/f18@
5fa0a97de5dcdcfeecc3999a1f84dd7858f5b35c
Reviewed-on: https://github.com/flang-compiler/f18/pull/238
Tree-same-pre-rewrite: false
Tim Keith [Sat, 17 Nov 2018 00:40:00 +0000 (16:40 -0800)]
[flang] Add common base class for context, Walk(), and Say()
We need access to the SemanticsContext and Walk() function everywhere,
so move them to a BaseVisitor, a base class at the root of the class
hierarchy.
Also move MessageHandler to be a data member of BaseVisitor and forward
Say calls to it.
Original-commit: flang-compiler/f18@
eb9adc342a5495b0070a14d163f55209c63623d7
Reviewed-on: https://github.com/flang-compiler/f18/pull/238
Tree-same-pre-rewrite: false
Tim Keith [Fri, 16 Nov 2018 20:43:08 +0000 (12:43 -0800)]
[flang] Change when symbol is set in parser::Name
Rework how `parser::Name` is resolved to contain a `Symbol`. so that
constants in types can be evaluated. For example:
```
integer, parameter :: k = 8
integer(k) :: i
```
The old approach of collecting the symbols at the end of name resolution
and filling in the `parser::Name` does not work because the type of `i`
needs to be set in the symbol table.
The symbol field in `parser::Name` is now mutable so that we can set it
during name resolution. `RewriteParseTree` no longer needs to do that
(it still warns about unresolved ones), so it does not need to collect
symbols and fill them in. Consequently, we can eliminate "occurrences"
from symbols -- we just need the name where each is first defined.
This requires a lot of refactoring in `resolve-names.cc` to pass around
`parser::Name` rather than `SourceName` so that we can resolve the
name to a symbol.
Fix some bugs where we stored `SourceName *` instead of `SourceName`
in the symbol table. The pointers were into the parse tree, so they
were only valid as long as the parse tree was around. The symbol
table needs to remain valid longer than that, so the names need to
be copied. `parser::Name` is not used in the symbol table.
Eliminate `GenericSpec`. Currently all we need to do is to resolve
the kinds of GenericSpec that contain names.
Add `ScopeName` kind of `MiscDetails` for when we need a symbol in
the scope to match the name of the scope. For example, `module m`
cannot contain a declaration of a new `m`. Subprograms need real
details because they can be called recursively.
Fix output of partially resolved modules where we know it is a submodule
but have not yet resolved the ancestor.
Original-commit: flang-compiler/f18@
5c1a4b99d2421f5b32e83426488d3fdf7951cfba
Reviewed-on: https://github.com/flang-compiler/f18/pull/238
Tree-same-pre-rewrite: false
Peter Klausler [Wed, 5 Dec 2018 21:36:03 +0000 (13:36 -0800)]
[flang] Merge pull request flang-compiler/f18#237 from flang-compiler/pmk1
Use `std::optional<>::value()` where appropriate in place of `operator*`.
Original-commit: flang-compiler/f18@
611ee9be5d610a6593072672b358f1ab038681ad
Reviewed-on: https://github.com/flang-compiler/f18/pull/237
peter klausler [Wed, 5 Dec 2018 21:06:00 +0000 (13:06 -0800)]
[flang] one more file
Original-commit: flang-compiler/f18@
9d3f502e803ceb4a72f5ba9da9d54477656c8b1d
Reviewed-on: https://github.com/flang-compiler/f18/pull/237
peter klausler [Wed, 5 Dec 2018 21:03:39 +0000 (13:03 -0800)]
[flang] Use std::optional<>::value() where appropriate.
Original-commit: flang-compiler/f18@
4278b79b3dc3b73a8229a24d11d195015e7f2840
Reviewed-on: https://github.com/flang-compiler/f18/pull/237
Tree-same-pre-rewrite: false
Peter Klausler [Wed, 5 Dec 2018 00:39:33 +0000 (16:39 -0800)]
[flang] Merge pull request flang-compiler/f18#236 from flang-compiler/pmk1
work around template specialization problem
Original-commit: flang-compiler/f18@
d122b4e618111c05deb9abaadef6d636fa11a72c
Reviewed-on: https://github.com/flang-compiler/f18/pull/236
peter klausler [Tue, 4 Dec 2018 23:52:50 +0000 (15:52 -0800)]
[flang] work around template specialization problem
Original-commit: flang-compiler/f18@
1d67d72bea24a4ade66920527d2cc9104d2dfd48
Reviewed-on: https://github.com/flang-compiler/f18/pull/236
Peter Klausler [Tue, 4 Dec 2018 18:51:41 +0000 (10:51 -0800)]
[flang] Merge pull request flang-compiler/f18#235 from flang-compiler/pmk1
last minute changes for recent PR that were not pushed, sorry
Original-commit: flang-compiler/f18@
f9ee3753ea1e151ddfe56a0db37aa9e69626da7f
Reviewed-on: https://github.com/flang-compiler/f18/pull/235
peter klausler [Tue, 4 Dec 2018 18:21:38 +0000 (10:21 -0800)]
[flang] last minute changes for recent PR that were not pushed, sorry
Original-commit: flang-compiler/f18@
9f9258e0067bfe9406f61f5f67d37b54f004e266
Reviewed-on: https://github.com/flang-compiler/f18/pull/235
Peter Klausler [Tue, 4 Dec 2018 18:18:10 +0000 (10:18 -0800)]
[flang] Merge pull request flang-compiler/f18#234 from flang-compiler/pmk0
Refactoring of expr analysis API and implementation
Original-commit: flang-compiler/f18@
2a1fb648d96811c4d7ee0177b17aed94b66e3077
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
peter klausler [Tue, 4 Dec 2018 01:20:28 +0000 (17:20 -0800)]
[flang] fixes
Original-commit: flang-compiler/f18@
d312b2298a36c5676fdac66ec2acbf188dd80f4d
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
peter klausler [Tue, 4 Dec 2018 00:44:25 +0000 (16:44 -0800)]
[flang] address review comments
Original-commit: flang-compiler/f18@
2f4b7ac97cd35e7a4d1e4ea558a8bb98c34b663a
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
Tree-same-pre-rewrite: false
peter klausler [Mon, 3 Dec 2018 19:40:53 +0000 (11:40 -0800)]
[flang] complete refactor of expression analysis api and impl
Original-commit: flang-compiler/f18@
fc83cdeabb38b94061fec5f70dc81b69c28ebe50
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
Tree-same-pre-rewrite: false
peter klausler [Sat, 1 Dec 2018 00:04:51 +0000 (16:04 -0800)]
[flang] checkpoint before another refactoring
Original-commit: flang-compiler/f18@
033efb95c2aff84ac17d460438e43573fab5eac6
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
Tree-same-pre-rewrite: false
peter klausler [Fri, 30 Nov 2018 23:23:33 +0000 (15:23 -0800)]
[flang] checkpoint
Original-commit: flang-compiler/f18@
1c65ed9a6f73b3b70a7cb6e023e55e196bf1dd4f
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
Tree-same-pre-rewrite: false
peter klausler [Fri, 30 Nov 2018 22:03:05 +0000 (14:03 -0800)]
[flang] checkpoint during refactor
Original-commit: flang-compiler/f18@
01fe82b95bebb5977fb5fa9c90ea1b8a6894a18c
Reviewed-on: https://github.com/flang-compiler/f18/pull/234
Tree-same-pre-rewrite: false
Peter Klausler [Thu, 29 Nov 2018 21:39:51 +0000 (13:39 -0800)]
[flang] Merge pull request flang-compiler/f18#233 from flang-compiler/pmk1
small TODO: eliminate per-specialization flag in expression type representation
Original-commit: flang-compiler/f18@
03a2a10a48149432d69e5ad0af24d033e094ced7
Reviewed-on: https://github.com/flang-compiler/f18/pull/233
peter klausler [Thu, 29 Nov 2018 18:25:46 +0000 (10:25 -0800)]
[flang] address TODO: replace Type flag member with IsSpecificIntrinsicType<T> predicate
Original-commit: flang-compiler/f18@
68b89c008ffb8df9e706633c09a2257d0e970bb9
Reviewed-on: https://github.com/flang-compiler/f18/pull/233
Tim Keith [Thu, 29 Nov 2018 20:27:34 +0000 (12:27 -0800)]
[flang] Merge pull request flang-compiler/f18#230 from flang-compiler/tsk2
Add mapping of source location to Scope
Original-commit: flang-compiler/f18@
bec1cfdc05bacefa000dccfec78670affce3f1be
Reviewed-on: https://github.com/flang-compiler/f18/pull/230
Tim Keith [Thu, 29 Nov 2018 17:10:19 +0000 (09:10 -0800)]
[flang] Add ExtendToCover() to CharBlock and Interval
Use them in Scope::AddSourceRange().
Original-commit: flang-compiler/f18@
ec2f6db46a42998ee1b1bed955538387fadf5c09
Reviewed-on: https://github.com/flang-compiler/f18/pull/230
Tim Keith [Wed, 28 Nov 2018 23:55:55 +0000 (15:55 -0800)]
[flang] Add mapping of source location to Scope
Each Scope now tracks the source locations that it and its nested scopes
span. This is achieved by extending the source range of a scope for each
statement encountered while it is the current scope.
Semantics::FindScope maps a source location (from the cooked character
stream) to the narrowest scope that contains it.
Original-commit: flang-compiler/f18@
7b4d2bb113e4a1018c5f6aa740b02e423ff61799
Reviewed-on: https://github.com/flang-compiler/f18/pull/230
Tree-same-pre-rewrite: false
Tim Keith [Thu, 29 Nov 2018 20:26:57 +0000 (12:26 -0800)]
[flang] Merge pull request flang-compiler/f18#232 from flang-compiler/tsk9
Change formatting of common::visitors{}
Original-commit: flang-compiler/f18@
a442658ec57157ea40d06d24e8a814648d19cf5e
Reviewed-on: https://github.com/flang-compiler/f18/pull/232
Tim Keith [Thu, 29 Nov 2018 17:27:34 +0000 (09:27 -0800)]
[flang] Change formatting of common::visitors{}
Including a comma after the last lambda in a `common::visitors{}` list
causes clang-format to do a better job of formatting them.
Add that recommendation to C++style.md, insert the missing commas,
and reformat the changed files.
Original-commit: flang-compiler/f18@
a2486ca3b6daf6cfc3a5cf95ad89719297d04b72
Reviewed-on: https://github.com/flang-compiler/f18/pull/232
Peter Klausler [Thu, 29 Nov 2018 17:36:34 +0000 (09:36 -0800)]
[flang] Merge pull request flang-compiler/f18#231 from flang-compiler/pmk0
Lossless binary floating-point -> decimal, and correct decimal -> binary FP
Original-commit: flang-compiler/f18@
57cf544a089eaac266c3b8e5d153722f0d142e15
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
peter klausler [Thu, 29 Nov 2018 00:44:38 +0000 (16:44 -0800)]
[flang] dodge gcc warning on test
Original-commit: flang-compiler/f18@
10e9a820885a3fa91e4f60dd95f810527a5c6bc3
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
peter klausler [Thu, 29 Nov 2018 00:20:16 +0000 (16:20 -0800)]
[flang] tested
Original-commit: flang-compiler/f18@
e77681a2ff914284f5cd969f403c966fd5f770b7
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
Tree-same-pre-rewrite: false
peter klausler [Wed, 28 Nov 2018 17:13:01 +0000 (09:13 -0800)]
[flang] debugged full precision FP formatting
Original-commit: flang-compiler/f18@
ac9a684b910e6bf3f32496883b16d6b3e547169e
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
Tree-same-pre-rewrite: false
peter klausler [Wed, 28 Nov 2018 00:23:07 +0000 (16:23 -0800)]
[flang] debugging
Original-commit: flang-compiler/f18@
9f30eac130514fa04212d402734d41c63078bb9e
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
Tree-same-pre-rewrite: false
peter klausler [Mon, 26 Nov 2018 19:18:53 +0000 (11:18 -0800)]
[flang] initial exact decimal conversion code
Original-commit: flang-compiler/f18@
a34afdc73b8ca43cb20234849a2e9d3f77bbc8e6
Reviewed-on: https://github.com/flang-compiler/f18/pull/231
Tree-same-pre-rewrite: false
Peter Klausler [Wed, 28 Nov 2018 18:31:41 +0000 (10:31 -0800)]
[flang] Merge pull request flang-compiler/f18#229 from flang-compiler/pmk1
document C++17 feature usage
Original-commit: flang-compiler/f18@
d1d18fad363f6e59c8c18e2db5a41a8474751a83
Reviewed-on: https://github.com/flang-compiler/f18/pull/229
peter klausler [Mon, 26 Nov 2018 20:46:11 +0000 (12:46 -0800)]
[flang] proofreading
Original-commit: flang-compiler/f18@
2af5c40bc144cdf180dd3eef19ffa697a68f4fc1
Reviewed-on: https://github.com/flang-compiler/f18/pull/229
peter klausler [Mon, 26 Nov 2018 20:42:11 +0000 (12:42 -0800)]
[flang] document C++17 feature usage
Original-commit: flang-compiler/f18@
40d84ca20f1b7f53661fa1101646f7071a4cb962
Reviewed-on: https://github.com/flang-compiler/f18/pull/229
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 19 Nov 2018 22:49:57 +0000 (14:49 -0800)]
[flang] Merge pull request flang-compiler/f18#228 from flang-compiler/pmk0
Extend `AnalyzeExpr` to handle wrapped expression parse trees
Original-commit: flang-compiler/f18@
7ddf0c159f70d189dbfa38fa4369b3101fa453ae
Reviewed-on: https://github.com/flang-compiler/f18/pull/228
peter klausler [Mon, 19 Nov 2018 19:14:41 +0000 (11:14 -0800)]
[flang] Analyze wrapped expressions
Original-commit: flang-compiler/f18@
b34db5d38f03b11b85890696569a22d506a98736
Reviewed-on: https://github.com/flang-compiler/f18/pull/228
peter klausler [Mon, 19 Nov 2018 18:29:04 +0000 (10:29 -0800)]
[flang] fix comments
Original-commit: flang-compiler/f18@
a01eaaacc2af1caffeb0a788eecf3cb25f230c64
Reviewed-on: https://github.com/flang-compiler/f18/pull/228
Tree-same-pre-rewrite: false
Peter Klausler [Thu, 15 Nov 2018 00:12:23 +0000 (16:12 -0800)]
[flang] Merge pull request flang-compiler/f18#226 from flang-compiler/pmk2
fix issue#224
Original-commit: flang-compiler/f18@
cd6e4f0adaecde8d58e03c67542f9a9b6c3b68d2
Reviewed-on: https://github.com/flang-compiler/f18/pull/226
peter klausler [Wed, 14 Nov 2018 23:44:17 +0000 (15:44 -0800)]
[flang] fix issue#224
Original-commit: flang-compiler/f18@
c40e197c61c8192fe7932932390417c8b47f79c6
Reviewed-on: https://github.com/flang-compiler/f18/pull/226
Peter Klausler [Wed, 14 Nov 2018 23:23:40 +0000 (15:23 -0800)]
[flang] Merge pull request flang-compiler/f18#225 from flang-compiler/pmk1
Roll up a bunch of changes
Original-commit: flang-compiler/f18@
9ad19cd89298a3d4a4d468145b8a5dffec8b936d
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
peter klausler [Wed, 14 Nov 2018 22:35:10 +0000 (14:35 -0800)]
[flang] review comments
Original-commit: flang-compiler/f18@
32c02cb668f17e31061c3f52c834e4029e410381
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
peter klausler [Wed, 14 Nov 2018 19:57:47 +0000 (11:57 -0800)]
[flang] bugfixing and review comments
Original-commit: flang-compiler/f18@
6df4a52d6bb2575c3eb4726b633a0cf98da0d298
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Wed, 14 Nov 2018 19:12:09 +0000 (11:12 -0800)]
[flang] bugfixing from regression testing
Original-commit: flang-compiler/f18@
f1bcaa0292cb0eec2fdc10df347b78c2329a379e
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Wed, 14 Nov 2018 00:26:26 +0000 (16:26 -0800)]
[flang] remove unused variable
Original-commit: flang-compiler/f18@
64773cef2c1b31a72fb61c2cdc8dce7eeddefffe
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Wed, 14 Nov 2018 00:02:52 +0000 (16:02 -0800)]
[flang] revamp Real::Read(), use it for mutual testing of ScaledDecimals
Original-commit: flang-compiler/f18@
a2054bb9dfa3753f49ab7d35c842ed47b41fc374
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Tue, 13 Nov 2018 19:29:54 +0000 (11:29 -0800)]
[flang] binary->decimal conversion for module files
Original-commit: flang-compiler/f18@
6364799e7adda3b6b5280b0305d55a2bfa7eabe0
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Thu, 8 Nov 2018 17:32:28 +0000 (09:32 -0800)]
[flang] save work in progress
Original-commit: flang-compiler/f18@
98bac3d297af460ae80467f257f724cd7b041dbd
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Mon, 5 Nov 2018 23:02:37 +0000 (15:02 -0800)]
[flang] Rename Dump() as AsFortran(), tweak output for use in .mod files
Original-commit: flang-compiler/f18@
4e9dd16d6a84c728a86e187fe59500638ebbfe35
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Mon, 5 Nov 2018 22:08:17 +0000 (14:08 -0800)]
[flang] fix warning
Original-commit: flang-compiler/f18@
92003070de18bc7f4b78a8b00d72c324a554d523
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Mon, 5 Nov 2018 21:48:00 +0000 (13:48 -0800)]
[flang] multi-byte character TODOs
Original-commit: flang-compiler/f18@
3bd2d227dc4c6c3f6d721e95c8cd07075021f462
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Fri, 2 Nov 2018 23:42:45 +0000 (16:42 -0700)]
[flang] more substring clean-up
Original-commit: flang-compiler/f18@
e1c19ccd168f2dc3f9df9ab9328bdc6bbb61a5b4
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Fri, 2 Nov 2018 21:48:28 +0000 (14:48 -0700)]
[flang] documentation
Original-commit: flang-compiler/f18@
92f0c397f658a865ecab347b31773999f6503693
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Fri, 2 Nov 2018 21:38:27 +0000 (14:38 -0700)]
[flang] documentation
Original-commit: flang-compiler/f18@
9aba35a2582bbb8100a275d701e3013dfa478c45
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Fri, 2 Nov 2018 21:13:12 +0000 (14:13 -0700)]
[flang] BaseObjects and static data placeholder
Original-commit: flang-compiler/f18@
3ddfd5cadfafffe9c58cedd7a625cd071820c79c
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Fri, 2 Nov 2018 17:48:20 +0000 (10:48 -0700)]
[flang] update pointer documentation
Original-commit: flang-compiler/f18@
0f04468c000f23f606d8cf14348af7ee318fd298
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Thu, 1 Nov 2018 19:39:09 +0000 (12:39 -0700)]
[flang] small tweaks
Original-commit: flang-compiler/f18@
5bbd6c3c1995edf5ee909648e517ca3dde2560e0
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Thu, 1 Nov 2018 18:18:12 +0000 (11:18 -0700)]
[flang] take literal substrings out of variable.h
Original-commit: flang-compiler/f18@
a762b70bebc5428adec75b85801aef8ee88bcf42
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Tue, 30 Oct 2018 23:25:10 +0000 (16:25 -0700)]
[flang] allow array constructors in all expressions
Original-commit: flang-compiler/f18@
6dd5431cd9a0da203f098487a7d5db379c64b3ea
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Tue, 30 Oct 2018 22:24:35 +0000 (15:24 -0700)]
[flang] represent array constructors
Original-commit: flang-compiler/f18@
74ccff6b39972ada3d344ae8ee72d4c18842d35c
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Tue, 30 Oct 2018 20:30:56 +0000 (13:30 -0700)]
[flang] Clean up Designator and GetSymbol()
Original-commit: flang-compiler/f18@
61c0af323c13f7ad97521332603497d21638e2f9
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Tue, 30 Oct 2018 19:44:09 +0000 (12:44 -0700)]
[flang] Make all Expr<> instances derived from ExpressionBase
Original-commit: flang-compiler/f18@
f7d1a21532a51dc10aa7a8fd775e3404320986a6
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
peter klausler [Mon, 29 Oct 2018 22:25:35 +0000 (15:25 -0700)]
[flang] Address TODO: define IsAssumedRank predicate, use it
Original-commit: flang-compiler/f18@
f75c3e0ccfc763644afc3b0fe37861e3a5adcdd9
Reviewed-on: https://github.com/flang-compiler/f18/pull/225
Tree-same-pre-rewrite: false
jeanPerier [Thu, 8 Nov 2018 10:37:53 +0000 (11:37 +0100)]
[flang] Merge pull request flang-compiler/f18#222 from flang-compiler/jpr0
C interoperability: Fixes CFI_CDESC_T macro and CFI_establish function
Original-commit: flang-compiler/f18@
e104912ef1f146817b411162e8a657e504a8fc82
Reviewed-on: https://github.com/flang-compiler/f18/pull/222
Jean Perier [Wed, 7 Nov 2018 10:27:04 +0000 (02:27 -0800)]
[flang] Simplified C++ CFI_CDESC_T implem. Added local namespace around
Original-commit: flang-compiler/f18@
456f5a09949701b74b02834668f161bbb5d68009
Reviewed-on: https://github.com/flang-compiler/f18/pull/222
Jean Perier [Tue, 6 Nov 2018 17:06:10 +0000 (09:06 -0800)]
[flang] Changed CFI_CDESC_T macro in C++. Cleaned related tests.
Original-commit: flang-compiler/f18@
752f8eefa0cdf310afcdab50241885a644ea2fb4
Reviewed-on: https://github.com/flang-compiler/f18/pull/222
Tree-same-pre-rewrite: false
Jean Perier [Mon, 5 Nov 2018 15:07:18 +0000 (07:07 -0800)]
[flang] Fixed CFI_establish. Improved and renamed related test suit
Original-commit: flang-compiler/f18@
b75d858e4f96c21da67a8c7ecc4d4bdbcc9c8498
Reviewed-on: https://github.com/flang-compiler/f18/pull/222
Tree-same-pre-rewrite: false
Jean Perier [Fri, 2 Nov 2018 16:42:35 +0000 (09:42 -0700)]
[flang] Fixed CFI_DESC_T macro. Started unit test for C interop
Original-commit: flang-compiler/f18@
f29b80c7582f6b5f18ca26f6fd9466da56479664
Reviewed-on: https://github.com/flang-compiler/f18/pull/222
Tree-same-pre-rewrite: false
Tim Keith [Wed, 7 Nov 2018 20:43:56 +0000 (12:43 -0800)]
[flang] Merge pull request flang-compiler/f18#223 from flang-compiler/tsk5
Resolve expressions in symbols
Original-commit: flang-compiler/f18@
6f253b5514740198bf732aa2e269e97de34d2888
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tim Keith [Wed, 7 Nov 2018 20:41:52 +0000 (12:41 -0800)]
[flang] Address review comments
Change `const Symbol *` to `const Symbol &`.
Simplify expression for `Assumed()` and `Deferred()` in `ParamValue`.
Original-commit: flang-compiler/f18@
b3e76706ca72b5d324c96bee4db8efae34e3135e
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tim Keith [Wed, 7 Nov 2018 01:18:06 +0000 (17:18 -0800)]
[flang] Resolve expressions in symbols
Add `LazyExpr` class to represent expressions in the symbol table.
Initially they contain a pointer to an expression in the parse tree.
After name resolution is complete and symbols are filled in in the parse
tree, `LazyExpr`s are resolved to `evaluate::Expr<evaluate::SomeType>`.
This is done by `ResolveSymbolExprs()`.
Change `Bound` and `ParamValue` to save their value as a `LazyExpr`.
Change `ObjectEntityDetails` and `TypeParamDetails` to save the initial
value as a `LazyExpr`.
Eliminate `IntExpr` and `IntConst` classes, which were just place-holders.
Add `Clone()` to `ShapeSpec`, `Bound`, `LazyExpr`. Normally they should
be moved but in `ObjectEntityDetails::set_shape()` we need to make copies.
Save type parameter values in `derivedTypeSpec_`. `typeParamValue_` is
not needed.
Write out initial values, type parameter values, and bounds to .mod files.
Evaluate parameter values in expressions.
Make some errors non-fatal so that tests can continue to pass.
Original-commit: flang-compiler/f18@
b90cadfc53c6e31c5f289eadc382bc3908811b86
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tree-same-pre-rewrite: false
Tim Keith [Wed, 7 Nov 2018 01:12:02 +0000 (17:12 -0800)]
[flang] Remove include of symbol.h from variable.h
This include will lead to circularities when semantics/type.h needs
include evaluate/expression.h. There will probably be a different
long-term solution.
Original-commit: flang-compiler/f18@
c7fa8150368f7d3a9bb200fc5502ece0a99a8631
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tree-same-pre-rewrite: false
Tim Keith [Mon, 5 Nov 2018 23:03:46 +0000 (15:03 -0800)]
[flang] Use forward declarations to reduce includes
Original-commit: flang-compiler/f18@
384af49342fbf767d63fe2a6eb8fa8a9a790f91d
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tree-same-pre-rewrite: false
Tim Keith [Mon, 5 Nov 2018 22:36:11 +0000 (14:36 -0800)]
[flang] Move Details rather than copying
We don't need to copy the various Details classes. We will be adding
expressions to some of them (e.g. for bounds or initial values) and they
should generally be moved as well.
In check-do-concurrent.cc, put pointers to Symbols in the symbol
collections rather than copies.
Original-commit: flang-compiler/f18@
cdedfc9b3ee554bf6b1f94adbbb92f8a515e1cbd
Reviewed-on: https://github.com/flang-compiler/f18/pull/223
Tree-same-pre-rewrite: false
Peter Klausler [Thu, 1 Nov 2018 22:06:22 +0000 (15:06 -0700)]
[flang] Merge pull request flang-compiler/f18#221 from flang-compiler/pmk0
Document various pointer-like abstractions
Original-commit: flang-compiler/f18@
11b472741de3465a3ecd915276b3f6517baa0bbf
Reviewed-on: https://github.com/flang-compiler/f18/pull/221
peter klausler [Thu, 1 Nov 2018 22:06:01 +0000 (15:06 -0700)]
[flang] address review comment
Original-commit: flang-compiler/f18@
b5da6b44928d08befaf8a1a1bd6b88cda59e7b21
Reviewed-on: https://github.com/flang-compiler/f18/pull/221
peter klausler [Thu, 1 Nov 2018 20:43:24 +0000 (13:43 -0700)]
[flang] document pointer variations
Original-commit: flang-compiler/f18@
4c718f56646b8522584dd2d3c23defcaf0c82c25
Reviewed-on: https://github.com/flang-compiler/f18/pull/221
Tree-same-pre-rewrite: false
peter klausler [Thu, 1 Nov 2018 20:18:28 +0000 (13:18 -0700)]
[flang] document pointer variations
Original-commit: flang-compiler/f18@
70c55eb1eb75e73165a62821f2666c31270235de
Reviewed-on: https://github.com/flang-compiler/f18/pull/221
Tree-same-pre-rewrite: false
Peter Klausler [Mon, 29 Oct 2018 16:56:25 +0000 (09:56 -0700)]
[flang] Merge pull request flang-compiler/f18#219 from flang-compiler/pmk0
A refactoring of folding
Original-commit: flang-compiler/f18@
a056aaabbbb78e64432393467404d84e253a9ece
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
peter klausler [Mon, 29 Oct 2018 16:26:33 +0000 (09:26 -0700)]
[flang] readability improvement from Tim
Original-commit: flang-compiler/f18@
14179ead7c3aa5a3b26c14b636d78f9f12523529
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
peter klausler [Fri, 26 Oct 2018 23:31:20 +0000 (16:31 -0700)]
[flang] Back out needless macro change that led to clang-format grief
Original-commit: flang-compiler/f18@
5a6e55df1163348b3800e088b4dd0dacd01c1973
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Fri, 26 Oct 2018 22:55:28 +0000 (15:55 -0700)]
[flang] clean up comments, put out for review
Original-commit: flang-compiler/f18@
26a3221fc40ca0c3047c11b731426d270e072880
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Fri, 26 Oct 2018 22:13:30 +0000 (15:13 -0700)]
[flang] prepare for merge
Original-commit: flang-compiler/f18@
5d2490b1c8af0870ad1d399fce7c500f5d07e6be
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Fri, 26 Oct 2018 22:10:24 +0000 (15:10 -0700)]
[flang] Complete refactor of Fold() - checkpoint
Original-commit: flang-compiler/f18@
5061171268ef6a4552aa365642d3f5ad120f871f
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Wed, 24 Oct 2018 21:54:53 +0000 (14:54 -0700)]
[flang] merge
Original-commit: flang-compiler/f18@
d0cd9544f54e8fc841bb16d00841b6ace2f548ad
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Wed, 24 Oct 2018 21:06:46 +0000 (14:06 -0700)]
[flang] complete new Fold
Original-commit: flang-compiler/f18@
4d1726778f193c8813a8cc63fad0b46faf8d2fec
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Wed, 24 Oct 2018 17:43:30 +0000 (10:43 -0700)]
[flang] dodge gcc 7.2.0 build hiccup
Original-commit: flang-compiler/f18@
4a9e862d74f134241a0e1a9cd3fc3562041b3f74
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Wed, 24 Oct 2018 00:05:24 +0000 (17:05 -0700)]
[flang] merge with master
Original-commit: flang-compiler/f18@
53f15da06aab657e94ecea342ef77a07e5e38a27
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Tue, 23 Oct 2018 23:48:06 +0000 (16:48 -0700)]
[flang] new refactored Fold
Original-commit: flang-compiler/f18@
061868fd857b255f8c1b49f3cb300666f5e1edda
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Mon, 22 Oct 2018 22:20:42 +0000 (15:20 -0700)]
[flang] start refactoring of Constant and Fold
Original-commit: flang-compiler/f18@
53f7174c3dddd743146e1cff9ffcde0db4c89b6b
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Thu, 18 Oct 2018 20:03:51 +0000 (13:03 -0700)]
[flang] Refactor some lib/evaluate headers for sanity
Original-commit: flang-compiler/f18@
9530378c39d0206a93eafd7d19b7f52c82e8f904
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Thu, 18 Oct 2018 17:50:55 +0000 (10:50 -0700)]
[flang] rearrange arguments into dummy argument order
Original-commit: flang-compiler/f18@
3bab0f55de1b66d38bd15a841459c3a36cf29d30
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Wed, 17 Oct 2018 22:09:48 +0000 (15:09 -0700)]
[flang] refactor a bit, and rearrange actual arguments into dummy order on intrinsic calls
Original-commit: flang-compiler/f18@
1f50ace68b00a7db4b75ebce5616032501e48457
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
peter klausler [Tue, 16 Oct 2018 23:36:43 +0000 (16:36 -0700)]
[flang] Use Attrs for intrinsic results rather than flags.
Original-commit: flang-compiler/f18@
14c9199718138dee4b8cf1e673935f794c366ac1
Reviewed-on: https://github.com/flang-compiler/f18/pull/219
Tree-same-pre-rewrite: false
Tim Keith [Fri, 26 Oct 2018 18:58:13 +0000 (11:58 -0700)]
[flang] Merge pull request flang-compiler/f18#218 from flang-compiler/tsk2
More name resolution for submodules
Original-commit: flang-compiler/f18@
f574667aaad4fe1135d3427df6a21b8b0adcbb12
Reviewed-on: https://github.com/flang-compiler/f18/pull/218
Tim Keith [Fri, 26 Oct 2018 18:57:08 +0000 (11:57 -0700)]
[flang] Address review comments
Original-commit: flang-compiler/f18@
c3597a1984811900ef8da55f15374417373f5492
Reviewed-on: https://github.com/flang-compiler/f18/pull/218
Tim Keith [Fri, 26 Oct 2018 14:34:50 +0000 (07:34 -0700)]
[flang] Process SeparateModuleSubprogram during name resolution
When a SeparateModuleSubprogram is encountered, check that there is a
corresponding declaration in the current module/submodule or an ancestor.
When it's the current program unit, special handling is required to
avoid trying to declare it again.
Module subprograms with the `MODULE` prefix are handled similarly.
The `hasModulePrefix` flag is passed in to `BeginSubprogram` to
distinguish this case.
Extract common part of `Post(SubroutineStmt)` and `Post(FunctionStmt)` into
`PostSubprogramStmt`. Add code there to ensure that separate module
procedures do not have `EXTERNAL` set. This requires a fix to `ModFileWriter`
to correctly decide when a subprogram is declared in an interface block.
Extract `WalkSubprogramPart` into a separate function. It walks the
internal or module subprograms collecting their names. It is needed to
handle separate module subprograms.
Original-commit: flang-compiler/f18@
339b65f2517cebc115eba4ce91c1d8b304802939
Reviewed-on: https://github.com/flang-compiler/f18/pull/218
Tree-same-pre-rewrite: false