[PATCH] D107183: [Preprocessor] Ensure newline after #pragma introduced by -fms-extensions.
Michael Kruse via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Jul 31 22:46:00 PDT 2021
Meinersbur updated this revision to Diff 363334.
Meinersbur added a comment.
- Use %clang_cc1 because %clang adds options according to it triple, i.e. -fms-extensions is added implicitly for Windows targets.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D107183/new/
https://reviews.llvm.org/D107183
Files:
clang/lib/Frontend/PrintPreprocessedOutput.cpp
clang/test/Preprocessor/whitespace-ms-extensions.c
Index: clang/test/Preprocessor/whitespace-ms-extensions.c
===================================================================
--- /dev/null
+++ clang/test/Preprocessor/whitespace-ms-extensions.c
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -E -P %s -o - | FileCheck %s
+// RUN: %clang_cc1 -E -P -fms-extensions %s -o - | FileCheck %s --check-prefix=MSEXT
+
+// -fms-extensions changes __pragma into #pragma
+// Ensure that there is a newline after the #pragma line.
+
+#define MACRO \
+ text \
+ __pragma(PRAGMA) \
+ after
+
+before MACRO text
+
+
+// CHECK: before text __pragma(PRAGMA) after text
+
+// MSEXT: before text
+// MSEXT-NEXT: #pragma PRAGMA
+// MSEXT-NEXT: after text
Index: clang/lib/Frontend/PrintPreprocessedOutput.cpp
===================================================================
--- clang/lib/Frontend/PrintPreprocessedOutput.cpp
+++ clang/lib/Frontend/PrintPreprocessedOutput.cpp
@@ -646,7 +646,9 @@
!Tok.is(tok::annot_module_begin) && !Tok.is(tok::annot_module_end)))
return;
- if (!RequireSameLine && MoveToLine(Tok, /*RequireStartOfLine=*/false)) {
+ // EmittedDirectiveOnThisLine takes priority over RequireSameLine.
+ if ((!RequireSameLine || EmittedDirectiveOnThisLine) &&
+ MoveToLine(Tok, /*RequireStartOfLine=*/EmittedDirectiveOnThisLine)) {
if (MinimizeWhitespace) {
// Avoid interpreting hash as a directive under -fpreprocessed.
if (Tok.is(tok::hash))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D107183.363334.patch
Type: text/x-patch
Size: 1462 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210801/244655cb/attachment.bin>
More information about the cfe-commits
mailing list