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