llvm-project/clang/lib/ARCMigrate
Abhina Sreeskantharajan 82b3e28e83 [SystemZ][z/OS][Windows] Add new OF_TextWithCRLF flag and use this flag instead of OF_Text
Problem:
On SystemZ we need to open text files in text mode. On Windows, files opened in text mode adds a CRLF '\r\n' which may not be desirable.

Solution:
This patch adds two new flags

  - OF_CRLF which indicates that CRLF translation is used.
  - OF_TextWithCRLF = OF_Text | OF_CRLF indicates that the file is text and uses CRLF translation.

Developers should now use either the OF_Text or OF_TextWithCRLF for text files and OF_None for binary files. If the developer doesn't want carriage returns on Windows, they should use OF_Text, if they do want carriage returns on Windows, they should use OF_TextWithCRLF.

So this is the behaviour per platform with my patch:

z/OS:
OF_None: open in binary mode
OF_Text : open in text mode
OF_TextWithCRLF: open in text mode

Windows:
OF_None: open file with no carriage return
OF_Text: open file with no carriage return
OF_TextWithCRLF: open file with carriage return

The Major change is in llvm/lib/Support/Windows/Path.inc to only set text mode if the OF_CRLF is set.
```
  if (Flags & OF_CRLF)
    CrtOpenFlags |= _O_TEXT;
```

These following files are the ones that still use OF_Text which I left unchanged. I modified all these except raw_ostream.cpp in recent patches so I know these were previously in Binary mode on Windows.
./llvm/lib/Support/raw_ostream.cpp
./llvm/lib/TableGen/Main.cpp
./llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
./llvm/unittests/Support/Path.cpp
./clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
./clang/lib/Frontend/CompilerInstance.cpp
./clang/lib/Driver/Driver.cpp
./clang/lib/Driver/ToolChains/Clang.cpp

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D99426
2021-04-06 07:23:31 -04:00
..
ARCMT.cpp ARCMigrate: Stop abusing PreprocessorOptions for passing back file remappings, NFC 2020-12-02 16:28:33 -08:00
ARCMTActions.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt With MSVC, file needs to be compiled with /BIGOBJ 2020-07-17 09:43:06 -07:00
FileRemapper.cpp ARCMigrate: Stop abusing PreprocessorOptions for passing back file remappings, NFC 2020-12-02 16:28:33 -08:00
Internals.h [ARCMT][NFC] Reduce #include dependencies 2020-02-12 19:10:46 +01:00
ObjCMT.cpp Make iteration over the DeclContext::lookup_result safe. 2021-03-17 08:59:04 +00:00
PlistReporter.cpp [SystemZ][z/OS][Windows] Add new OF_TextWithCRLF flag and use this flag instead of OF_Text 2021-04-06 07:23:31 -04:00
TransAPIUses.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransARCAssign.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransAutoreleasePool.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransBlockObjCVariable.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransEmptyStatementsAndDealloc.cpp Change std::{lower,upper}_bound to llvm::{lower,upper}_bound or llvm::partition_point. NFC 2019-07-03 08:13:17 +00:00
TransGCAttrs.cpp [clang] Use SourceLocation as key in hash maps, NFCI 2020-10-20 16:24:09 +01:00
TransGCCalls.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransProperties.cpp [clang] Use SourceLocation as key in hash maps, NFCI 2020-10-20 16:24:09 +01:00
TransProtectedScope.cpp Avoid SourceManager.h include in RawCommentList.h, add missing incs 2020-02-27 13:49:40 -08:00
TransRetainReleaseDealloc.cpp [AST] Update the comments of the various Expr::Ignore* + Related cleanups 2019-02-03 19:50:56 +00:00
TransUnbridgedCasts.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransUnusedInitDelegate.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TransZeroOutPropsInDealloc.cpp [NFC] Refactoring PropertyAttributeKind for ObjCPropertyDecl and ObjCDeclSpec. 2020-04-23 17:21:25 -04:00
TransformActions.cpp Fix file headers. NFC 2019-03-01 06:49:51 +00:00
Transforms.cpp [ARCMT][NFC] Reduce #include dependencies 2020-02-12 19:10:46 +01:00
Transforms.h [clang] Use SourceLocation as key in hash maps, NFCI 2020-10-20 16:24:09 +01:00