platform/upstream/llvm.git
5 years ago[flang] restructure work in progress in semantics/expression.cc; checkpoint before...
peter klausler [Fri, 31 Aug 2018 20:28:21 +0000 (13:28 -0700)]
[flang] restructure work in progress in semantics/expression.cc; checkpoint before finishing operators

Original-commit: flang-compiler/f18@5d991b0df38937f59aeade66fe413b2b5d4d3a4d
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint
peter klausler [Thu, 30 Aug 2018 17:09:44 +0000 (10:09 -0700)]
[flang] checkpoint

Original-commit: flang-compiler/f18@04697760f34f6d56bf5ca96ed7dad8051b29e7c3
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] cleanup
peter klausler [Wed, 29 Aug 2018 19:26:22 +0000 (12:26 -0700)]
[flang] cleanup

Original-commit: flang-compiler/f18@99c4bcb60c66b591b24143be194ba85ff692977d
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint - building again now with all compilers
peter klausler [Tue, 28 Aug 2018 23:35:45 +0000 (16:35 -0700)]
[flang] checkpoint - building again now with all compilers

Original-commit: flang-compiler/f18@8cd746910de1f256fbab4f80d125b535e4cafe1a
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint once g++ can build again
peter klausler [Tue, 28 Aug 2018 22:15:18 +0000 (15:15 -0700)]
[flang] checkpoint once g++ can build again

Original-commit: flang-compiler/f18@1c09641a6daf04909561cc8d5ff7b7c223e961c3
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] merge with master, add comments
peter klausler [Thu, 23 Aug 2018 22:28:08 +0000 (15:28 -0700)]
[flang] merge with master, add comments

Original-commit: flang-compiler/f18@1fe4cf81428fd63fe17671edf0071046a509e791
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] continue refactoring
peter klausler [Thu, 23 Aug 2018 21:49:28 +0000 (14:49 -0700)]
[flang] continue refactoring

Original-commit: flang-compiler/f18@f2b49ba0e23a6281f9e850611712bdbb32af3334
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] CombineVariants
peter klausler [Thu, 23 Aug 2018 19:00:44 +0000 (12:00 -0700)]
[flang] CombineVariants

Original-commit: flang-compiler/f18@d4c55084bd5a432d56e118da009ee19050c10d00
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] work on numeric operations
peter klausler [Thu, 23 Aug 2018 17:55:16 +0000 (10:55 -0700)]
[flang] work on numeric operations

Original-commit: flang-compiler/f18@e0ab91914c6f20d0e242e80795c35cc858860449
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Replace FOR_EACH_... macro cruft with safer template metaprogramming.
peter klausler [Wed, 22 Aug 2018 20:36:45 +0000 (13:36 -0700)]
[flang] Replace FOR_EACH_... macro cruft with safer template metaprogramming.

Original-commit: flang-compiler/f18@bc3c4279b053bf9d779bb9b341cde8bd6222260a
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Remove GenericExpr, move operator overloads to tools.h
peter klausler [Mon, 20 Aug 2018 16:29:08 +0000 (09:29 -0700)]
[flang] Remove GenericExpr, move operator overloads to tools.h

Original-commit: flang-compiler/f18@23e7a6c27c72c88f565bcd6e4cc02d46e082ec5a
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] complex extraction of operator classes
peter klausler [Fri, 17 Aug 2018 22:38:37 +0000 (15:38 -0700)]
[flang] complex extraction of operator classes

Original-commit: flang-compiler/f18@0506bb7a0c28cc9374c62eecfb7def724c5488fd
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint
peter klausler [Fri, 17 Aug 2018 16:50:32 +0000 (09:50 -0700)]
[flang] checkpoint

Original-commit: flang-compiler/f18@e874c926d039953f4309f98ab05c1c6f1d272ab8
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint with clang workaround
peter klausler [Thu, 16 Aug 2018 18:46:18 +0000 (11:46 -0700)]
[flang] checkpoint with clang workaround

Original-commit: flang-compiler/f18@c4a2aaf8b10adc2aec0d66f020d358e2a2ac417b
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint
peter klausler [Wed, 15 Aug 2018 20:46:33 +0000 (13:46 -0700)]
[flang] checkpoint

Original-commit: flang-compiler/f18@2a9e80d9bbd75fdbf7b563dece563531866ac4e2
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] expression analysis
peter klausler [Tue, 14 Aug 2018 23:48:49 +0000 (16:48 -0700)]
[flang] expression analysis

Original-commit: flang-compiler/f18@dedfe182d9fc9f0d2d7392c515b84ac0492d16f4
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] More cleaning
peter klausler [Tue, 14 Aug 2018 22:11:53 +0000 (15:11 -0700)]
[flang] More cleaning

Original-commit: flang-compiler/f18@8227229f625dd7a88760ea96810c9456295d8a43
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Extirpate expression-forward.h
peter klausler [Tue, 14 Aug 2018 21:35:51 +0000 (14:35 -0700)]
[flang] Extirpate expression-forward.h

Original-commit: flang-compiler/f18@288acd399304de69c154b7b7bfe3b9d0ccd32a7d
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Refactoring and renaming
peter klausler [Tue, 14 Aug 2018 20:39:59 +0000 (13:39 -0700)]
[flang] Refactoring and renaming

