[PATCH] D104601: [Preprocessor] Implement -fminimize-whitespace.
Romanov Vlad via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 29 04:30:25 PDT 2021
romanovvlad added a comment.
Hi @Meinersbur,
It seems the patch introduces one more regression. The following test doesn't pass on Windows:
// RUN: %clang -E %s -o %t.ii
// RUN: %clang %t.ii
#include "string.h"
int main() {
return 0;
}
The following macro from vcruntime.h:
#define _CRT_BEGIN_C_HEADER \
__pragma(pack(push, _CRT_PACKING)) \
extern "C" {
Becomes
#pragma pack(push, 8) extern "C" {
in the preprocessed file.
I'm not an expert in this code, but partially returning old behavior helped with that:
diff --git a/clang/lib/Frontend/PrintPreprocessedOutput.cpp b/clang/lib/Frontend/PrintPreprocessedOutput.cpp
index b725956..b49b247 100644
- a/clang/lib/Frontend/PrintPreprocessedOutput.cpp
+++ b/clang/lib/Frontend/PrintPreprocessedOutput.cpp
@@ -772,6 +772,7 @@ static void PrintPreprocessedTokens(Preprocessor &PP, Token &Tok,
bool IsStartOfLine = false;
char Buffer[256];
while (1) {
+ Callbacks->MoveToLine(Tok.getLocation(), /*RequireStartOfLine=*/false);
// Two lines joined with line continuation ('\' as last character on the
// line) must be emitted as one line even though Tok.getLine() returns two
// different values. In this situation Tok.isAtStartOfLine() is false even
Could you please take a look?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D104601/new/
https://reviews.llvm.org/D104601
More information about the cfe-commits
mailing list