r324651 - PR36307: Consume the #pragma options align annotation token after
Alex Lorenz via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 8 13:20:43 PST 2018
Author: arphaman
Date: Thu Feb 8 13:20:43 2018
New Revision: 324651
URL: http://llvm.org/viewvc/llvm-project?rev=324651&view=rev
Log:
PR36307: Consume the #pragma options align annotation token after
semantic analysis to prevent incorrect -Wpragma-pack warning for an included
file
rdar://37354951
Added:
cfe/trunk/test/Sema/Inputs/pragma-align-no-header-change-warning.h
cfe/trunk/test/Sema/pragma-align-no-header-change-warning.c
Modified:
cfe/trunk/lib/Parse/ParsePragma.cpp
Modified: cfe/trunk/lib/Parse/ParsePragma.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParsePragma.cpp?rev=324651&r1=324650&r2=324651&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParsePragma.cpp (original)
+++ cfe/trunk/lib/Parse/ParsePragma.cpp Thu Feb 8 13:20:43 2018
@@ -509,8 +509,10 @@ void Parser::HandlePragmaAlign() {
Sema::PragmaOptionsAlignKind Kind =
static_cast<Sema::PragmaOptionsAlignKind>(
reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
- SourceLocation PragmaLoc = ConsumeAnnotationToken();
- Actions.ActOnPragmaOptionsAlign(Kind, PragmaLoc);
+ Actions.ActOnPragmaOptionsAlign(Kind, Tok.getLocation());
+ // Consume the token after processing the pragma to enable pragma-specific
+ // #include warnings.
+ ConsumeAnnotationToken();
}
void Parser::HandlePragmaDump() {
Added: cfe/trunk/test/Sema/Inputs/pragma-align-no-header-change-warning.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/Inputs/pragma-align-no-header-change-warning.h?rev=324651&view=auto
==============================================================================
--- cfe/trunk/test/Sema/Inputs/pragma-align-no-header-change-warning.h (added)
+++ cfe/trunk/test/Sema/Inputs/pragma-align-no-header-change-warning.h Thu Feb 8 13:20:43 2018
@@ -0,0 +1,5 @@
+#pragma options align=mac68k
+
+struct S { int x; };
+
+#pragma options align=reset
Added: cfe/trunk/test/Sema/pragma-align-no-header-change-warning.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/pragma-align-no-header-change-warning.c?rev=324651&view=auto
==============================================================================
--- cfe/trunk/test/Sema/pragma-align-no-header-change-warning.c (added)
+++ cfe/trunk/test/Sema/pragma-align-no-header-change-warning.c Thu Feb 8 13:20:43 2018
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -Wpragma-pack -I %S/Inputs -verify %s
+// expected-no-diagnostics
+
+#include "pragma-align-no-header-change-warning.h"
+
More information about the cfe-commits
mailing list