Original-commit: flang-compiler/f18@29fc0bee8a14cad46ec29b5baf6326cad7c0b4e0
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] clean up naming in expressions and types
peter klausler [Tue, 14 Aug 2018 00:05:15 +0000 (17:05 -0700)]
[flang] clean up naming in expressions and types

Original-commit: flang-compiler/f18@ab17ef4d4bc7e5ab8fae2dbe43edd47f25f9ba5a
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] checkpoint
peter klausler [Mon, 13 Aug 2018 20:33:31 +0000 (13:33 -0700)]
[flang] checkpoint

Original-commit: flang-compiler/f18@3fae716c44104cd9ec7694ccda93c8881f2e3c7e
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Expression analysis checkpoint
peter klausler [Fri, 10 Aug 2018 18:44:43 +0000 (11:44 -0700)]
[flang] Expression analysis checkpoint

Original-commit: flang-compiler/f18@f740cab6414d8bec8614c66f1deec6dc96da80ed
Reviewed-on: https://github.com/flang-compiler/f18/pull/183
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#179 from flang-compiler/tsk1
Tim Keith [Wed, 12 Sep 2018 22:56:55 +0000 (15:56 -0700)]
[flang] Merge pull request flang-compiler/f18#179 from flang-compiler/tsk1

Improve error message for "type already declared"

Original-commit: flang-compiler/f18@46b68921531f13a1ecf70e289ed22ec8b5e26c32
Reviewed-on: https://github.com/flang-compiler/f18/pull/179

5 years ago[flang] Improve error message for "type already declared"
Tim Keith [Tue, 11 Sep 2018 14:26:54 +0000 (07:26 -0700)]
[flang] Improve error message for "type already declared"

Add reference to the statement where the type was first set.

Original-commit: flang-compiler/f18@911c90e99ee43e4e221d0b5ffd8a76c82390c153
Reviewed-on: https://github.com/flang-compiler/f18/pull/179

5 years ago[flang] Merge pull request flang-compiler/f18#182 from flang-compiler/tsk2
Tim Keith [Wed, 12 Sep 2018 18:38:26 +0000 (11:38 -0700)]
[flang] Merge pull request flang-compiler/f18#182 from flang-compiler/tsk2

Simplify representation of intrinsic types

Original-commit: flang-compiler/f18@a6afb59d427a178f51055ae5df00b2cbcae6d054
Reviewed-on: https://github.com/flang-compiler/f18/pull/182

5 years ago[flang] The default kind of complex is the same as that of real.
Tim Keith [Wed, 12 Sep 2018 18:37:29 +0000 (11:37 -0700)]
[flang] The default kind of complex is the same as that of real.

Original-commit: flang-compiler/f18@16080c06746194c9e51daf14ae649342d4c0683a
Reviewed-on: https://github.com/flang-compiler/f18/pull/182

5 years ago[flang] Simplify representation of intrinsic types
Tim Keith [Wed, 12 Sep 2018 00:33:42 +0000 (17:33 -0700)]
[flang] Simplify representation of intrinsic types

Intrinsic types are now just a TypeCategory and a int kind. If no kind
is specified the default is used so that every type has an explicit
kind. This caused changes in the expected results of some of the tests.

Add support for "double precision" and "double complex".

Intrinsic types are now stored as values in DeclTypeSpec so none of the
KindedTypeHelper machinery is needed any more.

Eliminate DerivedTypeDef, DataComponentDef, ProcComponentDef,
TypeBoundProc. The components and bindings of a derived type are now
represented by the corresponding Scope.

Original-commit: flang-compiler/f18@4ad8ffb18708e073da9a0f37c3bb09a271ca1c02
Reviewed-on: https://github.com/flang-compiler/f18/pull/182
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#181 from flang-compiler/eas6
Eric Schweitz [Wed, 12 Sep 2018 15:30:43 +0000 (08:30 -0700)]
[flang] Merge pull request flang-compiler/f18#181 from flang-compiler/eas6

Issue flang-compiler/f18#180 - Label vs. IntLiteralConstant

Original-commit: flang-compiler/f18@2350ed912873d17c897d5e4d08a583bb2edfaec7
Reviewed-on: https://github.com/flang-compiler/f18/pull/181

5 years ago[flang] Clean up dangling spaces
Eric Schweitz [Tue, 11 Sep 2018 23:30:49 +0000 (16:30 -0700)]
[flang] Clean up dangling spaces

Original-commit: flang-compiler/f18@7a29dc617a45bd864c62b4da76eeda8f8d7fc235
Reviewed-on: https://github.com/flang-compiler/f18/pull/181

5 years ago[flang] Fixes the Label vs. IntLiteralConstant issue flang-compiler/f18#180
Eric Schweitz [Tue, 11 Sep 2018 23:26:19 +0000 (16:26 -0700)]
[flang] Fixes the Label vs. IntLiteralConstant issue flang-compiler/f18#180

Original-commit: flang-compiler/f18@40387158dc33ae4623bef89d4509fb682feba82b
Reviewed-on: https://github.com/flang-compiler/f18/pull/181
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#170 from flang-compiler/easddd
Eric Schweitz [Tue, 11 Sep 2018 21:01:25 +0000 (14:01 -0700)]
[flang] Merge pull request flang-compiler/f18#170 from flang-compiler/easddd

