|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
ee9c9170 |
| 07-Jun-2022 |
Peter Klausler <[email protected]> |
[flang] Fix bogus branch target error on END SELECT
The scope model used for branch target checking treats a label on an END SELECT statement as if it were in the previous CASE block. This makes it
[flang] Fix bogus branch target error on END SELECT
The scope model used for branch target checking treats a label on an END SELECT statement as if it were in the previous CASE block. This makes it illegal to GO TO that label from within any earlier CASE block in that statement. Fix by treating the CASE blocks as nested scopes within the scope of the SELECT construct.
Also, add a "warning:" tag to related warning messages.
Differential Revision: https://reviews.llvm.org/D127425
show more ...
|
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
eb4d5b85 |
| 08-Apr-2022 |
PeixinQiao <[email protected]> |
[flang] Fix semantic analysis for "forall" targeted by "label"
As Fortran 2018 3.18 states, the branch target statement can be `forall-construct-stmt`, but cannot be `forall-stmt`. `forall-stmt` is
[flang] Fix semantic analysis for "forall" targeted by "label"
As Fortran 2018 3.18 states, the branch target statement can be `forall-construct-stmt`, but cannot be `forall-stmt`. `forall-stmt` is wrapped by `Statement` in `action-stmt` and `action-stmt` can be one branch target statement. Fix the semantic analysis and add two regression test cases in lowering.
Reviewed By: Jean Perier
Differential Revision: https://reviews.llvm.org/D123373
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
a53967cd |
| 07-Mar-2022 |
Peter Klausler <[email protected]> |
[flang] Distinguish usage and portability warning messages
Using recently established message severity codes, upgrade non-fatal messages to usage and portability warnings as appropriate.
Differenti
[flang] Distinguish usage and portability warning messages
Using recently established message severity codes, upgrade non-fatal messages to usage and portability warnings as appropriate.
Differential Revision: https://reviews.llvm.org/D121246
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
c3dddeea |
| 10-Nov-2021 |
Peter Klausler <[email protected]> |
[flang] Allow exterior branch to outermost WHERE construct statement
The labels of WHERE constructs were being created within the scope of the construct, not the scope of its parent, leading to inco
[flang] Allow exterior branch to outermost WHERE construct statement
The labels of WHERE constructs were being created within the scope of the construct, not the scope of its parent, leading to incorrect error messages for branches to that label.
Differential Revision: https://reviews.llvm.org/D113696
show more ...
|
| #
80f0bb59 |
| 29-Oct-2021 |
Peter Klausler <[email protected]> |
[flang] Distinguish error/warning cases for bad jumps into constructs
Previously, jumps to labels in constructs from exterior statements would elicit only a warning. Upgrade these to errors unless
[flang] Distinguish error/warning cases for bad jumps into constructs
Previously, jumps to labels in constructs from exterior statements would elicit only a warning. Upgrade these to errors unless the branch into the construct would enter into only DO, IF, and SELECT CASE constructs, whose interiors don't scope variables or have other set-up/tear-down semantics. Branches into these "safe" constructs are still errors if they're nested in an unsafe construct that doesn't also enclose the exterior branch statement.
Differential Revision: https://reviews.llvm.org/D113310
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4 |
|
| #
9eab0da1 |
| 16-Sep-2021 |
peter klausler <[email protected]> |
[flang] Catch branching into FORALL/WHERE constructs
Enforce constraints C1034 & C1038, which disallow the use of otherwise valid statements as branch targets when they appear in FORALL &/or WHERE c
[flang] Catch branching into FORALL/WHERE constructs
Enforce constraints C1034 & C1038, which disallow the use of otherwise valid statements as branch targets when they appear in FORALL &/or WHERE constructs. (And make the diagnostic message somewhat more user-friendly.)
Differential Revision: https://reviews.llvm.org/D109936
show more ...
|
|
Revision tags: llvmorg-13.0.0-rc3 |
|
| #
18942502 |
| 09-Sep-2021 |
peter klausler <[email protected]> |
[flang] Revamp C1502 checking of END INTERFACE [generic-spec]
Validation of the optional generic-spec on an END INTERFACE statement was missing many possible error cases; reimplement it.
Differenti
[flang] Revamp C1502 checking of END INTERFACE [generic-spec]
Validation of the optional generic-spec on an END INTERFACE statement was missing many possible error cases; reimplement it.
Differential Revision: https://reviews.llvm.org/D109910
show more ...
|
|
Revision tags: llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
b781a04f |
| 10-Nov-2020 |
peter klausler <[email protected]> |
[flang] Allow labels on END statements.
F18 clause 5.3.3 explicitly allows labels on program unit END statements. Label resolution code accounts for this for singleton program units, but incorrectly
[flang] Allow labels on END statements.
F18 clause 5.3.3 explicitly allows labels on program unit END statements. Label resolution code accounts for this for singleton program units, but incorrectly generates an error for host subprograms with internal subprograms.
subroutine s(n) call s1(n) if (n == 0) goto 88 ! incorrect error print*, 's' contains subroutine s1(n) if (n == 0) goto 77 ! ok print*, 's1' 77 end subroutine s1 88 end
Label resolution code makes a sequential pass over an entire file to collect label information for all subprograms, followed by a pass through that information for semantics checks. The problem is that END statements may be separated from prior subprogram code by internal subprogram definitions, so an END label can be associated with the wrong subprogram.
There are several ways to fix this. Labels are always local to a subprogram. So the two separate passes over the entire file could probably instead be interleaved to perform analysis on a subprogram as soon as the end of the subprogram is reached, using a small stack. The stack structure would account for the "split" code case. This might work.
It is possible that there is some not otherwise apparent advantage to the current full-file pass design. The parse tree has productions that provide access to a subprogram END statement "in advance". An alternative is to access this information to solve the problem. This PR implements this latter option.
Differential revision: https://reviews.llvm.org/D91217
show more ...
|
| #
0047f6ae |
| 17-Oct-2020 |
Peter Steinfeld <[email protected]> |
[flang] Add name match checks for interface procedures
We had neglected to check for name mismatches for procedure definitions that appear in interfaces.
I also changed label11.f90 to an error test
[flang] Add name match checks for interface procedures
We had neglected to check for name mismatches for procedure definitions that appear in interfaces.
I also changed label11.f90 to an error test since I think they're better than "FileCheck" tests.
Differential Revision: https://reviews.llvm.org/D89611
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
646f19bb |
| 31-Aug-2020 |
peter klausler <[email protected]> |
[flang] Format label scope is independent of block scope
Compilation of the following program currently generates a warning message:
i = 1 if (i .eq. 0) then write(6, 200)
[flang] Format label scope is independent of block scope
Compilation of the following program currently generates a warning message:
i = 1 if (i .eq. 0) then write(6, 200) i 200 format (I8) end if write(6, 200) i end
x.f90:6:9: Label '200' is not in scope write(6, 200) i ^^^^^^^^^^^^^^^
Whereas branch targets must conform to the Clause 11.1.2.1 program requirement "Transfer of control to the interior of a block from outside the block is prohibited, ...", this doesn't apply to format statement references.
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1 |
|
| #
455ed8de |
| 03-Apr-2020 |
peter klausler <[email protected]> |
[flang] Process names in ASSIGN and assigned GOTO
Allow ASSIGNed integer variables as formats
Address review comment
Original-commit: flang-compiler/f18@361a151508b4a1940fc0669dead180be67964d8d Re
[flang] Process names in ASSIGN and assigned GOTO
Allow ASSIGNed integer variables as formats
Address review comment
Original-commit: flang-compiler/f18@361a151508b4a1940fc0669dead180be67964d8d Reviewed-on: https://github.com/flang-compiler/f18/pull/1099
show more ...
|
| #
1f879005 |
| 29-Mar-2020 |
Tim Keith <[email protected]> |
[flang] Reformat with latest clang-format and .clang-format
Original-commit: flang-compiler/f18@9fe84f45d7fd685051004678d6b5775dcc4c6f8f Reviewed-on: https://github.com/flang-compiler/f18/pull/1094
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4 |
|
| #
e03b20e6 |
| 10-Mar-2020 |
peter klausler <[email protected]> |
[flang] Changes to get a clean build of f18 with latest clang
Prep for review
Original-commit: flang-compiler/f18@111f49061e07604670614250197a1064959fd981 Reviewed-on: https://github.com/flang-comp
[flang] Changes to get a clean build of f18 with latest clang
Prep for review
Original-commit: flang-compiler/f18@111f49061e07604670614250197a1064959fd981 Reviewed-on: https://github.com/flang-compiler/f18/pull/1059
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc3 |
|
| #
64ab3302 |
| 25-Feb-2020 |
CarolineConcatto <[email protected]> |
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-b
[flang] [LLVMify F18] Compiler module folders should have capitalised names (flang-compiler/f18#980)
This patch renames the modules in f18 to use a capital letter in the
module name
Signed-off-by: Caroline Concatto <[email protected]>
Original-commit: flang-compiler/f18@d2eb7a1c443d1539ef12b6f027074a0eb15b1ea0 Reviewed-on: https://github.com/flang-compiler/f18/pull/980
show more ...
|