summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Parse/ParsePragma.cpp6
-rw-r--r--clang/test/Sema/Inputs/pragma-align-no-header-change-warning.h5
-rw-r--r--clang/test/Sema/pragma-align-no-header-change-warning.c5
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"
+
OpenPOWER on IntegriCloud