Add label resolution initial pass implementation and tests

Original-commit: flang-compiler/f18@92a20cbdc9ec72a97ce0ea1f733b61ce1ae77de7
Reviewed-on: https://github.com/flang-compiler/f18/pull/170

5 years ago[flang] tweak Legality
Eric Schweitz [Thu, 6 Sep 2018 23:21:35 +0000 (16:21 -0700)]
[flang] tweak Legality

Original-commit: flang-compiler/f18@19834c65d7d5889932d139681eb200af98a0c603
Reviewed-on: https://github.com/flang-compiler/f18/pull/170

5 years ago[flang] clang-format doesn't
Eric Schweitz [Thu, 6 Sep 2018 22:37:40 +0000 (15:37 -0700)]
[flang] clang-format doesn't

Original-commit: flang-compiler/f18@0114db6ced2186c862862af636b121e329125f70
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Remove the strict F18 checking flag. Always check that program is
Eric Schweitz [Thu, 6 Sep 2018 22:32:33 +0000 (15:32 -0700)]
[flang] Remove the strict F18 checking flag. Always check that program is
strictly conforming to F18, but demote errors to warnings when the
Fortran is legal under pre-F18 standards. If the Fortran is illegal
under F18 _and_ previous standards, then emit an error.

Original-commit: flang-compiler/f18@6d1f37683a4409a609af49c4a623007950c868fc
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] convert name to lowercase
Eric Schweitz [Thu, 6 Sep 2018 22:03:03 +0000 (15:03 -0700)]
[flang] convert name to lowercase

Original-commit: flang-compiler/f18@f591d31ab436157e92b1e46a86a6f6148b5d812d
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] More renaming
Eric Schweitz [Thu, 6 Sep 2018 20:33:51 +0000 (13:33 -0700)]
[flang] More renaming

Original-commit: flang-compiler/f18@9ef9ef4479468f5054edfe3183e4c4d14dc87111
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Fix a couple other spots clang-format missed
Eric Schweitz [Thu, 6 Sep 2018 17:38:52 +0000 (10:38 -0700)]
[flang] Fix a couple other spots clang-format missed

Original-commit: flang-compiler/f18@1a4b12e1b2d38db3a39ddb4a4dbdd6b96d32010f
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] clang-format didn't clean up some of the code. delete std::make_pair call.
Eric Schweitz [Thu, 6 Sep 2018 17:31:47 +0000 (10:31 -0700)]
[flang] clang-format didn't clean up some of the code. delete std::make_pair call.

Original-commit: flang-compiler/f18@4defccc50d428f7b5493cde585f3436a29ce10e4
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Simplify some of the if-return-else-return expansions while possibly
Eric Schweitz [Thu, 6 Sep 2018 17:04:18 +0000 (10:04 -0700)]
[flang] Simplify some of the if-return-else-return expansions while possibly
keeping things readable.

Original-commit: flang-compiler/f18@55b7e18763de2cb786ea03b4813aabd45a507337
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Fix globbing bug and return variable not being set
Eric Schweitz [Thu, 6 Sep 2018 16:55:29 +0000 (09:55 -0700)]
[flang] Fix globbing bug and return variable not being set

Original-commit: flang-compiler/f18@238349048bb7e5b4bbf359e6dad2d24b647ebb33
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Per review:
Eric Schweitz [Thu, 6 Sep 2018 16:06:21 +0000 (09:06 -0700)]
[flang] Per review:
Change initializer lists to use curlies.
Change uses of std::tuple to PODs & add ctors per compiler complaining.

Original-commit: flang-compiler/f18@42c5cdcaabb7fdc4971698fadb608a9df61360b8
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] More review comment actions.
Eric Schweitz [Wed, 5 Sep 2018 23:04:56 +0000 (16:04 -0700)]
[flang] More review comment actions.

Original-commit: flang-compiler/f18@eb7ab3452d9cfd969154ffacc3d1a007dbaef367
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Changes for the latest round of syntax change requests per the review.
Eric Schweitz [Wed, 5 Sep 2018 22:26:41 +0000 (15:26 -0700)]
[flang] Changes for the latest round of syntax change requests per the review.

Original-commit: flang-compiler/f18@0df221aeda76b927376fe524231ba2db22bdf1c8
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] ctest may require that the path be specified, so add it to the input file...
Eric Schweitz [Wed, 5 Sep 2018 18:37:45 +0000 (11:37 -0700)]
[flang] ctest may require that the path be specified, so add it to the input file name.

Original-commit: flang-compiler/f18@751e88f108ffb06ba736b97ea2359e27a3ca136a
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] remove emacs line
Eric Schweitz [Tue, 4 Sep 2018 18:34:26 +0000 (11:34 -0700)]
[flang] remove emacs line

Original-commit: flang-compiler/f18@64aa22d64491ed986c1c26b1837402ee52cd208d
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Changes per the review comments. The majority of the changes are simply
Eric Schweitz [Fri, 31 Aug 2018 17:26:19 +0000 (10:26 -0700)]
[flang] Changes per the review comments. The majority of the changes are simply
to rename identifiers to meet the project (not LLVM) coding standard.
Includes a home brew of FileCheck for testing.

