diff options
author | peter klausler <pklausler@nvidia.com> | 2021-09-15 15:46:43 -0700 |
---|---|---|
committer | peter klausler <pklausler@nvidia.com> | 2021-09-17 10:59:17 -0700 |
commit | f6ddfac401b8a5dfbf7623ebd8800df5184fa244 (patch) | |
tree | 49042fd46537e1acd8376b124e7fa99f76796736 /flang/lib/Parser/token-sequence.cpp | |
parent | 101c3de39fbcdd7d47b25aaf6d972e435f017077 (diff) | |
download | llvm-f6ddfac401b8a5dfbf7623ebd8800df5184fa244.zip llvm-f6ddfac401b8a5dfbf7623ebd8800df5184fa244.tar.gz llvm-f6ddfac401b8a5dfbf7623ebd8800df5184fa244.tar.bz2 |
[flang] Enforce fixed form rules about END continuation
From subclause 6.3.3.5: a program unit END statement cannot be
continued in fixed form, and other statements cannot have initial
lines that look like program unit END statements. I think this
is to avoid violating assumptions that are important to legacy
compilers' statement classification routines.
Differential Revision: https://reviews.llvm.org/D109933
Diffstat (limited to 'flang/lib/Parser/token-sequence.cpp')
-rw-r--r-- | flang/lib/Parser/token-sequence.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/flang/lib/Parser/token-sequence.cpp b/flang/lib/Parser/token-sequence.cpp index 0a959f2..3ed9d05 100644 --- a/flang/lib/Parser/token-sequence.cpp +++ b/flang/lib/Parser/token-sequence.cpp @@ -286,10 +286,14 @@ llvm::raw_ostream &TokenSequence::Dump(llvm::raw_ostream &o) const { return o; } +Provenance TokenSequence::GetCharProvenance(std::size_t offset) const { + ProvenanceRange range{provenances_.Map(offset)}; + return range.start(); +} + Provenance TokenSequence::GetTokenProvenance( std::size_t token, std::size_t offset) const { - ProvenanceRange range{provenances_.Map(start_[token] + offset)}; - return range.start(); + return GetCharProvenance(start_[token] + offset); } ProvenanceRange TokenSequence::GetTokenProvenanceRange( |