diff options
author | Michael Kruse <llvm-project@meinersbur.de> | 2021-07-25 21:39:08 -0500 |
---|---|---|
committer | Michael Kruse <llvm-project@meinersbur.de> | 2021-07-25 23:30:57 -0500 |
commit | ae6b40000238e5faaaa319ffcfc713a15e459be8 (patch) | |
tree | 6bdc20d9feeb105b0670a142940c2165bb65dc31 /llvm/lib/CodeGen/MachineFunction.cpp | |
parent | 1558bb80c01b695ce12642527cbfccf16cf54ece (diff) | |
download | llvm-ae6b40000238e5faaaa319ffcfc713a15e459be8.zip llvm-ae6b40000238e5faaaa319ffcfc713a15e459be8.tar.gz llvm-ae6b40000238e5faaaa319ffcfc713a15e459be8.tar.bz2 |
[Preprocessor] Implement -fminimize-whitespace.
This patch adds the -fminimize-whitespace with the following effects:
* If combined with -E, remove as much non-line-breaking whitespace as
possible.
* If combined with -E -P, removes as much whitespace as possible,
including line-breaks.
The motivation is to reduce the amount of insignificant changes in the
preprocessed output with source files where only whitespace has been
changed (add/remove comments, clang-format, etc.) which is in particular
useful with ccache.
A patch for ccache for using this flag has been proposed to ccache as well:
https://github.com/ccache/ccache/pull/815, which will use
-fnormalize-whitespace when clang-13 has been detected, and additionally
uses -P in "unify_mode". ccache already had a unify_mode in an older
version which was removed because of problems that using the
preprocessor itself does not have (such that the custom tokenizer did
not recognize C++11 raw strings).
This patch slightly reorganizes which part is responsible for adding
newlines that are required for semantics. It is now either
startNewLineIfNeeded() or MoveToLine() but never both; this avoids the
ShouldUpdateCurrentLine workaround and avoids redundant lines being
inserted in some cases. It also fixes a mandatory newline not inserted
after a _Pragma("...") that is expanded into a #pragma.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D104601
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunction.cpp')
0 files changed, 0 insertions, 0 deletions