Original-commit: flang-compiler/f18@bb15490cc02327773cb680597226346f02cd4dd0
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Use is_same<> templates
Eric Schweitz [Tue, 28 Aug 2018 17:14:43 +0000 (10:14 -0700)]
[flang] Use is_same<> templates

Original-commit: flang-compiler/f18@a47f6bacf09a032c46d9d26d7e3d07c5b96853ae
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Make use of is_same<>
Eric Schweitz [Tue, 28 Aug 2018 17:07:48 +0000 (10:07 -0700)]
[flang] Make use of is_same<>

Original-commit: flang-compiler/f18@12cd53086568241e68d7a7b03f024ae746607e6c
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Merge up to new Messages interface
Eric Schweitz [Mon, 27 Aug 2018 22:14:41 +0000 (15:14 -0700)]
[flang] Merge up to new Messages interface

Original-commit: flang-compiler/f18@ca45fdd1cbc1cba3a14da52b59616361b1cdd967
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Add label resolution design document, pass, and tests
Eric Schweitz [Mon, 20 Aug 2018 23:47:18 +0000 (16:47 -0700)]
[flang] Add label resolution design document, pass, and tests

Original-commit: flang-compiler/f18@e0d0df900c4d823b7114a4d511105c2dbd9d2e77
Reviewed-on: https://github.com/flang-compiler/f18/pull/170
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#178 from flang-compiler/pmk1
Peter Klausler [Mon, 10 Sep 2018 23:25:38 +0000 (16:25 -0700)]
[flang] Merge pull request flang-compiler/f18#178 from flang-compiler/pmk1

