mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 17:21:10 +00:00
4d42e16eb8
When a WRITE overwrites an endfile record, we need to forget that there was an endfile record. When doing a BACKSPACE after an explicit ENDFILE statement, the position afterwards must be upon the endfile record. Attempts to join list-directed delimited character input across record boundaries was due to a bad reading of the standard and has been deleted, now that the requirements are better understood. This problem would cause a read attempt past EOF if a delimited character input value was at the end of a record. It turns out that delimited list-directed (and NAMELIST) character output is required to emit contiguous doubled instances of the delimiter character when it appears in the output value. When fixed-size records are being emitted, as is the case with internal output, this is not possible when the problematic character falls on the last position of a record. No two other Fortran compilers do the same thing in this situation so there is no good precedent to follow. Because it seems least wrong, with this patch we now emit one copy of the delimiter as the last character of the current record and another as the first character of the next record. (The second-least-wrong alternative might be to flag a runtime error, but that seems harsh since it's not an explicit error in the standard, and the output may not have to be usable later as input anyway.) Consequently, the output is not suitable for use as list-directed or NAMELIST input. If a later standard were to clarify this case, this behavior will of course change as needed to conform. Differential Revision: https://reviews.llvm.org/D106695 |
||
---|---|---|
.. | ||
_static | ||
_templates | ||
_themes/llvm-theme | ||
ArrayComposition.md | ||
BijectiveInternalNameUniquing.md | ||
C++17.md | ||
C++style.md | ||
Calls.md | ||
Character.md | ||
CMakeLists.txt | ||
conf.py | ||
ControlFlowGraph.md | ||
Directives.md | ||
DoConcurrent.md | ||
doxygen-mainpage.dox | ||
doxygen.cfg.in | ||
Extensions.md | ||
f2018-grammar.md | ||
flang-c-style.el | ||
FlangDriver.md | ||
FortranFeatureHistory.md | ||
FortranForCProgrammers.md | ||
FortranIR.md | ||
FortranLLVMTestSuite.md | ||
GettingInvolved.md | ||
ImplementingASemanticCheck.md | ||
index.md | ||
Intrinsics.md | ||
IORuntimeInternals.md | ||
LabelResolution.md | ||
ModFiles.md | ||
OpenMP-4.5-grammar.md | ||
OpenMP-semantics.md | ||
OptionComparison.md | ||
Overview.md | ||
ParserCombinators.md | ||
Parsing.md | ||
Preprocessing.md | ||
PullRequestChecklist.md | ||
ReleaseNotes.md | ||
RuntimeDescriptor.md | ||
RuntimeTypeInfo.md | ||
Semantics.md |