diff options
author | Alex Lorenz <arphaman@gmail.com> | 2018-02-08 21:20:43 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2018-02-08 21:20:43 +0000 |
commit | 692821afec54bf566ea80a00621648823c838b73 (patch) | |
tree | 6d383a2eb1bbb69b972920e6a4e4a6836b90dd9c | |
parent | 7fd9a58d8cfb0c32710701d360d116c4dbd8da9e (diff) | |
download | bcm5719-llvm-692821afec54bf566ea80a00621648823c838b73.tar.gz bcm5719-llvm-692821afec54bf566ea80a00621648823c838b73.zip |
PR36307: Consume the #pragma options align annotation token after
semantic analysis to prevent incorrect -Wpragma-pack warning for an included
file
rdar://37354951
llvm-svn: 324651
-rw-r--r-- | clang/lib/Parse/ParsePragma.cpp | 6 | ||||
-rw-r--r-- | clang/test/Sema/Inputs/pragma-align-no-header-change-warning.h | 5 | ||||
-rw-r--r-- | clang/test/Sema/pragma-align-no-header-change-warning.c | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp index 3517264d4e9..8cbae5f4633 100644 --- a/clang/lib/Parse/ParsePragma.cpp +++ b/clang/lib/Parse/ParsePragma.cpp @@ -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() { diff --git a/clang/test/Sema/Inputs/pragma-align-no-header-change-warning.h b/clang/test/Sema/Inputs/pragma-align-no-header-change-warning.h new file mode 100644 index 00000000000..6cd4e7d7ed1 --- /dev/null +++ b/clang/test/Sema/Inputs/pragma-align-no-header-change-warning.h @@ -0,0 +1,5 @@ +#pragma options align=mac68k + +struct S { int x; }; + +#pragma options align=reset diff --git a/clang/test/Sema/pragma-align-no-header-change-warning.c b/clang/test/Sema/pragma-align-no-header-change-warning.c new file mode 100644 index 00000000000..dcd61d07056 --- /dev/null +++ b/clang/test/Sema/pragma-align-no-header-change-warning.c @@ -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" + |