Better error recovery and messages for PROCEDURE components (issue#174)

Original-commit: flang-compiler/f18@31c258ae68a0fd4fe9413d33edb6be1dae1af482
Reviewed-on: https://github.com/flang-compiler/f18/pull/178

5 years ago[flang] Restore mistakenly deleted call to nonemptyList()
peter klausler [Mon, 10 Sep 2018 21:25:03 +0000 (14:25 -0700)]
[flang] Restore mistakenly deleted call to nonemptyList()

Original-commit: flang-compiler/f18@d40d492fb2230bebd692f15a79d0399041557817
Reviewed-on: https://github.com/flang-compiler/f18/pull/178

5 years ago[flang] Better error recovery and messages for PROCEDURE components
peter klausler [Mon, 10 Sep 2018 21:19:37 +0000 (14:19 -0700)]
[flang] Better error recovery and messages for PROCEDURE components

Original-commit: flang-compiler/f18@19813349aa19222974f7cb92b98a1b38407cdaf7
Reviewed-on: https://github.com/flang-compiler/f18/pull/178
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#177 from flang-compiler/tsk1
Tim Keith [Mon, 10 Sep 2018 22:37:43 +0000 (15:37 -0700)]
[flang] Merge pull request flang-compiler/f18#177 from flang-compiler/tsk1

Write private symbols to .mod files

Original-commit: flang-compiler/f18@f325e8b765278bca5626def839cfb07d5662f261
Reviewed-on: https://github.com/flang-compiler/f18/pull/177

5 years ago[flang] Miscellaneous name resolution
Tim Keith [Mon, 10 Sep 2018 19:20:42 +0000 (12:20 -0700)]
[flang] Miscellaneous name resolution

Handle BIND statement and PARAMETER statement. They are different from
other attribute-setting statements so some refactoring of
HandleAttributeStmt is required. And for PARAMETER, SetType needs to
report an error if the implicitly determined type is changed later. This
requires operator== on DeclTypeSpec.

Resolve names in allocate statements, pointer assignment statements,
substring expressions, and type parameter values.

Original-commit: flang-compiler/f18@79ad96b976c495dcc836267bd08276c4a6be8bb4
Reviewed-on: https://github.com/flang-compiler/f18/pull/177

5 years ago[flang] Write private symbols to .mod files
Tim Keith [Fri, 7 Sep 2018 22:39:20 +0000 (15:39 -0700)]
[flang] Write private symbols to .mod files

We were trying to write only symbols that are part of the public API of
a module to the .mod file. The problem with that is that submodules need
access to the private symbols in their ancestor modules and submodules.

For now, just write out all of the symbols, private or otherwise.
We could be more precise by omitting some private symbols for modules
that don't have separate module procedures and so can't have submodules.

Also, the old implementation went into an infinite loop for recursive
derived types.

This makes CollectSymbols simpler, so have it do both the collecting and
sorting. Make it static so that the types don't have to be defined in
mod-file.h.

Original-commit: flang-compiler/f18@33a10d6238c3b0062c43974114048ccc8cc1f450
Reviewed-on: https://github.com/flang-compiler/f18/pull/177
Tree-same-pre-rewrite: false

5 years ago[flang] Ensure use of ObjectEntityDetails for data objects
Tim Keith [Fri, 7 Sep 2018 16:48:40 +0000 (09:48 -0700)]
[flang] Ensure use of ObjectEntityDetails for data objects

A symbol is created with EntityDetails if we don't know whether it is a
procedure or data object. At the end of the specification part, if we
don't know it's a procedure then it must be an object, so convert it
then. So after name resolution there should be no symbols with
EntityDetails.

Also, a couple of small fixes:
- need to visit sub-nodes of shape specs so that any names get resolved
- don't report an error for an array element mis-parsed as a call

Original-commit: flang-compiler/f18@0effecd2252488455b1d2f0c86dc3dc00d37f483
Reviewed-on: https://github.com/flang-compiler/f18/pull/177
Tree-same-pre-rewrite: false

5 years ago[flang] Code cleanup
Tim Keith [Thu, 6 Sep 2018 20:44:21 +0000 (13:44 -0700)]
[flang] Code cleanup

Rename stmtFuncsToConvert to stmtFuncsToConvert_.
Make member functions out-of-line.

Original-commit: flang-compiler/f18@3ada89d22f7fb79d7730a7498d89a96dbc9bffab
Reviewed-on: https://github.com/flang-compiler/f18/pull/177
Tree-same-pre-rewrite: false

5 years ago[flang] Fix bug in rewriting function calls
Tim Keith [Thu, 6 Sep 2018 20:31:45 +0000 (13:31 -0700)]
[flang] Fix bug in rewriting function calls

Arrays are now represented with ObjectEntityDetails, not EntityDetails.
So that's what we have to look for when rewriting function calls to
array element references.

Original-commit: flang-compiler/f18@841b37d94bc02f5a8726873fff7182cee053c8c3
Reviewed-on: https://github.com/flang-compiler/f18/pull/177
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#175 from flang-compiler/tsk1
Tim Keith [Fri, 7 Sep 2018 16:08:05 +0000 (09:08 -0700)]
[flang] Merge pull request flang-compiler/f18#175 from flang-compiler/tsk1

More name resolution

Original-commit: flang-compiler/f18@804e7359134a6bf724d27085931608cc9297dbe0
Reviewed-on: https://github.com/flang-compiler/f18/pull/175

5 years ago[flang] Address review comments
Tim Keith [Fri, 7 Sep 2018 16:06:27 +0000 (09:06 -0700)]
[flang] Address review comments

Change IsModule to a member function of Scope.

Make multiple PRIVATE statements in a derived type be a non-fatal error.

Original-commit: flang-compiler/f18@dd42dcd15a634c629168c5fcb767c09184f000f7
Reviewed-on: https://github.com/flang-compiler/f18/pull/175

5 years ago[flang] Add procedure pointer components for derived types
Tim Keith [Thu, 6 Sep 2018 19:06:32 +0000 (12:06 -0700)]
[flang] Add procedure pointer components for derived types

Also eliminate `derivedTypeData_`. Information about derived types needed
during name resolution is in `derivedTypeInfo_` and the permanent record
is the symbol table.

Original-commit: flang-compiler/f18@789960bd95d1a4c24650ff14950cb9faaa13c6aa
Reviewed-on: https://github.com/flang-compiler/f18/pull/175
Tree-same-pre-rewrite: false

5 years ago[flang] More derived type name resolution
Tim Keith [Thu, 6 Sep 2018 15:01:49 +0000 (08:01 -0700)]
[flang] More derived type name resolution

Track PRIVATE statement in derived type components and in procedure
bindings. These are recorded in derivedTypeInfo_ (along with the name
appearing in EXTENDS) and used to modify the accessibility attributes of
components and bindings. Also track SEQUENCE statement.

Detect erroneous PRIVATE in derived types that aren't in modules.
Detect incompatible SEQUENCE types.

Save EXTENDS symbol and SEQUENCE in DerivedTypeDetails and write them to
the .mod file.

Original-commit: flang-compiler/f18@f29d6207140bb818442b2d5cb7de067a34082b61
Reviewed-on: https://github.com/flang-compiler/f18/pull/175
Tree-same-pre-rewrite: false

5 years ago[flang] Improve dumping of enums in parse tree
Tim Keith [Wed, 5 Sep 2018 20:44:22 +0000 (13:44 -0700)]
[flang] Improve dumping of enums in parse tree

Change dump-parse-tree.h to dump enumerator names rather than just type
names for data members whose types are defined with ENUM_CLASS.

Original-commit: flang-compiler/f18@57bd4f3af945d9416ef8b302fdad7400e76d54b8
Reviewed-on: https://github.com/flang-compiler/f18/pull/175
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#173 from flang-compiler/tsk1
Tim Keith [Wed, 5 Sep 2018 23:04:12 +0000 (16:04 -0700)]
[flang] Merge pull request flang-compiler/f18#173 from flang-compiler/tsk1

More name resolution for derived types

Original-commit: flang-compiler/f18@c06230e9cc9a4ad15c2e6dac79db26461489e666
Reviewed-on: https://github.com/flang-compiler/f18/pull/173

5 years ago[flang] Address review comments
Tim Keith [Wed, 5 Sep 2018 23:02:41 +0000 (16:02 -0700)]
[flang] Address review comments

Original-commit: flang-compiler/f18@2ca329b85a3e6113f417dff25ba39898bd8869e8
Reviewed-on: https://github.com/flang-compiler/f18/pull/173

5 years ago[flang] Resolve derived type parameters
Tim Keith [Tue, 4 Sep 2018 17:28:27 +0000 (10:28 -0700)]
[flang] Resolve derived type parameters

Add TypeParamDetails for symbols that represent type parameters.
Create such symbols when a type-param-def-stmt is encountered.

At the end of the derived-type-def, check the parameters named
in the type-param-name-list against those encountered in each
type-param-def-stmt.

Original-commit: flang-compiler/f18@c15247bb30311e7166429a34db510cb8c736bd66
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Move KindOrLen enum to common/fortran.h
Tim Keith [Tue, 4 Sep 2018 17:26:31 +0000 (10:26 -0700)]
[flang] Move KindOrLen enum to common/fortran.h

This is so that it can more easily be used in semantics in the
representation of type parameters.

Original-commit: flang-compiler/f18@f734d754e49b45c8bcaf246f577b030e77413aa7
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Resolve procedure bindings and final procedures in derived types
Tim Keith [Fri, 31 Aug 2018 23:20:00 +0000 (16:20 -0700)]
[flang] Resolve procedure bindings and final procedures in derived types

Add new kinds of symbol details: ProcBindingDetails, FinalProcDetails.
and GenericBindingDetails. The last is not yet implemented.
Write them to the .mod file.

Recognize DEFERRED and NON_OVERRIDABLE attributes. Enforce C783.

Resolve CLASS(t) similarly to resolution of TYPE(t).

Original-commit: flang-compiler/f18@0c0a9ab79eacd725900e4452ca352a46bec226a3
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Change BeginAttrs to return true like BeginDecl
Tim Keith [Fri, 31 Aug 2018 22:15:28 +0000 (15:15 -0700)]
[flang] Change BeginAttrs to return true like BeginDecl

This is just for convenience. Any Pre function that calls BeginAttrs
must return true.

Original-commit: flang-compiler/f18@5a7bc11ba43f0e0d0dbdfe845f06c86274fde8ad
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Small improvements to name resolution
Tim Keith [Wed, 29 Aug 2018 18:38:12 +0000 (11:38 -0700)]
[flang] Small improvements to name resolution

Resolve names and do implicit typing in ArrayElement and LoopBounds.

Fix problem with creation of UseErrorDetails: when a conflict occurs,
record both the original USE and the new one.

Resolve the type name in TypeAttrSpec::Extends. Move CheckUseError to
DeclarationVisitor so that it can be used in ResolveDerivedType.

Report error on unresolved names. I.e. after name resolution, check each
parser::Name and verify we have a Symbol for it. This is on by default
now but it could be an option.

Original-commit: flang-compiler/f18@1c8cbc6e53cc7e1b6909bbedf5370e27fd11572f
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Small code cleanups
Tim Keith [Tue, 28 Aug 2018 21:02:53 +0000 (14:02 -0700)]
[flang] Small code cleanups

Use brace-initialization more consistently.
Use std::is_same_v instead of std::is_same and "if constexpr".

Original-commit: flang-compiler/f18@7f461faf9a8df16822a054ec4683f4387c6292e1
Reviewed-on: https://github.com/flang-compiler/f18/pull/173
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#172 from flang-compiler/pmk1
Peter Klausler [Tue, 4 Sep 2018 19:05:33 +0000 (12:05 -0700)]
[flang] Merge pull request flang-compiler/f18#172 from flang-compiler/pmk1

Resolve two parsing ambiguities from sscalpone

Original-commit: flang-compiler/f18@17035bb78939da94e131ee55182532cd556eb060
Reviewed-on: https://github.com/flang-compiler/f18/pull/172

5 years ago[flang] Fix parsing ambiguity with pointer assignment statements
peter klausler [Tue, 4 Sep 2018 16:57:54 +0000 (09:57 -0700)]
[flang] Fix parsing ambiguity with pointer assignment statements

Original-commit: flang-compiler/f18@42eb1b140d40389e1ec13bdf87e4ff3a2b21ed2b
Reviewed-on: https://github.com/flang-compiler/f18/pull/172

5 years ago[flang] Fix parsing ambiguity: MODULESUBROUTINEFOO at top level
peter klausler [Tue, 4 Sep 2018 16:28:02 +0000 (09:28 -0700)]
[flang] Fix parsing ambiguity: MODULESUBROUTINEFOO at top level

Original-commit: flang-compiler/f18@cfda0945ea03245fd169d04b3b13ee3a4cbc3bc8
Reviewed-on: https://github.com/flang-compiler/f18/pull/172
Tree-same-pre-rewrite: false

5 years ago[flang] Better error recovery when END TYPE is expected but only END appears.
peter klausler [Tue, 4 Sep 2018 18:42:10 +0000 (11:42 -0700)]
[flang] Better error recovery when END TYPE is expected but only END appears.

Original-commit: flang-compiler/f18@7b70829d41dc2f1bcf28aa9337b077716943f062

5 years ago[flang] improve error recovery for missequenced IMPORT and IMPLICIT
peter klausler [Tue, 4 Sep 2018 18:13:47 +0000 (11:13 -0700)]
[flang] improve error recovery for missequenced IMPORT and IMPLICIT

Original-commit: flang-compiler/f18@a096fc86040ec8147261dc1c7decf5fc48709f69

5 years ago[flang] Merge pull request flang-compiler/f18#169 from flang-compiler/tsk1
Tim Keith [Tue, 28 Aug 2018 18:50:45 +0000 (11:50 -0700)]
[flang] Merge pull request flang-compiler/f18#169 from flang-compiler/tsk1

Add support for BLOCK construct

Original-commit: flang-compiler/f18@e9abdbc993482ceab2cc2831d65f5275bdee264b
Reviewed-on: https://github.com/flang-compiler/f18/pull/169

5 years ago[flang] Improve comments on class ImplicitRules
Tim Keith [Mon, 27 Aug 2018 20:32:10 +0000 (13:32 -0700)]
[flang] Improve comments on class ImplicitRules

Original-commit: flang-compiler/f18@926dc2bed10ebb96e7933e7a0d2a6f88f2541f68
Reviewed-on: https://github.com/flang-compiler/f18/pull/169

5 years ago[flang] Remove unused variable
Tim Keith [Mon, 27 Aug 2018 19:12:03 +0000 (12:12 -0700)]
[flang] Remove unused variable

Original-commit: flang-compiler/f18@05dc053442e7aa2a30f7d92d2a2025534f3935c9
Reviewed-on: https://github.com/flang-compiler/f18/pull/169
Tree-same-pre-rewrite: false

5 years ago[flang] Add support for BLOCK construct
Tim Keith [Mon, 27 Aug 2018 18:48:49 +0000 (11:48 -0700)]
[flang] Add support for BLOCK construct

A `BLOCK` statement opens a new scope. It is different from other scopes
in that implicitly typed entities are defined in the enclosing non-block
scope, not immediately in the block. This means that `IMPORT` statements
can cause them to be hidden.

Check that blocks can't have `IMPLICIT` statements in them. It is simpler
for the parser not to deal with the different between a
specification-part and a block-specification-part.

Change `ImplicitRules` to have a parent that is consulted when there isn't
an answer in the current one. For an interface body that does not happen
but for all other nested scopes it does. This parent link eliminates the
need for the `implicitRules_` stack. Make `isImplicitNoneType_` and
`isImplicitNoneExternal_` optional: not set means look in parent.
Fixes flang-compiler/f18#71.

Remove `CurrNonTypeScope()` and put the logic in `Symbol::FindSymbol`.

Original-commit: flang-compiler/f18@a153a2ee33ff493df6d4fb5e20d99d302d76ab43
Reviewed-on: https://github.com/flang-compiler/f18/pull/169
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#171 from flang-compiler/easdd2
Eric Schweitz [Tue, 28 Aug 2018 17:44:20 +0000 (10:44 -0700)]
[flang] Merge pull request flang-compiler/f18#171 from flang-compiler/easdd2

Design document for label resolution pass

Original-commit: flang-compiler/f18@3e97e7922ef059d28381ced326c19813cea356f7
Reviewed-on: https://github.com/flang-compiler/f18/pull/171

5 years ago[flang] Add the detailed design for label resolution
Eric Schweitz [Tue, 28 Aug 2018 17:17:38 +0000 (10:17 -0700)]
[flang] Add the detailed design for label resolution

Original-commit: flang-compiler/f18@89c4b70b55082dc3c6518af4c37a0738bcbcee06
Reviewed-on: https://github.com/flang-compiler/f18/pull/171

5 years ago[flang] Merge pull request flang-compiler/f18#167 from flang-compiler/tsk1
Tim Keith [Thu, 23 Aug 2018 18:59:34 +0000 (11:59 -0700)]
[flang] Merge pull request flang-compiler/f18#167 from flang-compiler/tsk1

Implement host association and import statements

Original-commit: flang-compiler/f18@354a594b0b015e466dcaf7dca6d54151e1d0b144
Reviewed-on: https://github.com/flang-compiler/f18/pull/167

5 years ago[flang] Add common::ImportKind
Tim Keith [Thu, 23 Aug 2018 18:45:49 +0000 (11:45 -0700)]
[flang] Add common::ImportKind

Replace parser::ImportStmt::Kind and semantics::Scope::ImportKind with a
single enum class in common/fortran.h. This eliminates the need to map
between the parser enum and the semantics enum.

Original-commit: flang-compiler/f18@779a99314c69c44e5a76cd9bd3d1833b870ef348
Reviewed-on: https://github.com/flang-compiler/f18/pull/167

5 years ago[flang] Address review comments
Tim Keith [Thu, 23 Aug 2018 18:24:12 +0000 (11:24 -0700)]
[flang] Address review comments

Original-commit: flang-compiler/f18@c30cbc8158c308902293877402554d052cbe2ac4
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Add another host-associate test
Tim Keith [Thu, 23 Aug 2018 14:41:06 +0000 (07:41 -0700)]
[flang] Add another host-associate test

Verify that a derived type component does not hide a type of the same
name in its host.

Original-commit: flang-compiler/f18@212d84cb2f555ae77fae6b5724266ea894250bd1
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Code cleanup
Tim Keith [Wed, 22 Aug 2018 23:56:57 +0000 (16:56 -0700)]
[flang] Code cleanup

`CurrScope()` is now a simple accessor with no logic, so rename to `currScope()`.

`PushScope()` doesn't need to return a `Scope&` and the other functions
with that name do not, so make it consistent.

Original-commit: flang-compiler/f18@c8c341be14b4e72e1787529e354648bef4ca4e0d
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Add missing copyrights.
Tim Keith [Wed, 22 Aug 2018 23:05:53 +0000 (16:05 -0700)]
[flang] Add missing copyrights.

Original-commit: flang-compiler/f18@a9346a588aa8031e4f74906f33934444503d7747
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Implement host association and import statements
Tim Keith [Wed, 22 Aug 2018 23:05:06 +0000 (16:05 -0700)]
[flang] Implement host association and import statements

Host association is done by search for symbols using `Scope::FindSymbol()`
which looks for the the name in the parent scope if the import rules
permit it.

Import statements are implemented using `importKind_` and `importNames_`
in class `Scope`. Most of the constraints are checked when the
`ImportStmt` is encountered. `CheckImports()` is called at the end of
the `SpecificationPart` to verify the names mentioned in the IMPORT
statement. That has to happen then so that we can detect if an imported
name is hidden by a declaration in the current scope.

Original-commit: flang-compiler/f18@0d50c8a8ba12692e6246c4e1a8a098f2850aba3a
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Replace scope stack with current scope
Tim Keith [Fri, 10 Aug 2018 00:12:31 +0000 (17:12 -0700)]
[flang] Replace scope stack with current scope

We don't need to manage a stack of scopes: each scope has a reference to
its parent, so popping the scope stack is equivalent to setting the
new current scope to the parent of the old current scope.

Original-commit: flang-compiler/f18@022aa7a7f9d09ee96db6ec9a025afb6bcf99cc55
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Collect names of internal subprograms of a MainProgram
Tim Keith [Thu, 9 Aug 2018 00:28:16 +0000 (17:28 -0700)]
[flang] Collect names of internal subprograms of a MainProgram

... as is done for other internal subprograms.

Original-commit: flang-compiler/f18@079f45d51b64bcee1197c65201dc66d14ee7c08c
Reviewed-on: https://github.com/flang-compiler/f18/pull/167
Tree-same-pre-rewrite: false

5 years ago[flang] Merge pull request flang-compiler/f18#166 from flang-compiler/pmk1
Peter Klausler [Thu, 9 Aug 2018 21:16:02 +0000 (14:16 -0700)]
[flang] Merge pull request flang-compiler/f18#166 from flang-compiler/pmk1

fix sloppy merge (sorry)

Original-commit: flang-compiler/f18@c3957893cbcfc9e00e9f184b4c9bf3251796f5a0
Reviewed-on: https://github.com/flang-compiler/f18/pull/166

5 years ago[flang] fix sloppy merge (sorry)
peter klausler [Thu, 9 Aug 2018 20:09:33 +0000 (13:09 -0700)]
[flang] fix sloppy merge (sorry)

Original-commit: flang-compiler/f18@b475721e09969cc5ac287159dbb6e342ce89fa9d
Reviewed-on: https://github.com/flang-compiler/f18/pull/166

5 years ago[flang] Merge pull request flang-compiler/f18#165 from flang-compiler/pmk0
Peter Klausler [Thu, 9 Aug 2018 19:50:15 +0000 (12:50 -0700)]
[flang] Merge pull request flang-compiler/f18#165 from flang-compiler/pmk0

Expression analysis and message clean-up

Original-commit: flang-compiler/f18@9fa1c429f164500c83af35b55d89324fd67e7e46
Reviewed-on: https://github.com/flang-compiler/f18/pull/165

5 years ago[flang] Canonicalize nonstandard BOZ literals to avoid spurious parse/unparse/reparse...
peter klausler [Wed, 8 Aug 2018 23:41:44 +0000 (16:41 -0700)]
[flang] Canonicalize nonstandard BOZ literals to avoid spurious parse/unparse/reparse/unparse failures.

Original-commit: flang-compiler/f18@d651990632d1cd52ece98de00689a4bfebeb4af0
Reviewed-on: https://github.com/flang-compiler/f18/pull/165

5 years ago[flang] More expression analysis of literal constants.
peter klausler [Wed, 8 Aug 2018 23:30:58 +0000 (16:30 -0700)]
[flang] More expression analysis of literal constants.

Original-commit: flang-compiler/f18@3c89dace19fe5585d738fe36fa75fea98e541837
Reviewed-on: https://github.com/flang-compiler/f18/pull/165
Tree-same-pre-rewrite: false

5 years ago[flang] Add data to a new formatted message.
peter klausler [Wed, 8 Aug 2018 18:37:40 +0000 (11:37 -0700)]
[flang] Add data to a new formatted message.

Original-commit: flang-compiler/f18@04b1ae9e68cb5e21393e834229bb6964169fee29
Reviewed-on: https://github.com/flang-compiler/f18/pull/165
Tree-same-pre-rewrite: false

5 years ago[flang] Clean up messaging: make Say() member function templates more flexible, hide...
peter klausler [Wed, 8 Aug 2018 18:29:05 +0000 (11:29 -0700)]
[flang] Clean up messaging: make Say() member function templates more flexible, hide MessageFormattedText instances

Original-commit: flang-compiler/f18@59d774382f859acd06341a1d407b4e2fe7c975f7
Reviewed-on: https://github.com/flang-compiler/f18/pull/165
Tree-same-pre-rewrite: false

5 years ago[flang] Expression analysis
peter klausler [Tue, 7 Aug 2018 19:34:09 +0000 (12:34 -0700)]
[flang] Expression analysis

Original-commit: flang-compiler/f18@6b5e23ba28943f510a23a47daeb43d3a5dff72c2
Reviewed-on: https://github.com/flang-compiler/f18/pull/165
Tree-same-pre-rewrite: false